From 8f0da669e599d88cb25f1bdef6971c12a6ddefe1 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 12 Oct 2024 10:30:15 +0200 Subject: [PATCH 001/203] Fix storeTrace() (used for option -workflow_output), so it works as intended when using a directory as output path. Previously, it only worked if the path passed ended with a path separator. Also add a call to this function in the example SSH-Client and SSH-Server, so that the option actually works in the examples. --- .../de/rub/nds/sshattacker/client/main/SshClient.java | 1 + .../java/de/rub/nds/sshattacker/core/state/State.java | 8 ++++---- .../de/rub/nds/sshattacker/server/main/SshServer.java | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/SSH-Client/src/main/java/de/rub/nds/sshattacker/client/main/SshClient.java b/SSH-Client/src/main/java/de/rub/nds/sshattacker/client/main/SshClient.java index 3749a55bd..1d63a7506 100755 --- a/SSH-Client/src/main/java/de/rub/nds/sshattacker/client/main/SshClient.java +++ b/SSH-Client/src/main/java/de/rub/nds/sshattacker/client/main/SshClient.java @@ -57,6 +57,7 @@ public static void startSshClient(Config config) { try { workflowExecutor.executeWorkflow(); + state.storeTrace(); } catch (WorkflowExecutionException ex) { LOGGER.warn( "The SSH protocol flow was not executed completely, follow the debug messages for more information."); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/State.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/State.java index e5a4df412..b7a4dd844 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/State.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/State.java @@ -287,14 +287,14 @@ public void storeTrace() { assertWorkflowTraceNotNull("storeTrace"); Random random = new Random(); - if (config.getWorkflowOutput() != null && !config.getWorkflowOutput().isEmpty()) { + workflowOutputName = config.getWorkflowOutput(); + if (workflowOutputName != null && !workflowOutputName.isEmpty()) { try { - workflowOutputName = config.getWorkflowOutput(); File file = new File(workflowOutputName); if (file.isDirectory()) { - workflowOutputName = config.getWorkflowOutput() + "trace-" + random.nextInt(); - file = new File(workflowOutputName); + workflowOutputName = "trace-" + random.nextInt() + ".xml"; + file = new File(file, workflowOutputName); } WorkflowTrace filteredTrace; if (config.isApplyFiltersInPlace()) { diff --git a/SSH-Server/src/main/java/de/rub/nds/sshattacker/server/main/SshServer.java b/SSH-Server/src/main/java/de/rub/nds/sshattacker/server/main/SshServer.java index d357588ad..6b02b1651 100644 --- a/SSH-Server/src/main/java/de/rub/nds/sshattacker/server/main/SshServer.java +++ b/SSH-Server/src/main/java/de/rub/nds/sshattacker/server/main/SshServer.java @@ -56,6 +56,7 @@ public static void startSshServer(Config config) { WorkflowExecutor workflowExecutor = new DefaultWorkflowExecutor(state); try { workflowExecutor.executeWorkflow(); + state.storeTrace(); } catch (WorkflowExecutionException e) { LOGGER.warn( "The SSH protocol flow was not executed completely, follow the debug messages for more information."); From 17ca85472ad876f9ea262b25daef78a10c12366d Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 12 Oct 2024 11:38:26 +0200 Subject: [PATCH 002/203] remove unused catch block from SSH-MITM run() --- .../main/java/de/rub/nds/sshattacker/mitm/main/SshMitm.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/SSH-Mitm/src/main/java/de/rub/nds/sshattacker/mitm/main/SshMitm.java b/SSH-Mitm/src/main/java/de/rub/nds/sshattacker/mitm/main/SshMitm.java index 6a10ac400..869b926d8 100644 --- a/SSH-Mitm/src/main/java/de/rub/nds/sshattacker/mitm/main/SshMitm.java +++ b/SSH-Mitm/src/main/java/de/rub/nds/sshattacker/mitm/main/SshMitm.java @@ -136,10 +136,6 @@ public void run() ce.getLocalizedMessage()); LOGGER.debug(ce.getLocalizedMessage(), ce); throw ce; - } catch (ParameterException pe) { - LOGGER.error("Could not parse provided parameters. {}", pe.getLocalizedMessage()); - LOGGER.info("Try -help"); - throw pe; } catch (Exception E) { LOGGER.error(E); } From d49fffa7882f63ccadaaf083ea2e4063c16e2545 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 12 Oct 2024 12:14:06 +0200 Subject: [PATCH 003/203] Add storeConfig() to class Config, this method serializes and stores the config to the path defined in configOutput (that is set with the option -config_output) Also add a call to this function in the example Client, Server and MITM, so that the option is actually working. The call is on purpose at the end of task and not directly after the creation of the config. So it also captures the changes made to the config during the task. --- .../sshattacker/client/main/SshClient.java | 1 + .../nds/sshattacker/core/config/Config.java | 23 +++++++++++++++++++ .../nds/sshattacker/mitm/main/SshMitm.java | 1 + .../sshattacker/server/main/SshServer.java | 1 + 4 files changed, 26 insertions(+) diff --git a/SSH-Client/src/main/java/de/rub/nds/sshattacker/client/main/SshClient.java b/SSH-Client/src/main/java/de/rub/nds/sshattacker/client/main/SshClient.java index 1d63a7506..f342e16e8 100755 --- a/SSH-Client/src/main/java/de/rub/nds/sshattacker/client/main/SshClient.java +++ b/SSH-Client/src/main/java/de/rub/nds/sshattacker/client/main/SshClient.java @@ -40,6 +40,7 @@ public static void main(String[] args) { try { Config sshConfig = config.createConfig(); startSshClient(sshConfig); + sshConfig.storeConfig(); } catch (Exception E) { LOGGER.error( "Encountered an uncaught Exception aborting. See debug for more info.", E); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 5475a0128..d41e529c3 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -1111,6 +1111,29 @@ public static Config createEmptyConfig() { // endregion + // region storeConfig + /** Serialize and write config to file. */ + public void storeConfig() { + Random random = new Random(); + String configOutputName = configOutput; + if (configOutputName != null && !configOutputName.isEmpty()) { + try { + + File file = new File(configOutputName); + if (file.isDirectory()) { + configOutputName = "config-" + random.nextInt() + ".xml"; + file = new File(file, configOutputName); + } + ConfigIO.write(this, file); + } catch (RuntimeException ex) { + LOGGER.info("Could not serialize Config."); + LOGGER.debug(ex); + } + } + } + + // endregion + public OutboundConnection getDefaultClientConnection() { return defaultClientConnection; } diff --git a/SSH-Mitm/src/main/java/de/rub/nds/sshattacker/mitm/main/SshMitm.java b/SSH-Mitm/src/main/java/de/rub/nds/sshattacker/mitm/main/SshMitm.java index 869b926d8..bd621a144 100644 --- a/SSH-Mitm/src/main/java/de/rub/nds/sshattacker/mitm/main/SshMitm.java +++ b/SSH-Mitm/src/main/java/de/rub/nds/sshattacker/mitm/main/SshMitm.java @@ -123,6 +123,7 @@ public void run() } } state.storeTrace(); + config.storeConfig(); } catch (WorkflowExecutionException wee) { LOGGER.error( "The SSH protocol flow was not executed completely. {} - See debug messages for more details.", diff --git a/SSH-Server/src/main/java/de/rub/nds/sshattacker/server/main/SshServer.java b/SSH-Server/src/main/java/de/rub/nds/sshattacker/server/main/SshServer.java index 6b02b1651..fcbc710ae 100644 --- a/SSH-Server/src/main/java/de/rub/nds/sshattacker/server/main/SshServer.java +++ b/SSH-Server/src/main/java/de/rub/nds/sshattacker/server/main/SshServer.java @@ -40,6 +40,7 @@ public static void main(String[] args) { try { Config sshConfig = config.createConfig(); startSshServer(sshConfig); + sshConfig.storeConfig(); } catch (Exception e) { LOGGER.error( "Encountered an uncaught exception, aborting. See debug for more info.", e); From 15432539cf63d07c9bc959d0e9367d435c10b0d8 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 23 Oct 2024 09:56:31 +0200 Subject: [PATCH 004/203] Fix deserialization of hostKeys and userKeys, when loading config from file. List.of(..) returns an immutable List. Wrapping it in an ArrayList, allows JAXB to modify the list (overwriting it with the loaded xml content) --- .../nds/sshattacker/core/config/Config.java | 523 +++++++++--------- 1 file changed, 266 insertions(+), 257 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index d41e529c3..1f340aba7 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -713,152 +713,157 @@ public Config() { // default host key // TODO: Load host keys from file to reduce length of Config class hostKeys = - List.of( - new SshPublicKey<>( - PublicKeyFormat.SSH_RSA, - new CustomRsaPublicKey( - new BigInteger("010001", 16), - new BigInteger( - "00D9F6BFFAB8BC79C6E9AB6C3D4593F561CC93B41A70B9A750045ED0AC09" - + "6EF4A6A8C7B2AAA4F44459481319AE956934BF9D5C5AD7C004ADE0B81E43" - + "75FD1DF8797DF6F3CA130ED8A2A9B6E94467A05D97A0F8380A4CBB75FC5E" - + "5C303433B61750063D3801D5C90658ACAEE140B09F95A0FD8886EFAE16EA" - + "B779DF82E6A12C1BE011FECB417C788B72C42948AB54CCE1E8119CFB78E1" - + "3B06090CEBF6D3806854FE09F03B20BA92505058EC64C44F0B4DA0BAE71D" - + "52EDA11AB67F4B54D9FCEFE1FACEB520D595FFA33502FB91423EBD972F26" - + "150715CB0E648F715E6E5E8FC9D8FA55E9DE0652CF85D7928B235486F54A" - + "3F3EE64B04888B898864B08200A9E22909", - 16)), - new CustomRsaPrivateKey( - new BigInteger( - "7AAB5898AEE7C451A2A90B9DE04EC947656FAB69460FF68E1E278EA1841D" - + "A22B39CA4A4FA7CEA1B8EDCB7224C38A1659D1226D2E07AF9A7C62A305AC" - + "9DEC042FBC290443B23E24C64765DE1AD58777A522BF102B1BCC5536D794" - + "62BCBE6DB8E91CD9CF6F98F62E5031BFAA9E51C93ED900579A39C26CBB64" - + "CF7E6F998513E20B4B2A4DD36D4F6F074A0FDB04232FA6EDAB89A1B32BA5" - + "2214696BDA66C4518A73F92807DD088AB11263519885A0CD6A42B6D9EAE9" - + "EBD13241EDC4EB7205AE838A5EF7AE280D36410057B38ED05CEBA75F92AC" - + "DF40226164BB3A0C4312B65A8C2FBA85CDB7CC5F77F53C45F64409AFC460" - + "210C8EE4DAB818F009172387ED00E141", - 16), - new BigInteger( - "00D9F6BFFAB8BC79C6E9AB6C3D4593F561CC93B41A70B9A750045ED0AC09" - + "6EF4A6A8C7B2AAA4F44459481319AE956934BF9D5C5AD7C004ADE0B81E43" - + "75FD1DF8797DF6F3CA130ED8A2A9B6E94467A05D97A0F8380A4CBB75FC5E" - + "5C303433B61750063D3801D5C90658ACAEE140B09F95A0FD8886EFAE16EA" - + "B779DF82E6A12C1BE011FECB417C788B72C42948AB54CCE1E8119CFB78E1" - + "3B06090CEBF6D3806854FE09F03B20BA92505058EC64C44F0B4DA0BAE71D" - + "52EDA11AB67F4B54D9FCEFE1FACEB520D595FFA33502FB91423EBD972F26" - + "150715CB0E648F715E6E5E8FC9D8FA55E9DE0652CF85D7928B235486F54A" - + "3F3EE64B04888B898864B08200A9E22909", - 16))), - // SSH enforces the use of 1024 / 160 bit DSA keys as per RFC 4253 Sec. 6.6 - new SshPublicKey<>( - PublicKeyFormat.SSH_DSS, - new CustomDsaPublicKey( - new BigInteger( - "008BD081A858028A729F0C04E0788C06BC5B2EA8B880A203986C90E92D20" - + "322670248A305A3217737BF0256EFFD53CC512993F137A4F64162AF4F3E6" - + "AA64D348343C86D1B3D18CAE017A48FD2FFA56A9DFC70D18BE8958938768" - + "995AFD952719DE2066B0A7E3D90948D4E0437BD1A5C94F1A1FBBADDCEA3A" - + "338E96A4CACCF4A855", - 16), - new BigInteger( - "00B971EBD0321EEC38C15E01FD9C773CCA23E66879", 16), - new BigInteger( - "259DC09E04AD1818271F3E676B17A98B6F7B1D08B43B51FAEF06D2C9F921" - + "0667ED3C14ABEBEE372D1F325C11C0304AE8B9BAC8914619CA05165BAE2B" - + "E49BAD5DD8ECB8129CDDD2941D6DDF53C7D53A5FB9D88B58F362034CA6A1" - + "3929D28942D0054FFA4166D3DDDE0B2FE2E4A0342A827DEF6B6FECDB0614" - + "8ED403D3FC9C4C79", - 16), - new BigInteger( - "1433495B5BB346BEB6A783DA2ADF1C5CFE946146E4A461B2A658CEC29DA2" - + "1496A6D69119026059D0C2557D535E664A0F10B4DB006601D8848EA6B92F" - + "C6313B03103C9C3C6F0ED55CB46EEC8B0FE0007D2411F46676A8761DADAA" - + "171351322D29487E9AE8738C354DD04FFEACA50503AFEC8F0610A679FF81" - + "6EFD9B162F152BDA", - 16)), - new CustomDsaPrivateKey( - new BigInteger( - "008BD081A858028A729F0C04E0788C06BC5B2EA8B880A203986C90E92D20" - + "322670248A305A3217737BF0256EFFD53CC512993F137A4F64162AF4F3E6" - + "AA64D348343C86D1B3D18CAE017A48FD2FFA56A9DFC70D18BE8958938768" - + "995AFD952719DE2066B0A7E3D90948D4E0437BD1A5C94F1A1FBBADDCEA3A" - + "338E96A4CACCF4A855", - 16), - new BigInteger( - "00B971EBD0321EEC38C15E01FD9C773CCA23E66879", 16), - new BigInteger( - "259DC09E04AD1818271F3E676B17A98B6F7B1D08B43B51FAEF06D2C9F921" - + "0667ED3C14ABEBEE372D1F325C11C0304AE8B9BAC8914619CA05165BAE2B" - + "E49BAD5DD8ECB8129CDDD2941D6DDF53C7D53A5FB9D88B58F362034CA6A1" - + "3929D28942D0054FFA4166D3DDDE0B2FE2E4A0342A827DEF6B6FECDB0614" - + "8ED403D3FC9C4C79", - 16), - new BigInteger( - "7C6B4E2B32192EFC09B7CB12D85CBB4141EF7348", 16))), - new SshPublicKey<>( - PublicKeyFormat.ECDSA_SHA2_NISTP256, - new CustomEcPublicKey( - PointFormatter.formatFromByteArray( - NamedEcGroup.SECP256R1, + new ArrayList<>( + List.of( + new SshPublicKey<>( + PublicKeyFormat.SSH_RSA, + new CustomRsaPublicKey( + new BigInteger("010001", 16), + new BigInteger( + "00D9F6BFFAB8BC79C6E9AB6C3D4593F561CC93B41A70B9A750045ED0AC09" + + "6EF4A6A8C7B2AAA4F44459481319AE956934BF9D5C5AD7C004ADE0B81E43" + + "75FD1DF8797DF6F3CA130ED8A2A9B6E94467A05D97A0F8380A4CBB75FC5E" + + "5C303433B61750063D3801D5C90658ACAEE140B09F95A0FD8886EFAE16EA" + + "B779DF82E6A12C1BE011FECB417C788B72C42948AB54CCE1E8119CFB78E1" + + "3B06090CEBF6D3806854FE09F03B20BA92505058EC64C44F0B4DA0BAE71D" + + "52EDA11AB67F4B54D9FCEFE1FACEB520D595FFA33502FB91423EBD972F26" + + "150715CB0E648F715E6E5E8FC9D8FA55E9DE0652CF85D7928B235486F54A" + + "3F3EE64B04888B898864B08200A9E22909", + 16)), + new CustomRsaPrivateKey( + new BigInteger( + "7AAB5898AEE7C451A2A90B9DE04EC947656FAB69460FF68E1E278EA1841D" + + "A22B39CA4A4FA7CEA1B8EDCB7224C38A1659D1226D2E07AF9A7C62A305AC" + + "9DEC042FBC290443B23E24C64765DE1AD58777A522BF102B1BCC5536D794" + + "62BCBE6DB8E91CD9CF6F98F62E5031BFAA9E51C93ED900579A39C26CBB64" + + "CF7E6F998513E20B4B2A4DD36D4F6F074A0FDB04232FA6EDAB89A1B32BA5" + + "2214696BDA66C4518A73F92807DD088AB11263519885A0CD6A42B6D9EAE9" + + "EBD13241EDC4EB7205AE838A5EF7AE280D36410057B38ED05CEBA75F92AC" + + "DF40226164BB3A0C4312B65A8C2FBA85CDB7CC5F77F53C45F64409AFC460" + + "210C8EE4DAB818F009172387ED00E141", + 16), + new BigInteger( + "00D9F6BFFAB8BC79C6E9AB6C3D4593F561CC93B41A70B9A750045ED0AC09" + + "6EF4A6A8C7B2AAA4F44459481319AE956934BF9D5C5AD7C004ADE0B81E43" + + "75FD1DF8797DF6F3CA130ED8A2A9B6E94467A05D97A0F8380A4CBB75FC5E" + + "5C303433B61750063D3801D5C90658ACAEE140B09F95A0FD8886EFAE16EA" + + "B779DF82E6A12C1BE011FECB417C788B72C42948AB54CCE1E8119CFB78E1" + + "3B06090CEBF6D3806854FE09F03B20BA92505058EC64C44F0B4DA0BAE71D" + + "52EDA11AB67F4B54D9FCEFE1FACEB520D595FFA33502FB91423EBD972F26" + + "150715CB0E648F715E6E5E8FC9D8FA55E9DE0652CF85D7928B235486F54A" + + "3F3EE64B04888B898864B08200A9E22909", + 16))), + // SSH enforces the use of 1024 / 160 bit DSA keys as per RFC 4253 + // Sec. 6.6 + new SshPublicKey<>( + PublicKeyFormat.SSH_DSS, + new CustomDsaPublicKey( + new BigInteger( + "008BD081A858028A729F0C04E0788C06BC5B2EA8B880A203986C90E92D20" + + "322670248A305A3217737BF0256EFFD53CC512993F137A4F64162AF4F3E6" + + "AA64D348343C86D1B3D18CAE017A48FD2FFA56A9DFC70D18BE8958938768" + + "995AFD952719DE2066B0A7E3D90948D4E0437BD1A5C94F1A1FBBADDCEA3A" + + "338E96A4CACCF4A855", + 16), + new BigInteger( + "00B971EBD0321EEC38C15E01FD9C773CCA23E66879", + 16), + new BigInteger( + "259DC09E04AD1818271F3E676B17A98B6F7B1D08B43B51FAEF06D2C9F921" + + "0667ED3C14ABEBEE372D1F325C11C0304AE8B9BAC8914619CA05165BAE2B" + + "E49BAD5DD8ECB8129CDDD2941D6DDF53C7D53A5FB9D88B58F362034CA6A1" + + "3929D28942D0054FFA4166D3DDDE0B2FE2E4A0342A827DEF6B6FECDB0614" + + "8ED403D3FC9C4C79", + 16), + new BigInteger( + "1433495B5BB346BEB6A783DA2ADF1C5CFE946146E4A461B2A658CEC29DA2" + + "1496A6D69119026059D0C2557D535E664A0F10B4DB006601D8848EA6B92F" + + "C6313B03103C9C3C6F0ED55CB46EEC8B0FE0007D2411F46676A8761DADAA" + + "171351322D29487E9AE8738C354DD04FFEACA50503AFEC8F0610A679FF81" + + "6EFD9B162F152BDA", + 16)), + new CustomDsaPrivateKey( + new BigInteger( + "008BD081A858028A729F0C04E0788C06BC5B2EA8B880A203986C90E92D20" + + "322670248A305A3217737BF0256EFFD53CC512993F137A4F64162AF4F3E6" + + "AA64D348343C86D1B3D18CAE017A48FD2FFA56A9DFC70D18BE8958938768" + + "995AFD952719DE2066B0A7E3D90948D4E0437BD1A5C94F1A1FBBADDCEA3A" + + "338E96A4CACCF4A855", + 16), + new BigInteger( + "00B971EBD0321EEC38C15E01FD9C773CCA23E66879", + 16), + new BigInteger( + "259DC09E04AD1818271F3E676B17A98B6F7B1D08B43B51FAEF06D2C9F921" + + "0667ED3C14ABEBEE372D1F325C11C0304AE8B9BAC8914619CA05165BAE2B" + + "E49BAD5DD8ECB8129CDDD2941D6DDF53C7D53A5FB9D88B58F362034CA6A1" + + "3929D28942D0054FFA4166D3DDDE0B2FE2E4A0342A827DEF6B6FECDB0614" + + "8ED403D3FC9C4C79", + 16), + new BigInteger( + "7C6B4E2B32192EFC09B7CB12D85CBB4141EF7348", + 16))), + new SshPublicKey<>( + PublicKeyFormat.ECDSA_SHA2_NISTP256, + new CustomEcPublicKey( + PointFormatter.formatFromByteArray( + NamedEcGroup.SECP256R1, + ArrayConverter.hexStringToByteArray( + "0492A8D4E6EECBED47D0AACD15D714FB619D6F3941028874B99117CF8EAE" + + "BBCDF7CC981DE460635590F3AB5AE6F7DF0A12E6E0DE951DEAE3D2C48EC3" + + "4C237C61E7")), + NamedEcGroup.SECP256R1), + new CustomEcPrivateKey( + new BigInteger( + "8DD62AA24F982B18446E3ECC7E50F8EB976610750242BA637C949F4C8FD6A1CF", + 16), + NamedEcGroup.SECP256R1)), + new SshPublicKey<>( + PublicKeyFormat.ECDSA_SHA2_NISTP384, + new CustomEcPublicKey( + PointFormatter.formatFromByteArray( + NamedEcGroup.SECP384R1, + ArrayConverter.hexStringToByteArray( + "04650469DB4E282660E0DCB23197D10EE935BA038B8B62890EB098420211" + + "C38D5E4E737FF2A0DC53E1B8A55C65B2BD85673EFEEEE9CE4727374D2E2D" + + "E8EEA6B8AB146245C8627E2346C76944AEB1C0BDCE1B267773F6ED08473A" + + "DE8B6F5687A2B6")), + NamedEcGroup.SECP384R1), + new CustomEcPrivateKey( + new BigInteger( + "EA39EE919D73A1FE8F8FBFC8807E7ED36BE3D89FBC1F35619B04E825E8E8" + + "07E994348EE8095467499AE15F73FE0FD298", + 16), + NamedEcGroup.SECP384R1)), + new SshPublicKey<>( + PublicKeyFormat.ECDSA_SHA2_NISTP521, + new CustomEcPublicKey( + PointFormatter.formatFromByteArray( + NamedEcGroup.SECP521R1, + ArrayConverter.hexStringToByteArray( + "0400A97EC5412F12C6CCAEDF2F288041146015FBCE1B939F017039D63280" + + "9B170C1E51B5AFE19127F97146C0556A70E44D179B76DA98C39ACF418F98" + + "95F7E8483665A800AF936C1864E14340ABE09860281D9A015E0C78A540F1" + + "6CB36DD0275C9AF61A2A41F6AE6447ECCFCA1788878B7A249B195424BED8" + + "CD881C0C3C5CEB051D64366DE5")), + NamedEcGroup.SECP521R1), + new CustomEcPrivateKey( + new BigInteger( + "015B220911DD64BD8793BC5429093B7AE8E2B4F462751D553CE48E09D72E" + + "9981F4EF80334B981D6558C6498BFB4B6E1973BF60BF568C624934F1EF2B" + + "8561C67B2AD2", + 16), + NamedEcGroup.SECP521R1)), + new SshPublicKey<>( + PublicKeyFormat.SSH_ED25519, + new XCurveEcPublicKey( ArrayConverter.hexStringToByteArray( - "0492A8D4E6EECBED47D0AACD15D714FB619D6F3941028874B99117CF8EAE" - + "BBCDF7CC981DE460635590F3AB5AE6F7DF0A12E6E0DE951DEAE3D2C48EC3" - + "4C237C61E7")), - NamedEcGroup.SECP256R1), - new CustomEcPrivateKey( - new BigInteger( - "8DD62AA24F982B18446E3ECC7E50F8EB976610750242BA637C949F4C8FD6A1CF", - 16), - NamedEcGroup.SECP256R1)), - new SshPublicKey<>( - PublicKeyFormat.ECDSA_SHA2_NISTP384, - new CustomEcPublicKey( - PointFormatter.formatFromByteArray( - NamedEcGroup.SECP384R1, + "13E3591CC0D1BAE515EC44FD3FA01784E2103165ECCFE939D91A619F46DBED70"), + NamedEcGroup.CURVE25519), + new XCurveEcPrivateKey( ArrayConverter.hexStringToByteArray( - "04650469DB4E282660E0DCB23197D10EE935BA038B8B62890EB098420211" - + "C38D5E4E737FF2A0DC53E1B8A55C65B2BD85673EFEEEE9CE4727374D2E2D" - + "E8EEA6B8AB146245C8627E2346C76944AEB1C0BDCE1B267773F6ED08473A" - + "DE8B6F5687A2B6")), - NamedEcGroup.SECP384R1), - new CustomEcPrivateKey( - new BigInteger( - "EA39EE919D73A1FE8F8FBFC8807E7ED36BE3D89FBC1F35619B04E825E8E8" - + "07E994348EE8095467499AE15F73FE0FD298", - 16), - NamedEcGroup.SECP384R1)), - new SshPublicKey<>( - PublicKeyFormat.ECDSA_SHA2_NISTP521, - new CustomEcPublicKey( - PointFormatter.formatFromByteArray( - NamedEcGroup.SECP521R1, - ArrayConverter.hexStringToByteArray( - "0400A97EC5412F12C6CCAEDF2F288041146015FBCE1B939F017039D63280" - + "9B170C1E51B5AFE19127F97146C0556A70E44D179B76DA98C39ACF418F98" - + "95F7E8483665A800AF936C1864E14340ABE09860281D9A015E0C78A540F1" - + "6CB36DD0275C9AF61A2A41F6AE6447ECCFCA1788878B7A249B195424BED8" - + "CD881C0C3C5CEB051D64366DE5")), - NamedEcGroup.SECP521R1), - new CustomEcPrivateKey( - new BigInteger( - "015B220911DD64BD8793BC5429093B7AE8E2B4F462751D553CE48E09D72E" - + "9981F4EF80334B981D6558C6498BFB4B6E1973BF60BF568C624934F1EF2B" - + "8561C67B2AD2", - 16), - NamedEcGroup.SECP521R1)), - new SshPublicKey<>( - PublicKeyFormat.SSH_ED25519, - new XCurveEcPublicKey( - ArrayConverter.hexStringToByteArray( - "13E3591CC0D1BAE515EC44FD3FA01784E2103165ECCFE939D91A619F46DBED70"), - NamedEcGroup.CURVE25519), - new XCurveEcPrivateKey( - ArrayConverter.hexStringToByteArray( - "092E829DE536BE8F7D74E7A3C6CD90EA6EADDDEEB2E50D8617EBDD132B53669B"), - NamedEcGroup.CURVE25519))); + "092E829DE536BE8F7D74E7A3C6CD90EA6EADDDEEB2E50D8617EBDD132B53669B"), + NamedEcGroup.CURVE25519)))); fallbackRsaTransientPublicKey = new SshPublicKey<>( @@ -920,120 +925,124 @@ public Config() { // key.pem > // key.pub" userKeys = - List.of( - new SshPublicKey<>( - PublicKeyFormat.SSH_RSA, - new CustomRsaPublicKey( - new BigInteger("10001", 16), - new BigInteger( - "009df0c70638448afef5799bc7c161d5bc286baeb8a4dc70ffefb2f4813a" - + "810747d3cbfcd1c9a9ce76272731ed1e2c0ba64feb9af634ae8e4df699b2" - + "d3b52af4df616ca8003502e38b81bfa6801148c7bab1870a694b44d82ff0" - + "98633edb09bfbab52b3e7498ce1826813da010000f7c458877f859f46442" - + "0853220d632d9d1fc113e885e631f15dfcf1fddba90c0c5aa520bc6a55a5" - + "6a1b29ead5492f83fe7e6b9494afbe16615daa446c2909c218dcd750ae4a" - + "9a9c69c74d748e904ba8e2ce2812d1ce3c4ed12fd82cca7fe81f88823907" - + "6702656ef1d3f93e472aae509a0ae5e241c4fd9b661f4cc6ffb02d416a72" - + "5469e51e27204b3db3f28961e244a9e6c3", - 16)), - new CustomRsaPrivateKey( - new BigInteger( - "008701ebcef848371c8c0f40c77719bf4f50aa03b7984d4b56abba286152" - + "f63a97fe86ef7d10ca534f1256e1c99432085f490fd7edbfc8baa2103aff" - + "ef127d3ec6b80bde6c16e47a47a54882f614504752e22fd20981aabeb5f4" - + "0eff3f1a9371ce12d17d58c3c9e04101d700bccca070152bfb8952b3a304" - + "0303b5270671564f6e2753e05e413931e22a6b115fd3264fd6e4c25cb901" - + "ccdd006d9b5785379f7cbcc1bbd149afda6b51fe13430fb5ca19da594afc" - + "cd2bd99473001e995033116d48d329d42255ef0eec11a6d2310eb97912d7" - + "19b7b75d74696613e21305da6715846bf04c4e76046fbf86a793d96c0fe7" - + "02638696eed4b7488c18233db879e70149", - 16), - new BigInteger( - "009df0c70638448afef5799bc7c161d5bc286baeb8a4dc70ffefb2f4813a" - + "810747d3cbfcd1c9a9ce76272731ed1e2c0ba64feb9af634ae8e4df699b2" - + "d3b52af4df616ca8003502e38b81bfa6801148c7bab1870a694b44d82ff0" - + "98633edb09bfbab52b3e7498ce1826813da010000f7c458877f859f46442" - + "0853220d632d9d1fc113e885e631f15dfcf1fddba90c0c5aa520bc6a55a5" - + "6a1b29ead5492f83fe7e6b9494afbe16615daa446c2909c218dcd750ae4a" - + "9a9c69c74d748e904ba8e2ce2812d1ce3c4ed12fd82cca7fe81f88823907" - + "6702656ef1d3f93e472aae509a0ae5e241c4fd9b661f4cc6ffb02d416a72" - + "5469e51e27204b3db3f28961e244a9e6c3", - 16))), - new SshPublicKey<>( - PublicKeyFormat.ECDSA_SHA2_NISTP521, - new CustomEcPublicKey( - PointFormatter.formatFromByteArray( - NamedEcGroup.SECP521R1, + new ArrayList<>( + List.of( + new SshPublicKey<>( + PublicKeyFormat.SSH_RSA, + new CustomRsaPublicKey( + new BigInteger("10001", 16), + new BigInteger( + "009df0c70638448afef5799bc7c161d5bc286baeb8a4dc70ffefb2f4813a" + + "810747d3cbfcd1c9a9ce76272731ed1e2c0ba64feb9af634ae8e4df699b2" + + "d3b52af4df616ca8003502e38b81bfa6801148c7bab1870a694b44d82ff0" + + "98633edb09bfbab52b3e7498ce1826813da010000f7c458877f859f46442" + + "0853220d632d9d1fc113e885e631f15dfcf1fddba90c0c5aa520bc6a55a5" + + "6a1b29ead5492f83fe7e6b9494afbe16615daa446c2909c218dcd750ae4a" + + "9a9c69c74d748e904ba8e2ce2812d1ce3c4ed12fd82cca7fe81f88823907" + + "6702656ef1d3f93e472aae509a0ae5e241c4fd9b661f4cc6ffb02d416a72" + + "5469e51e27204b3db3f28961e244a9e6c3", + 16)), + new CustomRsaPrivateKey( + new BigInteger( + "008701ebcef848371c8c0f40c77719bf4f50aa03b7984d4b56abba286152" + + "f63a97fe86ef7d10ca534f1256e1c99432085f490fd7edbfc8baa2103aff" + + "ef127d3ec6b80bde6c16e47a47a54882f614504752e22fd20981aabeb5f4" + + "0eff3f1a9371ce12d17d58c3c9e04101d700bccca070152bfb8952b3a304" + + "0303b5270671564f6e2753e05e413931e22a6b115fd3264fd6e4c25cb901" + + "ccdd006d9b5785379f7cbcc1bbd149afda6b51fe13430fb5ca19da594afc" + + "cd2bd99473001e995033116d48d329d42255ef0eec11a6d2310eb97912d7" + + "19b7b75d74696613e21305da6715846bf04c4e76046fbf86a793d96c0fe7" + + "02638696eed4b7488c18233db879e70149", + 16), + new BigInteger( + "009df0c70638448afef5799bc7c161d5bc286baeb8a4dc70ffefb2f4813a" + + "810747d3cbfcd1c9a9ce76272731ed1e2c0ba64feb9af634ae8e4df699b2" + + "d3b52af4df616ca8003502e38b81bfa6801148c7bab1870a694b44d82ff0" + + "98633edb09bfbab52b3e7498ce1826813da010000f7c458877f859f46442" + + "0853220d632d9d1fc113e885e631f15dfcf1fddba90c0c5aa520bc6a55a5" + + "6a1b29ead5492f83fe7e6b9494afbe16615daa446c2909c218dcd750ae4a" + + "9a9c69c74d748e904ba8e2ce2812d1ce3c4ed12fd82cca7fe81f88823907" + + "6702656ef1d3f93e472aae509a0ae5e241c4fd9b661f4cc6ffb02d416a72" + + "5469e51e27204b3db3f28961e244a9e6c3", + 16))), + new SshPublicKey<>( + PublicKeyFormat.ECDSA_SHA2_NISTP521, + new CustomEcPublicKey( + PointFormatter.formatFromByteArray( + NamedEcGroup.SECP521R1, + ArrayConverter.hexStringToByteArray( + "0400c94546ca3a758e2be7700c6710dbc193db62b511b51c" + + "2e5ae09e92723527078bfc97d7cfe0b30adec350905d4c3b" + + "2f798b88d57ca1a4cc8600ffa9568b50b8553400ce85433f" + + "fb71641153d690d1c253c8ca395daa9100a547f42a0ca8ae" + + "e4711bcc750294fd6719bb6348d0b92c51d00b7a12ba0646" + + "433d2f56677b4540ddf89a5da5")), + NamedEcGroup.SECP521R1), + new CustomEcPrivateKey( + new BigInteger( + "000bf5ef2fdec03bfa6cf0e2c5ee58c8bcfe0d1b41920792151f2c" + + "51b0aa621743b613056155bd51bde866f92b3e9bcfed230381" + + "b3dab5100a03c5965538c6f1c30a9", + 16), + NamedEcGroup.SECP521R1)), + new SshPublicKey<>( + PublicKeyFormat.SSH_ED25519, + new XCurveEcPublicKey( + ArrayConverter.hexStringToByteArray( + "99AF546D30DD1770CC27A1A1CE7AD1CEC729823527529352141E89F7F3420F2C"), + NamedEcGroup.CURVE25519), + new XCurveEcPrivateKey( ArrayConverter.hexStringToByteArray( - "0400c94546ca3a758e2be7700c6710dbc193db62b511b51c" - + "2e5ae09e92723527078bfc97d7cfe0b30adec350905d4c3b" - + "2f798b88d57ca1a4cc8600ffa9568b50b8553400ce85433f" - + "fb71641153d690d1c253c8ca395daa9100a547f42a0ca8ae" - + "e4711bcc750294fd6719bb6348d0b92c51d00b7a12ba0646" - + "433d2f56677b4540ddf89a5da5")), - NamedEcGroup.SECP521R1), - new CustomEcPrivateKey( - new BigInteger( - "000bf5ef2fdec03bfa6cf0e2c5ee58c8bcfe0d1b41920792151f2c" - + "51b0aa621743b613056155bd51bde866f92b3e9bcfed230381" - + "b3dab5100a03c5965538c6f1c30a9", - 16), - NamedEcGroup.SECP521R1)), - new SshPublicKey<>( - PublicKeyFormat.SSH_ED25519, - new XCurveEcPublicKey( - ArrayConverter.hexStringToByteArray( - "99AF546D30DD1770CC27A1A1CE7AD1CEC729823527529352141E89F7F3420F2C"), - NamedEcGroup.CURVE25519), - new XCurveEcPrivateKey( - ArrayConverter.hexStringToByteArray( - "6D3703876ED02075102F767E2EA969E311B7776F71630B7C1DF3E55C98D6641B"), - NamedEcGroup.CURVE25519)), - new SshPublicKey<>( - PublicKeyFormat.SSH_DSS, - new CustomDsaPublicKey( - new BigInteger( - "00D34ED25D35236E5A3EFCAE34C30F06F444D1FBE85DC29D71DAD5" - + "A8EFD5ED45609F4E29484DF5E21DB9926664296EF910AA9822FECDD" - + "97514479DC28C69AB424A12D792E3B38D56C2DE668DA788286E5136" - + "8AC1B837C7C928B5B5A6A277ECEA9436FAF7CBF279CD103695B7AEC" - + "96B4EF975A218483BB715FE0CFEE7BE9E07DFA5", - 16), - new BigInteger( - "00D8F3DAC6BFAA2CEAFCBF0E249DD0750913A5BFE9", 16), - new BigInteger( - "42B4D9C983941ADFDA0E6D9C4583F6FA96417017B389D750CFD717C" - + "591FD12931167D12C96E3345E79B6225360485FF2E839CA9C38" - + "D443A4AE2F13D6593FF69605866AC4AD1CD677441FD0D6ED15F" - + "F636D8231130CC07B8AA6F1DF54A6517983695E3E5FFA3BFF9A" - + "30B44423D8504CF0748AF99CA79B6A8599759E7C6DBBB5DC", - 16), - new BigInteger( - "68801435B2A260F778520BD23C9EBF38AF523CB81D64C56F8741890B" - + "1206CA2E175EE94BFF2C84601F357FB5B6071AB2240D7258D1EDE3D8B" - + "CC2F6E78DEA5DCBB5BC315B858A1DD833607E0433CDE2FD24240DD2D1" - + "C45F9508FBA25DC8E6F40D9BC58B6D3246865027E9B5E48F410E084B5" - + "2A1AE99D2966543243764436757F6", - 16)), - new CustomDsaPrivateKey( - new BigInteger( - "00D34ED25D35236E5A3EFCAE34C30F06F444D1FBE85DC29D71DAD5A8EFD5" - + "ED45609F4E29484DF5E21DB9926664296EF910AA9822FECDD97514479D" - + "C28C69AB424A12D792E3B38D56C2DE668DA788286E51368AC1B837C7C9" - + "28B5B5A6A277ECEA9436FAF7CBF279CD103695B7AEC96B4EF975A21848" - + "3BB715FE0CFEE7BE9E07DFA5", - 16), - new BigInteger( - "00D8F3DAC6BFAA2CEAFCBF0E249DD0750913A5BFE9", 16), - new BigInteger( - "42B4D9C983941ADFDA0E6D9C4583F6FA96417017B389D750CFD717C591FD" - + "12931167D12C96E3345E79B6225360485FF2E839CA9C38D443A4AE2F13D6" - + "593FF69605866AC4AD1CD677441FD0D6ED15FF636D8231130CC07B8AA6F1" - + "DF54A6517983695E3E5FFA3BFF9A30B44423D8504CF0748AF99CA79B6A85" - + "99759E7C6DBBB5DC", - 16), - new BigInteger( - "6616556442F6B8F1EA8B5FA3A93BB638D55737D8", 16)))); + "6D3703876ED02075102F767E2EA969E311B7776F71630B7C1DF3E55C98D6641B"), + NamedEcGroup.CURVE25519)), + new SshPublicKey<>( + PublicKeyFormat.SSH_DSS, + new CustomDsaPublicKey( + new BigInteger( + "00D34ED25D35236E5A3EFCAE34C30F06F444D1FBE85DC29D71DAD5" + + "A8EFD5ED45609F4E29484DF5E21DB9926664296EF910AA9822FECDD" + + "97514479DC28C69AB424A12D792E3B38D56C2DE668DA788286E5136" + + "8AC1B837C7C928B5B5A6A277ECEA9436FAF7CBF279CD103695B7AEC" + + "96B4EF975A218483BB715FE0CFEE7BE9E07DFA5", + 16), + new BigInteger( + "00D8F3DAC6BFAA2CEAFCBF0E249DD0750913A5BFE9", + 16), + new BigInteger( + "42B4D9C983941ADFDA0E6D9C4583F6FA96417017B389D750CFD717C" + + "591FD12931167D12C96E3345E79B6225360485FF2E839CA9C38" + + "D443A4AE2F13D6593FF69605866AC4AD1CD677441FD0D6ED15F" + + "F636D8231130CC07B8AA6F1DF54A6517983695E3E5FFA3BFF9A" + + "30B44423D8504CF0748AF99CA79B6A8599759E7C6DBBB5DC", + 16), + new BigInteger( + "68801435B2A260F778520BD23C9EBF38AF523CB81D64C56F8741890B" + + "1206CA2E175EE94BFF2C84601F357FB5B6071AB2240D7258D1EDE3D8B" + + "CC2F6E78DEA5DCBB5BC315B858A1DD833607E0433CDE2FD24240DD2D1" + + "C45F9508FBA25DC8E6F40D9BC58B6D3246865027E9B5E48F410E084B5" + + "2A1AE99D2966543243764436757F6", + 16)), + new CustomDsaPrivateKey( + new BigInteger( + "00D34ED25D35236E5A3EFCAE34C30F06F444D1FBE85DC29D71DAD5A8EFD5" + + "ED45609F4E29484DF5E21DB9926664296EF910AA9822FECDD97514479D" + + "C28C69AB424A12D792E3B38D56C2DE668DA788286E51368AC1B837C7C9" + + "28B5B5A6A277ECEA9436FAF7CBF279CD103695B7AEC96B4EF975A21848" + + "3BB715FE0CFEE7BE9E07DFA5", + 16), + new BigInteger( + "00D8F3DAC6BFAA2CEAFCBF0E249DD0750913A5BFE9", + 16), + new BigInteger( + "42B4D9C983941ADFDA0E6D9C4583F6FA96417017B389D750CFD717C591FD" + + "12931167D12C96E3345E79B6225360485FF2E839CA9C38D443A4AE2F13D6" + + "593FF69605866AC4AD1CD677441FD0D6ED15FF636D8231130CC07B8AA6F1" + + "DF54A6517983695E3E5FFA3BFF9A30B44423D8504CF0748AF99CA79B6A85" + + "99759E7C6DBBB5DC", + 16), + new BigInteger( + "6616556442F6B8F1EA8B5FA3A93BB638D55737D8", + 16))))); // endregion // region Channel initialization From 2b81a8c6281486852e0daa6cec7bc16ef5412dcf Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 23 Oct 2024 10:01:32 +0200 Subject: [PATCH 005/203] Fix deserialization of AbstractExtension. JAXB needs to know where to find the subclasses of AbstractExtension (classes that inherits from it) --- .../transport/message/extension/AbstractExtension.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/AbstractExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/AbstractExtension.java index 8adb34ace..7ea019a32 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/AbstractExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/AbstractExtension.java @@ -13,8 +13,13 @@ import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.protocol.transport.handler.extension.AbstractExtensionHandler; import de.rub.nds.sshattacker.core.state.SshContext; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlSeeAlso; import java.nio.charset.StandardCharsets; +@XmlAccessorType(XmlAccessType.FIELD) +@XmlSeeAlso({DelayCompressionExtension.class, PingExtension.class, ServerSigAlgsExtension.class}) public abstract class AbstractExtension> extends ModifiableVariableHolder { From 39089e7c27488c79fe637f7e82324d6d19f33dcd Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 23 Oct 2024 11:34:34 +0200 Subject: [PATCH 006/203] Add abstract DynamicMessageAction, that provides common methodes for dynamic actions. Actually only dynamic Key Exchange also receives messages, so we could also implmenet a DynamicSendOnlyMessageAction for Delay Compression and Extension Negotiation. Also added calls to set executed at the end of dynamic actions, so that the action counts as executed even if no message was send (because there was no need for sending or receiving messegaes, e.g. when the opponend does not support the delay compression extension --- .../action/DynamicDelayCompressionAction.java | 8 +- .../DynamicExtensionNegotiationAction.java | 8 +- .../action/DynamicKeyExchangeAction.java | 93 +------------ .../workflow/action/DynamicMessageAction.java | 130 ++++++++++++++++++ 4 files changed, 136 insertions(+), 103 deletions(-) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicDelayCompressionAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicDelayCompressionAction.java index 47533efbb..8822cc442 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicDelayCompressionAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicDelayCompressionAction.java @@ -14,13 +14,8 @@ import de.rub.nds.sshattacker.core.state.State; import de.rub.nds.sshattacker.core.workflow.factory.SshActionFactory; import de.rub.nds.tlsattacker.transport.ConnectionEndType; -import java.util.ArrayList; -import java.util.List; -public class DynamicDelayCompressionAction extends SendAction { - - @SuppressWarnings({"CanBeFinal", "FieldMayBeFinal"}) - private List sshActions = new ArrayList<>(); +public class DynamicDelayCompressionAction extends DynamicMessageAction { public DynamicDelayCompressionAction() { super(); @@ -68,5 +63,6 @@ public void execute(State state) throws WorkflowExecutionException { new NewCompressMessage())); sshActions.forEach(sshAction -> sshAction.execute(state)); } + setExecuted(true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicExtensionNegotiationAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicExtensionNegotiationAction.java index 0662ba752..e9a36e61c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicExtensionNegotiationAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicExtensionNegotiationAction.java @@ -13,13 +13,8 @@ import de.rub.nds.sshattacker.core.state.State; import de.rub.nds.sshattacker.core.workflow.factory.SshActionFactory; import de.rub.nds.tlsattacker.transport.ConnectionEndType; -import java.util.ArrayList; -import java.util.List; -public class DynamicExtensionNegotiationAction extends SendAction { - - @SuppressWarnings({"CanBeFinal", "FieldMayBeFinal"}) - private List sshActions = new ArrayList<>(); +public class DynamicExtensionNegotiationAction extends DynamicMessageAction { public DynamicExtensionNegotiationAction() { super(); @@ -52,5 +47,6 @@ public void execute(State state) throws WorkflowExecutionException { new ExtensionInfoMessage())); sshActions.forEach(sshAction -> sshAction.execute(state)); } + setExecuted(true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicKeyExchangeAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicKeyExchangeAction.java index b5e3df1f0..fe9b1c1c6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicKeyExchangeAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicKeyExchangeAction.java @@ -10,21 +10,11 @@ import de.rub.nds.sshattacker.core.connection.AliasedConnection; import de.rub.nds.sshattacker.core.constants.KeyExchangeAlgorithm; import de.rub.nds.sshattacker.core.exceptions.WorkflowExecutionException; -import de.rub.nds.sshattacker.core.packet.AbstractPacket; -import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessage; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.state.State; import de.rub.nds.sshattacker.core.workflow.factory.WorkflowConfigurationFactory; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.function.Predicate; -import java.util.stream.Collectors; -public class DynamicKeyExchangeAction extends MessageAction - implements ReceivingAction, SendingAction { - - private List sshActions = new ArrayList<>(); +public class DynamicKeyExchangeAction extends DynamicMessageAction { public DynamicKeyExchangeAction() { super(AliasedConnection.DEFAULT_CONNECTION_ALIAS); @@ -46,85 +36,6 @@ public void execute(State state) throws WorkflowExecutionException { WorkflowConfigurationFactory.createKeyExchangeActions( keyExchangeAlgorithm.getFlowType(), context.getConnection()); sshActions.forEach(sshAction -> sshAction.execute(state)); - } - - @Override - public List> getReceivedMessages() { - return sshActions.stream() - .filter(action -> action instanceof ReceivingAction) - .flatMap(action -> ((ReceivingAction) action).getReceivedMessages().stream()) - .collect(Collectors.toList()); - } - - @Override - public List getReceivedPackets() { - return sshActions.stream() - .filter(action -> action instanceof ReceivingAction) - .flatMap(action -> ((ReceivingAction) action).getReceivedPackets().stream()) - .collect(Collectors.toList()); - } - - @Override - public List> getSendMessages() { - return sshActions.stream() - .filter(action -> action instanceof SendingAction) - .flatMap(action -> ((SendingAction) action).getSendMessages().stream()) - .collect(Collectors.toList()); - } - - public List getSshActions() { - return sshActions; - } - - @Override - public void reset() { - for (SshAction action : sshActions) { - action.reset(); - } - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - for (SshAction sshAction : sshActions) { - sb.append(sshAction.toString()); - sb.append("\n"); - } - return sb.toString(); - } - - @Override - public boolean isExecuted() { - // This action can only contain other ssh actions if it was actually - // executed. - return !sshActions.isEmpty(); - } - - @Override - public boolean executedAsPlanned() { - // Return true if this action was executed and all contained ssh - // actions were executed as planned. - return isExecuted() - && sshActions.stream() - .map(SshAction::executedAsPlanned) - .filter(Predicate.isEqual(false)) - .findAny() - .isEmpty(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) return true; - if (obj == null || getClass() != obj.getClass()) return false; - if (!super.equals(obj)) return false; - DynamicKeyExchangeAction that = (DynamicKeyExchangeAction) obj; - return Objects.equals(sshActions, that.sshActions); - } - - @Override - public int hashCode() { - int hash = 5; - hash = 79 * hash + Objects.hash(super.hashCode(), sshActions); - return hash; + setExecuted(true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java new file mode 100644 index 000000000..e94a17770 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java @@ -0,0 +1,130 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.workflow.action; + +import de.rub.nds.sshattacker.core.connection.AliasedConnection; +import de.rub.nds.sshattacker.core.packet.AbstractPacket; +import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessage; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +public abstract class DynamicMessageAction extends MessageAction + implements ReceivingAction, SendingAction { + + protected List sshActions = new ArrayList<>(); + + protected DynamicMessageAction() { + super(AliasedConnection.DEFAULT_CONNECTION_ALIAS); + } + + protected DynamicMessageAction(String connectionAlias) { + super(connectionAlias); + } + + @Override + public List> getReceivedMessages() { + return sshActions == null + ? new ArrayList<>() + : sshActions.stream() + .filter(action -> action instanceof ReceivingAction) + .flatMap( + action -> ((ReceivingAction) action).getReceivedMessages().stream()) + .collect(Collectors.toList()); + } + + @Override + public List getReceivedPackets() { + return sshActions == null + ? new ArrayList<>() + : sshActions.stream() + .filter(action -> action instanceof ReceivingAction) + .flatMap(action -> ((ReceivingAction) action).getReceivedPackets().stream()) + .collect(Collectors.toList()); + } + + @Override + public List> getSendMessages() { + return sshActions == null + ? new ArrayList<>() + : sshActions.stream() + .filter(action -> action instanceof SendingAction) + .flatMap(action -> ((SendingAction) action).getSendMessages().stream()) + .collect(Collectors.toList()); + } + + public List getSshActions() { + return sshActions == null ? new ArrayList<>() : sshActions; + } + + @Override + public void reset() { + sshActions = new ArrayList<>(); + setExecuted(null); + } + + @Override + protected void stripEmptyLists() { + super.stripEmptyLists(); + if (sshActions != null && sshActions.isEmpty()) { + sshActions = null; + } + } + + @Override + protected void initEmptyLists() { + super.initEmptyLists(); + if (sshActions == null) { + sshActions = new ArrayList<>(); + } + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("Dynamic Actions:\n"); + if (sshActions != null && !sshActions.isEmpty()) { + for (SshAction sshAction : sshActions) { + sb.append(sshAction.toString()); + sb.append("\n"); + } + } else { + sb.append("(no actions set)"); + } + return sb.toString(); + } + + @Override + public boolean executedAsPlanned() { + // Return true if this action was executed and all contained ssh + // actions were executed as planned. + return isExecuted() + && sshActions.stream() + .map(SshAction::executedAsPlanned) + .filter(Predicate.isEqual(false)) + .findAny() + .isEmpty(); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + if (!super.equals(obj)) return false; + DynamicMessageAction that = (DynamicMessageAction) obj; + return Objects.equals(sshActions, that.sshActions); + } + + @Override + public int hashCode() { + int hash = 5; + hash = 79 * hash + Objects.hash(super.hashCode(), sshActions); + return hash; + } +} From d57167be6cc51e4017b8d5bc519279c266402e4e Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 23 Oct 2024 11:41:11 +0200 Subject: [PATCH 007/203] remove ToDo: RsaKeyExchangePubkeyMessageSerializer is already implemented --- .../transport/handler/RsaKeyExchangePubkeyMessageHandler.java | 1 - 1 file changed, 1 deletion(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/RsaKeyExchangePubkeyMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/RsaKeyExchangePubkeyMessageHandler.java index 06bf20a5a..ce8a9117d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/RsaKeyExchangePubkeyMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/RsaKeyExchangePubkeyMessageHandler.java @@ -59,7 +59,6 @@ public SshMessagePreparator getPreparator() { @Override public SshMessageSerializer getSerializer() { - // TODO: Implement Serializer return new RsaKeyExchangePubkeyMessageSerializer(message); } } From f51b71847075b7b76e3a4892f9c235435f626329 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 23 Oct 2024 11:41:38 +0200 Subject: [PATCH 008/203] add calls to set executed in Actions where they were missing. --- .../core/workflow/action/ActivateEncryptionAction.java | 5 ++++- .../core/workflow/action/ChangePacketLayerAction.java | 4 +++- .../core/workflow/action/DeactivateEncryptionAction.java | 5 ++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ActivateEncryptionAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ActivateEncryptionAction.java index 6cad36ff0..67fd810c5 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ActivateEncryptionAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ActivateEncryptionAction.java @@ -63,10 +63,13 @@ public void execute(State state) throws WorkflowExecutionException { context.setReadSequenceNumber(0); context.setWriteSequenceNumber(0); } + setExecuted(true); } @Override - public void reset() {} + public void reset() { + setExecuted(null); + } @Override public boolean executedAsPlanned() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java index 5251f1f1b..797ae1301 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java @@ -81,7 +81,9 @@ public void execute(State state) throws WorkflowExecutionException { } @Override - public void reset() {} + public void reset() { + setExecuted(null); + } @Override public boolean executedAsPlanned() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DeactivateEncryptionAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DeactivateEncryptionAction.java index 23c3f70ec..11ff2c7d9 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DeactivateEncryptionAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DeactivateEncryptionAction.java @@ -33,10 +33,13 @@ public void execute(State state) throws WorkflowExecutionException { context.getPacketLayer() .updateDecryptionCipher( PacketCipherFactory.getNoneCipher(context, CipherMode.DECRYPT)); + setExecuted(true); } @Override - public void reset() {} + public void reset() { + setExecuted(null); + } @Override public boolean executedAsPlanned() { From b9758824dd6570a26d673f214c33b4a60bca59ce Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 23 Oct 2024 12:55:11 +0200 Subject: [PATCH 009/203] Make the FULL workflow actually compete as planned. - Add SshActionFactory.withReceiveOptions() so it is easily possible to add ReceivingOptions to Receiving Actions using the SshActionFactory - use this method to set IGNORE_UNEXPECTED_GLOBAL_REQUESTS_WITHOUT_WANTREPLY for the ChannelOpenConfirmationMessage send by the server. - Change FULL workflow, so that only PTY is started and one ENV set. - Change default perperator of PTY and ENV Channel Requests, so that a Replay is wanted. Keep in mind, you have to set in OpenSSH the option `AcceptEnv PATH` so that the enviroment variable can actually be set (but do this only for testing, its bad practice to allow setiing env variables) --- .../ChannelRequestEnvMessagePreparator.java | 1 + .../ChannelRequestPtyMessagePreparator.java | 1 + .../workflow/factory/SshActionFactory.java | 9 +++++++++ .../factory/WorkflowConfigurationFactory.java | 18 ++++++++++-------- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java index 77a21e0d8..8a96a3f8a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java @@ -20,6 +20,7 @@ public ChannelRequestEnvMessagePreparator(Chooser chooser, ChannelRequestEnvMess @Override public void prepareChannelRequestMessageSpecificContents() { + getObject().setWantReply(true); getObject().setVariableName(chooser.getConfig().getDefaultVariableName(), true); getObject().setVariableValue(chooser.getConfig().getDefaultVariableValue(), true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java index 7ee3beee8..56fb44d06 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java @@ -20,6 +20,7 @@ public ChannelRequestPtyMessagePreparator(Chooser chooser, ChannelRequestPtyMess @Override public void prepareChannelRequestMessageSpecificContents() { + getObject().setWantReply(true); getObject().setTermEnvVariable(chooser.getConfig().getDefaultTermEnvVariable(), true); getObject().setWidthCharacters(chooser.getConfig().getDefaultTerminalWidthColumns()); getObject().setHeightRows(chooser.getConfig().getDefaultTerminalHeightRows()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/SshActionFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/SshActionFactory.java index dc103fac2..3ab874e8a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/SshActionFactory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/SshActionFactory.java @@ -14,6 +14,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Set; public final class SshActionFactory { @@ -43,6 +44,14 @@ public static MessageAction createMessageAction( return action; } + public static MessageAction withReceiveOptions( + MessageAction action, Set receiveOptions) { + if (action instanceof ReceiveAction) { + ((ReceiveAction) action).setReceiveOptions(receiveOptions); + } + return action; + } + /** * Creates a ForwardAction for the provided protocolMessages. The order of inbound and * outboundConnection stays the same in the whole workflow. In this case the ConnectionEndType diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java index 0d74bf8bb..a4b96e3c3 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java @@ -22,6 +22,7 @@ import de.rub.nds.tlsattacker.transport.ConnectionEndType; import java.util.ArrayList; import java.util.List; +import java.util.Set; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -471,22 +472,23 @@ public void addConnectionProtocolActions(WorkflowTrace workflow) { workflow.addSshActions( SshActionFactory.createMessageAction( connection, ConnectionEndType.CLIENT, new ChannelOpenSessionMessage()), - SshActionFactory.createMessageAction( - connection, ConnectionEndType.SERVER, new ChannelOpenConfirmationMessage()), + SshActionFactory.withReceiveOptions( + SshActionFactory.createMessageAction( + connection, + ConnectionEndType.SERVER, + new ChannelOpenConfirmationMessage()), + Set.of( + ReceiveAction.ReceiveOption + .IGNORE_UNEXPECTED_GLOBAL_REQUESTS_WITHOUT_WANTREPLY)), SshActionFactory.createMessageAction( connection, ConnectionEndType.CLIENT, new ChannelRequestPtyMessage(), - new ChannelRequestEnvMessage(), - new ChannelRequestEnvMessage(), - new ChannelRequestEnvMessage(), new ChannelRequestEnvMessage()), SshActionFactory.createMessageAction( connection, ConnectionEndType.SERVER, new ChannelSuccessMessage()), SshActionFactory.createMessageAction( - connection, ConnectionEndType.SERVER, new ChannelSuccessMessage()), - SshActionFactory.createMessageAction( - connection, ConnectionEndType.CLIENT, new ChannelRequestEnvMessage())); + connection, ConnectionEndType.SERVER, new ChannelSuccessMessage())); } private WorkflowTrace createSimpleMitmProxyWorkflow() { From d3b0c0fabc211ec6ac3df1b64b30bb06540bc2a2 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 23 Oct 2024 16:40:54 +0200 Subject: [PATCH 010/203] Add IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS option to ReceiveAction, so that channel messages can be received while ignoring only channel window adjust messages. - Add addChannelOpenActions() and addChannelRequestSubsystemActions() to WorkflowConfigurationFactory. that is now used for the new workflowTraceType SFTP_INIT. - WorkflowTraceType SFTP_INIT will be extended to include SFTP Handshake, as soon as these are implemented. - Fix update of remote Window Size if window adjust message is handled. Calculation used local window size instead of remote. - Set want replay default to true in preperator for Channel Request Subsystem Messages --- .../ChannelWindowAdjustMessageHandler.java | 2 +- ...nnelRequestSubsystemMessagePreparator.java | 1 + .../core/workflow/action/ReceiveAction.java | 28 +++++++++- .../factory/WorkflowConfigurationFactory.java | 53 +++++++++++++++---- .../workflow/factory/WorkflowTraceType.java | 1 + 5 files changed, 72 insertions(+), 13 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelWindowAdjustMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelWindowAdjustMessageHandler.java index 3d4fa82b8..cec582066 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelWindowAdjustMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelWindowAdjustMessageHandler.java @@ -38,7 +38,7 @@ public void adjustContext() { message.getRecipientChannelId().getValue()); } channel.setRemoteWindowSize( - channel.getLocalWindowSize().getValue() + message.getBytesToAdd().getValue()); + channel.getRemoteWindowSize().getValue() + message.getBytesToAdd().getValue()); } else { LOGGER.warn( "{} received but no channel with id {} found locally, creating a new channel from defaults with given channel id.", diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java index 7d83a77d6..ce74ad39b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java @@ -21,6 +21,7 @@ public ChannelRequestSubsystemMessagePreparator( @Override public void prepareChannelRequestMessageSpecificContents() { + getObject().setWantReply(true); getObject().setSubsystemName(chooser.getConfig().getDefaultSubsystemName(), true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java index 9f2eebf34..e783c72ec 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java @@ -160,6 +160,12 @@ public class ReceiveAction extends MessageAction implements ReceivingAction { */ @XmlElement protected Boolean failOnUnexpectedDebugMessages; + /** + * Set to {@code true} if the {@link ReceiveOption#IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS} + * option has been set. + */ + @XmlElement protected Boolean ignoreUnexpectedChannelWindowAdjusts; + @HoldsModifiableVariable @XmlElementWrapper @XmlElements({ @@ -336,6 +342,9 @@ public boolean executedAsPlanned() { // to 0. // - the `FAIL_ON_UNEXPECTED_IGNORE_MESSAGES` receive option is not // set and the actual message is an SSH_MSG_IGNORE message. + // - the `IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS` + // receive option is set and the actual message is an + // SSH_MSG_CHANNEL_WINDOW_ADJUST. // // In these cases, ignore the received message and check if the // next received message matches the expected message. @@ -351,7 +360,9 @@ public boolean executedAsPlanned() { || !hasReceiveOption(ReceiveOption.FAIL_ON_UNEXPECTED_IGNORE_MESSAGES) && actualMessage instanceof IgnoreMessage || !hasReceiveOption(ReceiveOption.FAIL_ON_UNEXPECTED_DEBUG_MESSAGES) - && actualMessage instanceof DebugMessage) { + && actualMessage instanceof DebugMessage + || hasReceiveOption(ReceiveOption.IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS) + && actualMessage instanceof ChannelWindowAdjustMessage) { LOGGER.debug("Ignoring message of type {}.", actualMessage.toCompactString()); continue; } @@ -427,6 +438,9 @@ protected boolean hasReceiveOption(ReceiveOption option) { case FAIL_ON_UNEXPECTED_DEBUG_MESSAGES: value = failOnUnexpectedDebugMessages; break; + case IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS: + value = ignoreUnexpectedChannelWindowAdjusts; + break; } return value != null && value; @@ -458,6 +472,8 @@ public void setReceiveOptions(Set receiveOptions) { receiveOptions.contains(ReceiveOption.FAIL_ON_UNEXPECTED_IGNORE_MESSAGES); failOnUnexpectedDebugMessages = receiveOptions.contains(ReceiveOption.FAIL_ON_UNEXPECTED_DEBUG_MESSAGES); + ignoreUnexpectedChannelWindowAdjusts = + receiveOptions.contains(ReceiveOption.IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS); if (hasReceiveOption(ReceiveOption.CHECK_ONLY_EXPECTED) && hasReceiveOption(ReceiveOption.FAIL_ON_UNEXPECTED_IGNORE_MESSAGES)) { @@ -558,7 +574,15 @@ public enum ReceiveOption { * @see RFC 4253, * section 11.3 "Debug Message" */ - FAIL_ON_UNEXPECTED_DEBUG_MESSAGES; + FAIL_ON_UNEXPECTED_DEBUG_MESSAGES, + /** + * Ignore unexpected {@code SSH_MSG_CHANNEL_WINDOW_ADJUST} messages when checking if the + * reception action was executed as planned. + * + * @see RFC 4254, + * section 5.2 "Data Transfer" + */ + IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS; public static Set bundle(ReceiveOption... receiveOptions) { return new HashSet<>(Arrays.asList(receiveOptions)); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java index a4b96e3c3..b227a464c 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java @@ -70,6 +70,8 @@ public WorkflowTrace createWorkflowTrace( return createDynamicAuthenticationWorkflowTrace(); case FULL: return createFullWorkflowTrace(); + case SFTP_INIT: + return createSftpInitWorkflowTrace(); case MITM: return createSimpleMitmProxyWorkflow(); default: @@ -144,6 +146,16 @@ public WorkflowTrace createFullWorkflowTrace() { return workflow; } + public WorkflowTrace createSftpInitWorkflowTrace() { + WorkflowTrace workflow = new WorkflowTrace(); + addTransportProtocolActions(workflow); + addAuthenticationProtocolActions(workflow); + // Connection Protocol Actions + addChannelOpenActions(workflow); + addChannelRequestSubsystemActions(workflow); + return workflow; + } + private void addTransportProtocolInitActions(WorkflowTrace workflow) { if (mode == RunningModeType.MITM) { AliasedConnection inboundConnection = config.getDefaultServerConnection(); @@ -463,11 +475,28 @@ connection, ConnectionEndType.CLIENT, new UserAuthPubkeyMessage()), } /** - * Add connections protocol actions to an existing workflow. + * Add connections protocol actions to an existing workflow. The actions include opening a + * channel and executing two channel requests. First a PTY is requested and then an environment + * variable is passed. * * @param workflow the workflow trace to add actions to */ public void addConnectionProtocolActions(WorkflowTrace workflow) { + addChannelOpenActions(workflow); + AliasedConnection connection = getDefaultConnection(); + workflow.addSshActions( + SshActionFactory.createMessageAction( + connection, + ConnectionEndType.CLIENT, + new ChannelRequestPtyMessage(), + new ChannelRequestEnvMessage()), + SshActionFactory.createMessageAction( + connection, ConnectionEndType.SERVER, new ChannelSuccessMessage()), + SshActionFactory.createMessageAction( + connection, ConnectionEndType.SERVER, new ChannelSuccessMessage())); + } + + public void addChannelOpenActions(WorkflowTrace workflow) { AliasedConnection connection = getDefaultConnection(); workflow.addSshActions( SshActionFactory.createMessageAction( @@ -479,16 +508,20 @@ connection, ConnectionEndType.CLIENT, new ChannelOpenSessionMessage()), new ChannelOpenConfirmationMessage()), Set.of( ReceiveAction.ReceiveOption - .IGNORE_UNEXPECTED_GLOBAL_REQUESTS_WITHOUT_WANTREPLY)), - SshActionFactory.createMessageAction( - connection, - ConnectionEndType.CLIENT, - new ChannelRequestPtyMessage(), - new ChannelRequestEnvMessage()), - SshActionFactory.createMessageAction( - connection, ConnectionEndType.SERVER, new ChannelSuccessMessage()), + .IGNORE_UNEXPECTED_GLOBAL_REQUESTS_WITHOUT_WANTREPLY))); + } + + public void addChannelRequestSubsystemActions(WorkflowTrace workflow) { + AliasedConnection connection = getDefaultConnection(); + workflow.addSshActions( SshActionFactory.createMessageAction( - connection, ConnectionEndType.SERVER, new ChannelSuccessMessage())); + connection, ConnectionEndType.CLIENT, new ChannelRequestSubsystemMessage()), + SshActionFactory.withReceiveOptions( + SshActionFactory.createMessageAction( + connection, ConnectionEndType.SERVER, new ChannelSuccessMessage()), + Set.of( + ReceiveAction.ReceiveOption + .IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS))); } private WorkflowTrace createSimpleMitmProxyWorkflow() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowTraceType.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowTraceType.java index 6ea51fc4e..eb6d289da 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowTraceType.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowTraceType.java @@ -21,5 +21,6 @@ public enum WorkflowTraceType { AUTH_PUBLICKEY, AUTH_DYNAMIC, FULL, + SFTP_INIT, MITM } From fbef03740c8dd306b2a5f7b527e3950346bef572 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 23 Oct 2024 17:34:48 +0200 Subject: [PATCH 011/203] Use XmlElements in Config instead of XmlSeeAlso in AbstractExtension, this looks nicer in XML output. --- .../nds/sshattacker/core/config/Config.java | 18 +++++++++++++++--- .../message/extension/AbstractExtension.java | 5 ----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 1f340aba7..5626236ec 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -16,9 +16,7 @@ import de.rub.nds.sshattacker.core.crypto.keys.*; import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationResponse; import de.rub.nds.sshattacker.core.protocol.connection.ChannelDefaults; -import de.rub.nds.sshattacker.core.protocol.transport.message.extension.AbstractExtension; -import de.rub.nds.sshattacker.core.protocol.transport.message.extension.DelayCompressionExtension; -import de.rub.nds.sshattacker.core.protocol.transport.message.extension.ServerSigAlgsExtension; +import de.rub.nds.sshattacker.core.protocol.transport.message.extension.*; import de.rub.nds.sshattacker.core.workflow.action.executor.WorkflowExecutorType; import de.rub.nds.sshattacker.core.workflow.factory.WorkflowTraceType; import de.rub.nds.sshattacker.core.workflow.filter.FilterType; @@ -288,9 +286,23 @@ public class Config implements Serializable { // region SSH Extensions /** List of extensions supported by the client */ + @XmlElementWrapper + @XmlElements({ + @XmlElement(type = ServerSigAlgsExtension.class, name = "ServerSigAlgsExtension"), + @XmlElement(type = DelayCompressionExtension.class, name = "DelayCompressionExtension"), + @XmlElement(type = PingExtension.class, name = "PingExtension"), + @XmlElement(type = UnknownExtension.class, name = "UnknownExtension") + }) private List> clientSupportedExtensions; /** List of extensions supported by the server */ + @XmlElementWrapper + @XmlElements({ + @XmlElement(type = ServerSigAlgsExtension.class, name = "ServerSigAlgsExtension"), + @XmlElement(type = DelayCompressionExtension.class, name = "DelayCompressionExtension"), + @XmlElement(type = PingExtension.class, name = "PingExtension"), + @XmlElement(type = UnknownExtension.class, name = "UnknownExtension") + }) private List> serverSupportedExtensions; /** Flag for enabling and disabling the server-sig-algs extension */ diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/AbstractExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/AbstractExtension.java index 7ea019a32..8adb34ace 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/AbstractExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/AbstractExtension.java @@ -13,13 +13,8 @@ import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.protocol.transport.handler.extension.AbstractExtensionHandler; import de.rub.nds.sshattacker.core.state.SshContext; -import jakarta.xml.bind.annotation.XmlAccessType; -import jakarta.xml.bind.annotation.XmlAccessorType; -import jakarta.xml.bind.annotation.XmlSeeAlso; import java.nio.charset.StandardCharsets; -@XmlAccessorType(XmlAccessType.FIELD) -@XmlSeeAlso({DelayCompressionExtension.class, PingExtension.class, ServerSigAlgsExtension.class}) public abstract class AbstractExtension> extends ModifiableVariableHolder { From 6a6b937f42ce5a0b865e79792136e23a95f88650 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 23 Oct 2024 17:53:36 +0200 Subject: [PATCH 012/203] Fix setReceivedPackets() of ReceiveAction --- .../rub/nds/sshattacker/core/workflow/action/ReceiveAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java index e783c72ec..caeaf90a7 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java @@ -402,7 +402,7 @@ public List getReceivedPackets() { return receivedPackets; } - public void setReceivedPackets(List packetList) { + public void setReceivedPackets(List receivedPackets) { this.receivedPackets = receivedPackets; } From 7999be104be4a3e895ee37ccc6a6a02ed795f3e8 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 24 Oct 2024 15:04:57 +0200 Subject: [PATCH 013/203] Add new WorkflowTraceType: REQ_TCP_IP_FORWARD Usefull for testing simple a Global Request I implemented it, because I saw that the Global Request Success and failure was implemendted wrongly using ChannelMessages. Global Requests are now still not fully implemented, but work now better than before :) I also started working on a GlobalRequestManager (and GlobalRequestSucessTcpIPMessage, since it attaches Port information if you do not spcify a port in the request) But I stashed it away, because I could not decide how ti implement the abstraction of the success messages. - Fixes Global Request Success and Failure Message - Adds responce specific data blob to success message (actully could be parsed to port number for tcp ip forward requests) --- .../message/GlobalRequestFailureMessage.java | 3 +- .../message/GlobalRequestMessage.java | 5 ++++ .../message/GlobalRequestSuccessMessage.java | 21 +++++++++++++- .../GlobalRequestSuccessMessageParser.java | 16 ++++++++++- ...GlobalRequestFailureMessagePreparator.java | 5 ++-- ...GlobalRequestSuccessMessagePreparator.java | 5 ++-- ...lRequestTcpIpForwardMessagePreparator.java | 3 +- ...GlobalRequestSuccessMessageSerializer.java | 16 ++++++++++- .../factory/WorkflowConfigurationFactory.java | 28 +++++++++++++++++++ .../workflow/factory/WorkflowTraceType.java | 1 + 10 files changed, 94 insertions(+), 9 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestFailureMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestFailureMessage.java index 44d2a6c59..42c301e09 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestFailureMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestFailureMessage.java @@ -7,10 +7,11 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.message; +import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import de.rub.nds.sshattacker.core.protocol.connection.handler.GlobalRequestFailureMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; -public class GlobalRequestFailureMessage extends ChannelMessage { +public class GlobalRequestFailureMessage extends SshMessage { @Override public GlobalRequestFailureMessageHandler getHandler(SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java index da3187480..7f7afcb21 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java @@ -13,6 +13,7 @@ import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.constants.GlobalRequestType; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; +import de.rub.nds.sshattacker.core.util.Converter; import java.nio.charset.StandardCharsets; public abstract class GlobalRequestMessage> @@ -82,4 +83,8 @@ public void setWantReply(ModifiableByte wantReply) { public void setWantReply(byte wantReply) { this.wantReply = ModifiableVariableFactory.safelySetValue(this.wantReply, wantReply); } + + public void setWantReply(boolean wantReply) { + setWantReply(Converter.booleanToByte(wantReply)); + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestSuccessMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestSuccessMessage.java index 2ae8e9d31..8a7e07d84 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestSuccessMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestSuccessMessage.java @@ -7,10 +7,29 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.message; +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import de.rub.nds.sshattacker.core.protocol.connection.handler.GlobalRequestSuccessMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; -public class GlobalRequestSuccessMessage extends ChannelMessage { +public class GlobalRequestSuccessMessage extends SshMessage { + + private ModifiableByteArray responseSpecificData; + + public ModifiableByteArray getResponseSpecificData() { + return responseSpecificData; + } + + public void setResponseSpecificData(ModifiableByteArray responseSpecificData) { + this.responseSpecificData = responseSpecificData; + } + + public void setResponseSpecificData(byte[] responseSpecificData) { + this.responseSpecificData = + ModifiableVariableFactory.safelySetValue( + this.responseSpecificData, responseSpecificData); + } @Override public GlobalRequestSuccessMessageHandler getHandler(SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestSuccessMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestSuccessMessageParser.java index c812d7916..0a116e618 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestSuccessMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestSuccessMessageParser.java @@ -7,12 +7,17 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.parser; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.protocol.common.SshMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.message.GlobalRequestSuccessMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class GlobalRequestSuccessMessageParser extends SshMessageParser { + private static final Logger LOGGER = LogManager.getLogger(); + public GlobalRequestSuccessMessageParser(byte[] array) { super(array); } @@ -21,11 +26,20 @@ public GlobalRequestSuccessMessageParser(byte[] array, int startPosition) { super(array, startPosition); } + private void parseResponseSpecificData() { + message.setResponseSpecificData(parseByteArrayField(getBytesLeft())); + LOGGER.debug( + "Response specific data blob: {}", + ArrayConverter.bytesToRawHexString(message.getResponseSpecificData().getValue())); + } + @Override public GlobalRequestSuccessMessage createMessage() { return new GlobalRequestSuccessMessage(); } @Override - protected void parseMessageSpecificContents() {} + protected void parseMessageSpecificContents() { + parseResponseSpecificData(); + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestFailureMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestFailureMessagePreparator.java index e09fe0a40..b07a0cec3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestFailureMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestFailureMessagePreparator.java @@ -8,11 +8,12 @@ package de.rub.nds.sshattacker.core.protocol.connection.preparator; import de.rub.nds.sshattacker.core.constants.MessageIdConstant; +import de.rub.nds.sshattacker.core.protocol.common.SshMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.message.GlobalRequestFailureMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class GlobalRequestFailureMessagePreparator - extends ChannelMessagePreparator { + extends SshMessagePreparator { public GlobalRequestFailureMessagePreparator( Chooser chooser, GlobalRequestFailureMessage message) { @@ -20,5 +21,5 @@ public GlobalRequestFailureMessagePreparator( } @Override - protected void prepareChannelMessageSpecificContents() {} + public void prepareMessageSpecificContents() {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestSuccessMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestSuccessMessagePreparator.java index 3616d98e3..1d5796ef0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestSuccessMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestSuccessMessagePreparator.java @@ -8,11 +8,12 @@ package de.rub.nds.sshattacker.core.protocol.connection.preparator; import de.rub.nds.sshattacker.core.constants.MessageIdConstant; +import de.rub.nds.sshattacker.core.protocol.common.SshMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.message.GlobalRequestSuccessMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class GlobalRequestSuccessMessagePreparator - extends ChannelMessagePreparator { + extends SshMessagePreparator { public GlobalRequestSuccessMessagePreparator( Chooser chooser, GlobalRequestSuccessMessage message) { @@ -20,5 +21,5 @@ public GlobalRequestSuccessMessagePreparator( } @Override - protected void prepareChannelMessageSpecificContents() {} + public void prepareMessageSpecificContents() {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java index 1aeccce5d..902b66d58 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java @@ -21,7 +21,8 @@ public GlobalRequestTcpIpForwardMessagePreparator( @Override protected void prepareGlobalRequestMessageSpecificContents() { + getObject().setWantReply(true); getObject().setIpAddressToBind("127.0.0.1", true); - getObject().setPortToBind(22); + getObject().setPortToBind(0); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java index 70dee3bb4..de0153377 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java @@ -7,16 +7,30 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.serializer; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.protocol.common.SshMessageSerializer; import de.rub.nds.sshattacker.core.protocol.connection.message.GlobalRequestSuccessMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class GlobalRequestSuccessMessageSerializer extends SshMessageSerializer { + private static final Logger LOGGER = LogManager.getLogger(); + public GlobalRequestSuccessMessageSerializer(GlobalRequestSuccessMessage message) { super(message); } + private void serializeResponseSpecificData() { + LOGGER.debug( + "Response specific data blob: {}", + ArrayConverter.bytesToRawHexString(message.getResponseSpecificData().getValue())); + appendBytes(message.getResponseSpecificData().getValue()); + } + @Override - public void serializeMessageSpecificContents() {} + public void serializeMessageSpecificContents() { + serializeResponseSpecificData(); + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java index b227a464c..09b831351 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java @@ -72,6 +72,8 @@ public WorkflowTrace createWorkflowTrace( return createFullWorkflowTrace(); case SFTP_INIT: return createSftpInitWorkflowTrace(); + case REQ_TCP_IP_FORWARD: + return createRequestTcpIpForwardWorkflowTrace(); case MITM: return createSimpleMitmProxyWorkflow(); default: @@ -156,6 +158,15 @@ public WorkflowTrace createSftpInitWorkflowTrace() { return workflow; } + public WorkflowTrace createRequestTcpIpForwardWorkflowTrace() { + WorkflowTrace workflow = new WorkflowTrace(); + addTransportProtocolActions(workflow); + addAuthenticationProtocolActions(workflow); + // Connection Protocol Actions + addGlobalRequestActions(workflow); + return workflow; + } + private void addTransportProtocolInitActions(WorkflowTrace workflow) { if (mode == RunningModeType.MITM) { AliasedConnection inboundConnection = config.getDefaultServerConnection(); @@ -524,6 +535,23 @@ connection, ConnectionEndType.SERVER, new ChannelSuccessMessage()), .IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS))); } + public void addGlobalRequestActions(WorkflowTrace workflow) { + AliasedConnection connection = getDefaultConnection(); + workflow.addSshActions( + SshActionFactory.createMessageAction( + connection, + ConnectionEndType.CLIENT, + new GlobalRequestTcpIpForwardMessage()), + SshActionFactory.withReceiveOptions( + SshActionFactory.createMessageAction( + connection, + ConnectionEndType.SERVER, + new GlobalRequestSuccessMessage()), + Set.of( + ReceiveAction.ReceiveOption + .IGNORE_UNEXPECTED_GLOBAL_REQUESTS_WITHOUT_WANTREPLY))); + } + private WorkflowTrace createSimpleMitmProxyWorkflow() { WorkflowTrace workflow = new WorkflowTrace(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowTraceType.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowTraceType.java index eb6d289da..7cdadd385 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowTraceType.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowTraceType.java @@ -22,5 +22,6 @@ public enum WorkflowTraceType { AUTH_DYNAMIC, FULL, SFTP_INIT, + REQ_TCP_IP_FORWARD, MITM } From 9090b4fc3a73e5d02f54478bd628b5a99857fff7 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Fri, 25 Oct 2024 14:45:42 +0200 Subject: [PATCH 014/203] Fix Serializer of GlobalRequestSuccessMessages. Allow it to have no request specific data --- .../GlobalRequestSuccessMessageSerializer.java | 13 +++++++++---- .../protocol/common/CyclicParserSerializerTest.java | 4 +--- .../GlobalRequestSuccessMessageParserTest.java | 10 ++++++++-- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java index de0153377..bcde4d473 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java @@ -23,10 +23,15 @@ public GlobalRequestSuccessMessageSerializer(GlobalRequestSuccessMessage message } private void serializeResponseSpecificData() { - LOGGER.debug( - "Response specific data blob: {}", - ArrayConverter.bytesToRawHexString(message.getResponseSpecificData().getValue())); - appendBytes(message.getResponseSpecificData().getValue()); + if (message.getResponseSpecificData() != null) { + LOGGER.debug( + "Response specific data blob: {}", + ArrayConverter.bytesToRawHexString( + message.getResponseSpecificData().getValue())); + appendBytes(message.getResponseSpecificData().getValue()); + } else { + LOGGER.debug("No response specific data blob set"); + } } @Override diff --git a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/common/CyclicParserSerializerTest.java b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/common/CyclicParserSerializerTest.java index bf26afff7..9c22ed373 100644 --- a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/common/CyclicParserSerializerTest.java +++ b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/common/CyclicParserSerializerTest.java @@ -116,9 +116,7 @@ public void execute() { || ChannelOpenMessage.class.isAssignableFrom(messageClass)) { Channel defaultChannel = context.getConfig().getChannelDefaults().newChannelFromDefaults(); - context.getChannelManager() - .getChannels() - .put(defaultChannel.getRemoteChannelId().getValue(), defaultChannel); + context.getChannelManager().addChannel(defaultChannel); defaultChannel.setOpen(true); } // Prepare the message given the fresh context diff --git a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestSuccessMessageParserTest.java b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestSuccessMessageParserTest.java index 8d70a802d..5ad40ef5b 100644 --- a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestSuccessMessageParserTest.java +++ b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestSuccessMessageParserTest.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.parser; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import de.rub.nds.modifiablevariable.util.ArrayConverter; @@ -24,7 +25,11 @@ public class GlobalRequestSuccessMessageParserTest { * @return A stream of test vectors to feed the testParse unit test */ public static Stream provideTestVectors() { - return Stream.of(Arguments.of(ArrayConverter.hexStringToByteArray("51"), new byte[0])); + return Stream.of( + Arguments.of(ArrayConverter.hexStringToByteArray("51"), new byte[0]), + Arguments.of( + ArrayConverter.hexStringToByteArray("5100008321"), + ArrayConverter.hexStringToByteArray("00008321"))); } /** @@ -34,12 +39,13 @@ public static Stream provideTestVectors() { */ @ParameterizedTest @MethodSource("provideTestVectors") - public void testParse(byte[] providedBytes) { + public void testParse(byte[] providedBytes, byte[] expectedResponseSpecificData) { GlobalRequestSuccessMessageParser parser = new GlobalRequestSuccessMessageParser(providedBytes); GlobalRequestSuccessMessage msg = parser.parse(); assertEquals( MessageIdConstant.SSH_MSG_REQUEST_SUCCESS.getId(), msg.getMessageId().getValue()); + assertArrayEquals(expectedResponseSpecificData, msg.getResponseSpecificData().getValue()); } } From 16e561d905d206815c2f8f08586ae23fa65b46ff Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Fri, 25 Oct 2024 15:23:21 +0200 Subject: [PATCH 015/203] Improved ChannelManager to handle channels better, added some helper functions. - Created channel manage lists that allow access by local or remote ID (used this naming so there is no misunderstanding to sender and recipient channel IDs) - Reworked all accesses to the old channel list, so it is more correct, and local channel IDs do not split the same list als remote IDs - Added pendingChannel lists, for Channels the client requested, but got no confirmation from the server yet. Server sided, still uses the finished channel list directly via createNewChannelFromDefaults() Added: - MessageSentHandler to ChannelCloseMessages. Before this handler was part of the preperator. But it is more general and usefully in the handler. - MessageSentHandler to ChannelOpenConfimationMessage, for same reason as above. - MessageSentHandler to ChannelWindowAdjustMessage, for same reason as above. - Added a ConfigRemoteChannelId field to the abstract ChannelMessage, so forced remote channels are actually possible. (Keep in mind remote will not know about this channel, if you do not open it) Changes: - [ChannelMessagePreperator] Pick default sender channel first by ConfigLocalChannelId than by channelDefaults.LocalChannelId. If the channel was not found and could not be guessed by earlier channel request, create a new channel (receiver will probably not know this channel) - [ChannelOpenFailureMessageHandler] now only removes a channel from pending channel list (since these are the only channels that should fail to open) - Renamed configSenderChannelId to configLocalChannelId in [ChannelOpenMessage] to avoid confusion - Actually handle the chanelOpenSessionMessage - Force set the channel type "session" when preparing a ChannelOpenSessionMessage - Calculate the Window Adjust Result correctly - All Accesses to the channels should be done through the ChannelManager (preferred using the high level methods) --- .../exceptions/ChannelManagerException.java | 23 +++ .../protocol/connection/ChannelManager.java | 142 +++++++++++++++--- .../handler/ChannelCloseMessageHandler.java | 34 ++++- ...ChannelOpenConfirmationMessageHandler.java | 36 ++++- .../ChannelOpenFailureMessageHandler.java | 9 +- .../ChannelOpenSessionMessageHandler.java | 4 +- .../ChannelWindowAdjustMessageHandler.java | 30 +++- .../connection/message/ChannelMessage.java | 23 ++- .../message/ChannelOpenMessage.java | 12 +- .../ChannelCloseMessagePreparator.java | 7 +- .../preparator/ChannelMessagePreparator.java | 40 +++-- ...nnelOpenConfirmationMessagePreparator.java | 24 +-- .../ChannelOpenMessagePreparator.java | 34 ++--- .../ChannelOpenSessionMessagePreperator.java | 6 +- .../ChannelWindowAdjustMessagePreparator.java | 9 +- .../sshattacker/core/state/SshContext.java | 5 - 16 files changed, 317 insertions(+), 121 deletions(-) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/ChannelManagerException.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/ChannelManagerException.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/ChannelManagerException.java new file mode 100644 index 000000000..470affef6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/ChannelManagerException.java @@ -0,0 +1,23 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.exceptions; + +public class ChannelManagerException extends RuntimeException { + + public ChannelManagerException() { + super(); + } + + public ChannelManagerException(String message) { + super(message); + } + + public ChannelManagerException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/ChannelManager.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/ChannelManager.java index 6fa7d3dc7..09bf53936 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/ChannelManager.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/ChannelManager.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.protocol.connection; import de.rub.nds.sshattacker.core.constants.ChannelType; +import de.rub.nds.sshattacker.core.exceptions.ChannelManagerException; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelMessage; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelOpenConfirmationMessage; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelOpenMessage; @@ -20,13 +21,22 @@ public class ChannelManager { private static final Logger LOGGER = LogManager.getLogger(); - private final HashMap channels = new HashMap<>(); + + // Open channels accessible via remote channel number (recipient channel ID for outgoing + // messages) + private final HashMap channelsByRemoteId = new HashMap<>(); + // Open channels accessible via local channel number (recipient channel ID of incoming messages) + private final HashMap channelsByLocalId = new HashMap<>(); + + // Pending channels that were requested (by the client) but not confirmed + private final HashMap pendingChannelsByLocalId = new HashMap<>(); private final SshContext context; private final List pendingChannelOpenConfirmations = new LinkedList<>(); + // Received channel requests that want a reply private final List> channelRequestResponseQueue = new LinkedList<>(); public ChannelManager(SshContext context) { @@ -44,7 +54,7 @@ public ChannelManager(SshContext context) { */ private int findUnusedChannelId() { return IntStream.iterate(0, i -> i + 1) - .filter(i -> channels.get(i) == null) + .filter(i -> channelsByLocalId.get(i) == null) .findFirst() .orElseThrow(); // should never occur with infinite stream } @@ -68,6 +78,7 @@ public ChannelOpenConfirmationMessage prepareNextOpenConfirm() { if (!pendingChannelOpenConfirmations.isEmpty()) { return pendingChannelOpenConfirmations.remove(0); } + // Create a new ChannelOpenConfirmationMessage, that is not a reply to a ChannelOpenMessage ChannelOpenConfirmationMessage fresh = new ChannelOpenConfirmationMessage(); guessChannelByReceivedMessages() .ifPresentOrElse( @@ -81,11 +92,80 @@ public ChannelOpenConfirmationMessage prepareNextOpenConfirm() { fresh.setSenderChannelId(0); fresh.setRecipientChannelId(0); }); + createNewChannelFromDefaults( + fresh.getSenderChannelId().getValue(), fresh.getRecipientChannelId().getValue()); return fresh; } - public HashMap getChannels() { - return channels; + public Channel getChannelByRemoteId(Integer remoteId) { + return channelsByRemoteId.get(remoteId); + } + + public Channel getChannelByLocalId(Integer localId) { + return channelsByLocalId.get(localId); + } + + public Channel removeChannelByRemoteId(Integer remoteId) { + Channel channelRemoved = channelsByRemoteId.remove(remoteId); + if (channelRemoved != null) { + channelsByLocalId.remove(channelRemoved.getLocalChannelId().getValue()); + } + return channelRemoved; + } + + public Channel removeChannelByLocalId(Integer remoteId) { + Channel channelRemoved = channelsByLocalId.remove(remoteId); + if (channelRemoved != null) { + channelsByRemoteId.remove(channelRemoved.getRemoteChannelId().getValue()); + } + return channelRemoved; + } + + public void addChannel(Channel channel) { + if (channel.getRemoteChannelId().getValue() == null + || channel.getLocalChannelId().getValue() == null) { + throw new ChannelManagerException( + "Channel cannot be managed. Either the local or remote channel ID is not set"); + } + channelsByRemoteId.put(channel.getRemoteChannelId().getValue(), channel); + channelsByLocalId.put(channel.getLocalChannelId().getValue(), channel); + } + + public boolean containsChannelWithLocalId(Integer localId) { + return channelsByLocalId.containsKey(localId); + } + + public boolean containsChannelWithRemoteId(Integer remoteId) { + return channelsByRemoteId.containsKey(remoteId); + } + + public Channel getPendingChannelByLocalId(Integer localId) { + return pendingChannelsByLocalId.get(localId); + } + + public void addPendingChannel(Channel channel) { + if (channel.getLocalChannelId().getValue() == null) { + throw new ChannelManagerException( + "Pending channel cannot have an empty the local channel ID"); + } + pendingChannelsByLocalId.put(channel.getLocalChannelId().getValue(), channel); + } + + public Channel removePendingChannelByLocalId(Integer localId) { + return pendingChannelsByLocalId.remove(localId); + } + + public Channel removePendingChannel(Channel channel) { + return pendingChannelsByLocalId.remove(channel.getLocalChannelId().getValue()); + } + + public boolean containsPendingChannelWithLocalId(Integer localId) { + return pendingChannelsByLocalId.containsKey(localId); + } + + public void confirmPendingChannel(Channel channel) { + removePendingChannel(channel); + addChannel(channel); } /** @@ -95,11 +175,11 @@ public HashMap getChannels() { * @param remoteChannelId the remote channel ID * @return the created channel */ - private Channel createNewChannelFromDefaults(int localChannelId, int remoteChannelId) { + public Channel createNewChannelFromDefaults(int localChannelId, int remoteChannelId) { Channel channel = context.getConfig().getChannelDefaults().newChannelFromDefaults(); channel.setLocalChannelId(localChannelId); channel.setRemoteChannelId(remoteChannelId); - channels.put(remoteChannelId, channel); + addChannel(channel); return channel; } @@ -112,25 +192,53 @@ private Channel createNewChannelFromDefaults(int localChannelId, int remoteChann * @return the created channel */ public Channel createNewChannelFromDefaults(int remoteChannelId) { - int localChannelId = findUnusedChannelId(); - return createNewChannelFromDefaults(localChannelId, remoteChannelId); + return createNewChannelFromDefaults(findUnusedChannelId(), remoteChannelId); + } + + /** + * Create a new pending channel from the configured defaults and add it to the pending channel + * map. This channel is not yet confirmed, so it does not have a remote channel ID (recipient + * Channel ID) + * + * @param localChannelId the local channel ID + * @return the created pending channel + */ + public Channel createPrendingChannel(int localChannelId) { + Channel channel = context.getConfig().getChannelDefaults().newChannelFromDefaults(); + channel.setLocalChannelId(localChannelId); + addPendingChannel(channel); + return channel; + } + + /** + * Create a new pending channel from the configured defaults and add it to the pending channel + * map. This channel is not yet confirmed, so it does not have a remote channel ID (recipient + * Channel ID) + * + *

This is a convenience method that selects the next free local channel ID automatically. + * + * @return the created pending channel + */ + public Channel createPrendingChannel() { + return createPrendingChannel(findUnusedChannelId()); } public Optional guessChannelByReceivedMessages() { if (!channelRequestResponseQueue.isEmpty()) { ChannelMessage message = channelRequestResponseQueue.remove(0); - for (Integer object : channels.keySet()) { - if (Objects.equals( - channels.get(object).getLocalChannelId().getValue(), - message.getRecipientChannelId().getValue())) { - return Optional.ofNullable(channels.get(object)); - } - } + Optional.ofNullable(channelsByLocalId.get(message.getRecipientChannelId().getValue())); } - return channels.values().stream().findFirst(); + return channelsByLocalId.values().stream().findFirst(); } public void addToChannelRequestResponseQueue(ChannelMessage message) { - channelRequestResponseQueue.add(message); + if (channelsByLocalId.containsKey(message.getRecipientChannelId().getValue())) { + channelRequestResponseQueue.add(message); + } else { + LOGGER.warn( + "{} received but no channel with id {} found locally, ignoring it.", + message.getClass().getSimpleName(), + message.getRecipientChannelId().getValue()); + } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java index e07de6886..32883d631 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java @@ -9,6 +9,7 @@ import de.rub.nds.sshattacker.core.protocol.common.*; import de.rub.nds.sshattacker.core.protocol.connection.Channel; +import de.rub.nds.sshattacker.core.protocol.connection.ChannelManager; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelCloseMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelCloseMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelCloseMessagePreparator; @@ -17,7 +18,8 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class ChannelCloseMessageHandler extends SshMessageHandler { +public class ChannelCloseMessageHandler extends SshMessageHandler + implements MessageSentHandler { private static final Logger LOGGER = LogManager.getLogger(); @@ -31,24 +33,46 @@ public ChannelCloseMessageHandler(SshContext context, ChannelCloseMessage messag @Override public void adjustContext() { - Channel channel = context.getChannels().get(message.getRecipientChannelId().getValue()); + ChannelManager channelManager = context.getChannelManager(); + Integer recipientChannelId = message.getRecipientChannelId().getValue(); + Channel channel = channelManager.getChannelByLocalId(recipientChannelId); if (channel != null) { if (!channel.isOpen().getValue()) { LOGGER.warn( "{} received but channel with id {} is not open, continuing anyway.", getClass().getSimpleName(), - message.getRecipientChannelId().getValue()); + recipientChannelId); } else { channel.setCloseMessageReceived(true); if (!channel.isOpen().getValue()) { - context.getChannels().remove(message.getRecipientChannelId().getValue()); + channelManager.removeChannelByLocalId(recipientChannelId); } } } else { LOGGER.warn( "{} received but no channel with id {} found locally, ignoring request to close the channel.", getClass().getSimpleName(), - message.getRecipientChannelId().getValue()); + recipientChannelId); + } + } + + @Override + public void adjustContextAfterMessageSent() { + ChannelManager channelManager = context.getChannelManager(); + Integer recipientChannelId = message.getRecipientChannelId().getValue(); + Channel channel = channelManager.getChannelByRemoteId(recipientChannelId); + if (channel != null) + { + channel.setCloseMessageSent(true); + if (!channel.isOpen().getValue()) { + channelManager.removeChannelByRemoteId(recipientChannelId); + } + } + else { + LOGGER.warn( + "{} sent but no channel with remote id {} found, ignoring request to close the channel.", + getClass().getSimpleName(), + recipientChannelId); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenConfirmationMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenConfirmationMessageHandler.java index de676a482..a14c610db 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenConfirmationMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenConfirmationMessageHandler.java @@ -9,6 +9,7 @@ import de.rub.nds.sshattacker.core.protocol.common.*; import de.rub.nds.sshattacker.core.protocol.connection.Channel; +import de.rub.nds.sshattacker.core.protocol.connection.ChannelManager; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelOpenConfirmationMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelOpenConfirmationMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelOpenConfirmationMessagePreparator; @@ -18,7 +19,7 @@ import org.apache.logging.log4j.Logger; public class ChannelOpenConfirmationMessageHandler - extends SshMessageHandler { + extends SshMessageHandler implements MessageSentHandler { private static final Logger LOGGER = LogManager.getLogger(); @@ -33,23 +34,44 @@ public ChannelOpenConfirmationMessageHandler( @Override public void adjustContext() { - Channel channel = context.getChannels().get(message.getRecipientChannelId().getValue()); + ChannelManager channelManager = context.getChannelManager(); + Integer recipientChannelId = message.getRecipientChannelId().getValue(); + Integer senderChannelId = message.getSenderChannelId().getValue(); + + Channel channel = channelManager.getPendingChannelByLocalId(recipientChannelId); if (channel == null) { LOGGER.warn( "{} received but no channel with id {} found locally, creating a new channel from defaults with given channel id.", getClass().getSimpleName(), - message.getRecipientChannelId().getValue()); - channel = context.getConfig().getChannelDefaults().newChannelFromDefaults(); - channel.setLocalChannelId(message.getRecipientChannelId().getValue()); - context.getChannels().put(channel.getLocalChannelId().getValue(), channel); + recipientChannelId); + channel = + channelManager.createNewChannelFromDefaults( + recipientChannelId, senderChannelId); + } else { + channel.setRemoteChannelId(senderChannelId); + channelManager.confirmPendingChannel(channel); } - channel.setRemoteChannelId(message.getSenderChannelId()); channel.setRemotePacketSize(message.getPacketSize()); channel.setRemoteWindowSize(message.getWindowSize()); channel.setOpen(true); } + @Override + public void adjustContextAfterMessageSent() { + Integer localChannelId = message.getSenderChannelId().getValue(); + Channel cahnnel = context.getChannelManager().getChannelByLocalId(localChannelId); + if (cahnnel != null) { + // Channel is already added to the ChannelManager, just need to set it to open + cahnnel.setOpen(true); + } else { + LOGGER.warn( + "{} sent but no channel with id {} found locally, ignoring request to confirm to open the channel.", + getClass().getSimpleName(), + localChannelId); + } + } + @Override public ChannelOpenConfirmationMessageParser getParser(byte[] array) { return new ChannelOpenConfirmationMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenFailureMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenFailureMessageHandler.java index 69eda64c7..67832f521 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenFailureMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenFailureMessageHandler.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.protocol.connection.handler; import de.rub.nds.sshattacker.core.protocol.common.*; +import de.rub.nds.sshattacker.core.protocol.connection.ChannelManager; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelOpenFailureMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelOpenFailureMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelOpenFailureMessagePreparator; @@ -30,13 +31,15 @@ public ChannelOpenFailureMessageHandler(SshContext context, ChannelOpenFailureMe @Override public void adjustContext() { - if (!context.getChannels().containsKey(message.getRecipientChannelId().getValue())) { + ChannelManager channelManager = context.getChannelManager(); + if (!channelManager.containsPendingChannelWithLocalId( + message.getRecipientChannelId().getValue())) { LOGGER.warn( "{} received but no channel with id {} found locally, ignoring it.", - getClass().getSimpleName(), + message.getClass().getSimpleName(), message.getRecipientChannelId().getValue()); } - context.getChannels().remove(message.getRecipientChannelId().getValue()); + channelManager.removePendingChannelByLocalId(message.getRecipientChannelId().getValue()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenSessionMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenSessionMessageHandler.java index 9604db492..740ecf771 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenSessionMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenSessionMessageHandler.java @@ -24,7 +24,9 @@ public ChannelOpenSessionMessageHandler(SshContext context, ChannelOpenSessionMe } @Override - public void adjustContext() {} + public void adjustContext() { + context.getChannelManager().handleChannelOpenMessage(message); + } @Override public ChannelOpenSessionMessageParser getParser(byte[] array) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelWindowAdjustMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelWindowAdjustMessageHandler.java index cec582066..4a5cf5f29 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelWindowAdjustMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelWindowAdjustMessageHandler.java @@ -15,8 +15,8 @@ import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelWindowAdjustMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -public class ChannelWindowAdjustMessageHandler - extends SshMessageHandler { +public class ChannelWindowAdjustMessageHandler extends SshMessageHandler + implements MessageSentHandler { public ChannelWindowAdjustMessageHandler(SshContext context) { super(context); @@ -29,23 +29,37 @@ public ChannelWindowAdjustMessageHandler( @Override public void adjustContext() { - Channel channel = context.getChannels().get(message.getRecipientChannelId().getValue()); + Integer recipientChannelId = message.getRecipientChannelId().getValue(); + Channel channel = context.getChannelManager().getChannelByLocalId(recipientChannelId); if (channel != null) { if (!channel.isOpen().getValue()) { LOGGER.warn( "{} received but channel with id {} is not open, continuing anyway.", getClass().getSimpleName(), - message.getRecipientChannelId().getValue()); + recipientChannelId); } channel.setRemoteWindowSize( channel.getRemoteWindowSize().getValue() + message.getBytesToAdd().getValue()); } else { LOGGER.warn( - "{} received but no channel with id {} found locally, creating a new channel from defaults with given channel id.", + "{} received but no channel with id {} found locally, ignoring request to adjust window of the channel.", getClass().getSimpleName(), - message.getRecipientChannelId().getValue()); - channel = context.getConfig().getChannelDefaults().newChannelFromDefaults(); - context.getChannels().put(channel.getLocalChannelId().getValue(), channel); + recipientChannelId); + } + } + + @Override + public void adjustContextAfterMessageSent() { + Integer recipientChannelId = message.getRecipientChannelId().getValue(); + Channel channel = context.getChannelManager().getChannelByRemoteId(recipientChannelId); + if (channel != null) { + channel.setLocalWindowSize( + channel.getLocalWindowSize().getValue() + message.getBytesToAdd().getValue()); + } else { + LOGGER.warn( + "{} sent but no channel with remote id {} found, ignoring request to adjust window of the channel.", + getClass().getSimpleName(), + recipientChannelId); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelMessage.java index 9ce70d0ed..2261e88fc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelMessage.java @@ -16,8 +16,11 @@ public abstract class ChannelMessage> extends SshMes protected ModifiableInteger recipientChannelId; - @XmlAttribute(name = "channel") - protected Integer configSenderChannelId; + @XmlAttribute(name = "localChannel") + protected Integer configLocalChannelId; + + @XmlAttribute(name = "remoteChannel") + protected Integer configRemoteChannelId; public ModifiableInteger getRecipientChannelId() { return recipientChannelId; @@ -32,11 +35,19 @@ public void setRecipientChannelId(int recipientChannel) { ModifiableVariableFactory.safelySetValue(recipientChannelId, recipientChannel); } - public Integer getConfigSenderChannelId() { - return configSenderChannelId; + public Integer getConfigLocalChannelId() { + return configLocalChannelId; + } + + public void setConfigLocalChannelId(int configLocalChannelId) { + this.configLocalChannelId = configLocalChannelId; + } + + public Integer getConfigRemoteChannelId() { + return configRemoteChannelId; } - public void setConfigSenderChannelId(int configSenderChannelId) { - this.configSenderChannelId = configSenderChannelId; + public void setConfigRemoteChannelId(int configRemoteChannelId) { + this.configRemoteChannelId = configRemoteChannelId; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java index 954b21f8e..799a96e77 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java @@ -23,8 +23,8 @@ public abstract class ChannelOpenMessage> extend private ModifiableInteger packetSize; private ModifiableInteger senderChannelId; - @XmlAttribute(name = "channel") - private Integer configSenderChannelId; + @XmlAttribute(name = "localChannel") + private Integer configLocalChannelId; public ModifiableInteger getChannelTypeLength() { return channelTypeLength; @@ -112,11 +112,11 @@ public void setPacketSize(int packetSize) { this.packetSize = ModifiableVariableFactory.safelySetValue(this.packetSize, packetSize); } - public Integer getConfigSenderChannelId() { - return configSenderChannelId; + public Integer getConfigLocalChannelId() { + return configLocalChannelId; } - public void setConfigSenderChannelId(int configSenderChannelId) { - this.configSenderChannelId = configSenderChannelId; + public void setConfigLocalChannelId(int configLocalChannelId) { + this.configLocalChannelId = configLocalChannelId; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelCloseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelCloseMessagePreparator.java index 7ec3c7f41..ff447a3c6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelCloseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelCloseMessagePreparator.java @@ -18,10 +18,5 @@ public ChannelCloseMessagePreparator(Chooser chooser, ChannelCloseMessage messag } @Override - protected void prepareChannelMessageSpecificContents() { - channel.setCloseMessageSent(true); - if (!channel.isOpen().getValue()) { - chooser.getContext().getChannels().remove(channel.getLocalChannelId().getValue()); - } - } + protected void prepareChannelMessageSpecificContents() {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java index 8b3da8b3b..c251501f3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java @@ -10,6 +10,8 @@ import de.rub.nds.sshattacker.core.constants.MessageIdConstant; import de.rub.nds.sshattacker.core.protocol.common.SshMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.Channel; +import de.rub.nds.sshattacker.core.protocol.connection.ChannelDefaults; +import de.rub.nds.sshattacker.core.protocol.connection.ChannelManager; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.util.Optional; @@ -34,36 +36,32 @@ public final void prepareMessageSpecificContents() { } private void prepareChannel() { - Optional configSenderChannelId = - Optional.ofNullable(getObject().getConfigSenderChannelId()); + ChannelManager channelManager = chooser.getContext().getChannelManager(); + ChannelDefaults channelDefaults = chooser.getConfig().getChannelDefaults(); + Integer localChannelId = + Optional.ofNullable(getObject().getConfigLocalChannelId()) + .orElse(channelDefaults.getLocalChannelId()); + + // ChannelMessages should only be sent for an opened channel channel = - configSenderChannelId - .flatMap( - senderChannelId -> - Optional.ofNullable( - chooser.getContext() - .getChannels() - .get(senderChannelId))) - .or( - () -> - chooser.getContext() - .getChannelManager() - .guessChannelByReceivedMessages()) + Optional.ofNullable(channelManager.getChannelByLocalId(localChannelId)) + .or(channelManager::guessChannelByReceivedMessages) .orElseGet( () -> { LOGGER.warn( - "About to prepare channel message, but no corresponding was channel found or guessed. Creating a new one from defaults."); - Integer remoteChannelId = configSenderChannelId.orElse(0); - return chooser.getContext() - .getChannelManager() - .createNewChannelFromDefaults(remoteChannelId); + "About to prepare channel message, but no corresponding channel was found or guessed. Creating a new channel from defaults. The other party will not know this channel either."); + Integer remoteChannelId = + Optional.ofNullable( + getObject().getConfigRemoteChannelId()) + .orElse(channelDefaults.getRemoteChannelId()); + return channelManager.createNewChannelFromDefaults( + localChannelId, remoteChannelId); }); if (!channel.isOpen().getValue()) { - int localChannelId = channel.getLocalChannelId().getValue(); LOGGER.warn( "About to prepare channel message for channel with local id {}, but channel is not open. Continuing anyway.", - localChannelId); + channel.getLocalChannelId().getValue()); } getObject().setRecipientChannelId(channel.getRemoteChannelId()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenConfirmationMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenConfirmationMessagePreparator.java index 232aa1733..37297ca78 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenConfirmationMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenConfirmationMessagePreparator.java @@ -10,6 +10,8 @@ import de.rub.nds.sshattacker.core.constants.MessageIdConstant; import de.rub.nds.sshattacker.core.protocol.common.SshMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.Channel; +import de.rub.nds.sshattacker.core.protocol.connection.ChannelDefaults; +import de.rub.nds.sshattacker.core.protocol.connection.ChannelManager; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelOpenConfirmationMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import org.apache.logging.log4j.LogManager; @@ -27,29 +29,27 @@ public ChannelOpenConfirmationMessagePreparator( @Override public void prepareMessageSpecificContents() { - ChannelOpenConfirmationMessage toCopy = - chooser.getContext().getChannelManager().prepareNextOpenConfirm(); + ChannelManager channelManager = chooser.getContext().getChannelManager(); + ChannelOpenConfirmationMessage toCopy = channelManager.prepareNextOpenConfirm(); getObject().setRecipientChannelId(toCopy.getRecipientChannelId()); getObject().setSenderChannelId(toCopy.getSenderChannelId()); - // get the closed Channel Channel channel = - chooser.getContext() - .getChannelManager() - .getChannels() - .get(toCopy.getRecipientChannelId().getValue()); + channelManager.getChannelByLocalId(getObject().getSenderChannelId().getValue()); if (channel != null) { if (channel.isOpen().getValue()) { LOGGER.warn( "Channel with id {} is already open, sending ChannelOpenConfirmationMessage with current channel details again.", channel.getLocalChannelId().getValue()); - } else { - channel.setOpen(true); } - } - getObject().setWindowSize(chooser.getConfig().getChannelDefaults().getLocalWindowSize()); - getObject().setPacketSize(chooser.getConfig().getChannelDefaults().getLocalPacketSize()); + getObject().setWindowSize(channel.getLocalWindowSize()); + getObject().setPacketSize(channel.getLocalPacketSize()); + } else { + ChannelDefaults channelDefaults = chooser.getConfig().getChannelDefaults(); + getObject().setWindowSize(channelDefaults.getLocalWindowSize()); + getObject().setPacketSize(channelDefaults.getLocalPacketSize()); + } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenMessagePreparator.java index 9d1f5364d..0b5940a1c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenMessagePreparator.java @@ -10,10 +10,10 @@ import de.rub.nds.sshattacker.core.constants.MessageIdConstant; import de.rub.nds.sshattacker.core.protocol.common.SshMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.Channel; -import de.rub.nds.sshattacker.core.protocol.connection.ChannelDefaults; +import de.rub.nds.sshattacker.core.protocol.connection.ChannelManager; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelOpenMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -import java.util.HashMap; +import java.util.Optional; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -22,37 +22,35 @@ public abstract class ChannelOpenMessagePreparator channelMap = chooser.getContext().getChannels(); - ChannelDefaults channelDefaults = chooser.getConfig().getChannelDefaults(); + ChannelManager channelManager = chooser.getContext().getChannelManager(); - int channelId; - if (getObject().getConfigSenderChannelId() != null) { - channelId = getObject().getConfigSenderChannelId(); - } else { - channelId = channelDefaults.getLocalChannelId(); - } - getObject().setSenderChannelId(channelId); - Channel channel = - chooser.getContext().getChannels().get(getObject().getSenderChannelId().getValue()); + Integer localChannelId = + Optional.ofNullable(getObject().getConfigLocalChannelId()) + .orElse(chooser.getConfig().getChannelDefaults().getLocalChannelId()); + + getObject().setSenderChannelId(localChannelId); + Integer senderChannelId = getObject().getSenderChannelId().getValue(); + + channel = channelManager.getChannelByLocalId(senderChannelId); if (channel != null) { LOGGER.warn( "Channel with id {} is already exists, reusing the existing channel object.", - getObject().getSenderChannelId().getValue()); + senderChannelId); if (channel.isOpen().getValue()) { LOGGER.warn( "Channel with id {} is already open, sending ChannelOpenMessage with current channel details again.", - getObject().getSenderChannelId().getValue()); + senderChannelId); } } else { - channel = channelDefaults.newChannelFromDefaults(); - channel.setLocalChannelId(getObject().getSenderChannelId().getValue()); - channelMap.put(getObject().getSenderChannelId().getValue(), channel); + channel = channelManager.createPrendingChannel(senderChannelId); } getObject().setChannelType(channel.getChannelType(), true); getObject().setWindowSize(channel.getLocalWindowSize()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java index 162fbe2af..10575d9ea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.preparator; +import de.rub.nds.sshattacker.core.constants.ChannelType; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelOpenSessionMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -17,5 +18,8 @@ public ChannelOpenSessionMessagePreperator(Chooser chooser, ChannelOpenSessionMe } @Override - protected void prepareChannelOpenMessageSpecificContents() {} + protected void prepareChannelOpenMessageSpecificContents() { + channel.setChannelType(ChannelType.SESSION); + getObject().setChannelType(channel.getChannelType(), true); + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelWindowAdjustMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelWindowAdjustMessagePreparator.java index aa03af872..8135488e5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelWindowAdjustMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelWindowAdjustMessagePreparator.java @@ -22,10 +22,9 @@ public ChannelWindowAdjustMessagePreparator( @Override public void prepareChannelMessageSpecificContents() { getObject().setRecipientChannelId(channel.getRemoteChannelId()); - int bytesToAdd = - chooser.getConfig().getChannelDefaults().getLocalWindowSize() - - channel.getLocalWindowSize().getValue(); - getObject().setBytesToAdd(bytesToAdd); - channel.setLocalWindowSize(chooser.getConfig().getChannelDefaults().getLocalWindowSize()); + getObject() + .setBytesToAdd( + chooser.getConfig().getChannelDefaults().getLocalWindowSize() + - channel.getLocalWindowSize().getValue()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java index d9bb7cf90..1804dcf94 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java @@ -22,7 +22,6 @@ import de.rub.nds.sshattacker.core.packet.layer.AbstractPacketLayer; import de.rub.nds.sshattacker.core.packet.layer.PacketLayerFactory; import de.rub.nds.sshattacker.core.protocol.common.layer.MessageLayer; -import de.rub.nds.sshattacker.core.protocol.connection.Channel; import de.rub.nds.sshattacker.core.protocol.connection.ChannelManager; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.AbstractExtension; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -31,7 +30,6 @@ import de.rub.nds.tlsattacker.transport.TransportHandler; import de.rub.nds.tlsattacker.transport.TransportHandlerFactory; import java.io.IOException; -import java.util.HashMap; import java.util.List; import java.util.Optional; @@ -1159,9 +1157,6 @@ public void setDelayCompressionExtensionSent(boolean sent) { // endregion // region for Connection Protocol Fields - public HashMap getChannels() { - return channelManager.getChannels(); - } public ChannelManager getChannelManager() { return channelManager; From 7ccbc27856a958ef56c49f560cefa2fa7818cffc Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Fri, 25 Oct 2024 16:43:14 +0200 Subject: [PATCH 016/203] Move adjustContext() to the common position in the ChannelRequestHandlers. Add comment "This should not happen, because WantReply should always be false", where ChannelRequests should not be added to ChannelRequestResponseQueue because these messages should never want reply --- .../ChannelRequestBreakMessageHandler.java | 14 +++++++------- .../ChannelRequestExitSignalMessageHandler.java | 1 + .../ChannelRequestExitStatusMessageHandler.java | 15 ++++++++------- .../ChannelRequestSignalMessageHandler.java | 1 + .../ChannelRequestWindowChangeMessageHandler.java | 15 ++++++++------- .../handler/ChannelRequestX11MessageHandler.java | 14 +++++++------- .../ChannelRequestXonXoffMessageHandler.java | 15 ++++++++------- 7 files changed, 40 insertions(+), 35 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestBreakMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestBreakMessageHandler.java index 5735211cc..b87bb3695 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestBreakMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestBreakMessageHandler.java @@ -26,6 +26,13 @@ public ChannelRequestBreakMessageHandler( super(context, message); } + @Override + public void adjustContext() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + context.getChannelManager().addToChannelRequestResponseQueue(message); + } + } + @Override public ChannelRequestBreakMessageParser getParser(byte[] array) { return new ChannelRequestBreakMessageParser(array); @@ -45,11 +52,4 @@ public ChannelRequestBreakMessagePreparator getPreparator() { public ChannelRequestBreakMessageSerializer getSerializer() { return new ChannelRequestBreakMessageSerializer(message); } - - @Override - public void adjustContext() { - if (Converter.byteToBoolean(message.getWantReply().getValue())) { - context.getChannelManager().addToChannelRequestResponseQueue(message); - } - } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitSignalMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitSignalMessageHandler.java index d327a6a88..3e0066f22 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitSignalMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitSignalMessageHandler.java @@ -30,6 +30,7 @@ public ChannelRequestExitSignalMessageHandler( @Override public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { + // This should not happen, because WantReply should always be false context.getChannelManager().addToChannelRequestResponseQueue(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitStatusMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitStatusMessageHandler.java index 949e9c33a..f3b1abb11 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitStatusMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitStatusMessageHandler.java @@ -27,6 +27,14 @@ public ChannelRequestExitStatusMessageHandler( super(context, message); } + @Override + public void adjustContext() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + // This should not happen, because WantReply should always be false + context.getChannelManager().addToChannelRequestResponseQueue(message); + } + } + @Override public ChannelRequestExitStatusMessageParser getParser(byte[] array) { return new ChannelRequestExitStatusMessageParser(array); @@ -46,11 +54,4 @@ public ChannelRequestExitStatusMessagePreparator getPreparator() { public ChannelRequestExitStatusMessageSerializer getSerializer() { return new ChannelRequestExitStatusMessageSerializer(message); } - - @Override - public void adjustContext() { - if (Converter.byteToBoolean(message.getWantReply().getValue())) { - context.getChannelManager().addToChannelRequestResponseQueue(message); - } - } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSignalMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSignalMessageHandler.java index 643402427..80d89623f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSignalMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSignalMessageHandler.java @@ -30,6 +30,7 @@ public ChannelRequestSignalMessageHandler( @Override public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { + // This should not happen, because WantReply should always be false context.getChannelManager().addToChannelRequestResponseQueue(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestWindowChangeMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestWindowChangeMessageHandler.java index 9db058bc5..6f11758a3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestWindowChangeMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestWindowChangeMessageHandler.java @@ -26,6 +26,14 @@ public ChannelRequestWindowChangeMessageHandler( super(context, message); } + @Override + public void adjustContext() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + // This should not happen, because WantReply should always be false + context.getChannelManager().addToChannelRequestResponseQueue(message); + } + } + @Override public ChannelRequestWindowChangeMessageParser getParser(byte[] array) { return new ChannelRequestWindowChangeMessageParser(array); @@ -45,11 +53,4 @@ public ChannelRequestWindowChangeMessagePreparator getPreparator() { public ChannelRequestWindowChangeMessageSerializer getSerializer() { return new ChannelRequestWindowChangeMessageSerializer(message); } - - @Override - public void adjustContext() { - if (Converter.byteToBoolean(message.getWantReply().getValue())) { - context.getChannelManager().addToChannelRequestResponseQueue(message); - } - } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestX11MessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestX11MessageHandler.java index 60765b436..1276c44b3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestX11MessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestX11MessageHandler.java @@ -24,6 +24,13 @@ public ChannelRequestX11MessageHandler(SshContext context, ChannelRequestX11Mess super(context, message); } + @Override + public void adjustContext() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + context.getChannelManager().addToChannelRequestResponseQueue(message); + } + } + @Override public ChannelRequestX11MessageParser getParser(byte[] array) { return new ChannelRequestX11MessageParser(array); @@ -43,11 +50,4 @@ public ChannelRequestX11MessagePreparator getPreparator() { public ChannelRequestX11MessageSerializer getSerializer() { return new ChannelRequestX11MessageSerializer(message); } - - @Override - public void adjustContext() { - if (Converter.byteToBoolean(message.getWantReply().getValue())) { - context.getChannelManager().addToChannelRequestResponseQueue(message); - } - } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestXonXoffMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestXonXoffMessageHandler.java index 1393a2c45..d0e95427d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestXonXoffMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestXonXoffMessageHandler.java @@ -27,6 +27,14 @@ public ChannelRequestXonXoffMessageHandler( super(context, message); } + @Override + public void adjustContext() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + // This should not happen, because WantReply should always be false + context.getChannelManager().addToChannelRequestResponseQueue(message); + } + } + @Override public ChannelRequestXonXoffMessageParser getParser(byte[] array) { return new ChannelRequestXonXoffMessageParser(array); @@ -46,11 +54,4 @@ public ChannelRequestXonXoffMessagePreparator getPreparator() { public ChannelRequestXonXoffMessageSerializer getSerializer() { return new ChannelRequestXonXoffMessageSerializer(message); } - - @Override - public void adjustContext() { - if (Converter.byteToBoolean(message.getWantReply().getValue())) { - context.getChannelManager().addToChannelRequestResponseQueue(message); - } - } } From 479d8ba3c084fdab961752bf93ff679a5554a260 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 28 Oct 2024 15:04:48 +0100 Subject: [PATCH 017/203] Add -log_level option to set explicit log level. Overwrites -debug and -quiet --- .../core/config/delegate/GeneralDelegate.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/delegate/GeneralDelegate.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/delegate/GeneralDelegate.java index d3035428d..45c5fb0ba 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/delegate/GeneralDelegate.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/delegate/GeneralDelegate.java @@ -9,6 +9,7 @@ import com.beust.jcommander.Parameter; import de.rub.nds.sshattacker.core.config.Config; +import de.rub.nds.sshattacker.core.config.converter.LogLevelConverter; import java.security.Provider; import java.security.Security; import org.apache.logging.log4j.Level; @@ -33,6 +34,12 @@ public class GeneralDelegate extends Delegate { @Parameter(names = "-quiet", description = "No output (sets logLevel to NONE)") private boolean quiet; + @Parameter( + names = "-log_level", + description = "Sets explicit log level", + converter = LogLevelConverter.class) + private Level loglevel; + public boolean isHelp() { return help; } @@ -57,6 +64,14 @@ public void setQuiet(boolean quiet) { this.quiet = quiet; } + public Level getLogLevel() { + return loglevel; + } + + public void setLogLevel(Level loglevel) { + this.loglevel = loglevel; + } + @Override public void applyDelegate(Config config) { Security.addProvider(new BouncyCastleProvider()); @@ -65,6 +80,9 @@ public void applyDelegate(Config config) { } else if (quiet) { Configurator.setAllLevels("de.rub.nds.sshattacker", Level.OFF); } + if (loglevel != null) { + Configurator.setAllLevels("de.rub.nds.sshattacker", loglevel); + } LOGGER.debug("Using the following security providers"); for (Provider p : Security.getProviders()) { LOGGER.debug("Provider {}, version, {}", p.getName(), p.getVersionStr()); From e07a7ba4955a9e70ea716f4de2cf77a5d2091d16 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 28 Oct 2024 15:07:39 +0100 Subject: [PATCH 018/203] - Use getObject() in BinaryPacketPreparator. - Add tracing for complete payload bytes --- .../core/packet/preparator/BinaryPacketPreparator.java | 8 +++----- .../core/packet/serializer/BinaryPacketSerializer.java | 3 +++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/preparator/BinaryPacketPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/preparator/BinaryPacketPreparator.java index 1cfd63bc5..c3438ab34 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/preparator/BinaryPacketPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/preparator/BinaryPacketPreparator.java @@ -18,7 +18,6 @@ public class BinaryPacketPreparator extends AbstractPacketPreparator Date: Mon, 28 Oct 2024 15:25:18 +0100 Subject: [PATCH 019/203] [Channel] - Added expectedDataType, that tells what data is expected as payload. This is set via chanel request messages (TODO: should in future also be set via channel open messages that do not open sessions) - Added Lists: receivedRequestsThatWantReply, sentRequestsThatWantReply. self-explaining. Managed via ChannelManager, Updated correctly via ChannelRequests, and ChannelFailure messages. Used to correlate Channel Success messages with a request. This replaces "channelRequestResponseQueue" in the ChannelManager [ChannelManager] - getChannelByReceivedRequestThatWantReply, replaces guessChannelByReceivedMessages. It does now create a channel only if it does not exist. - Added management methods as explained above [ChannelRequests] - Mainly added adjustContextAfterMessageSent() methods for managing requests lists of the channels correctly [ChannelSuccessMessageHandler] - Does now set the ExpectedDataType correctly, utilizing the first unanswered channel request of the channel for this [CONSTANTS] - Added AUTH_AGENT_OPENSSH_COM ChannelType [Tests] - Updated some tests, so that they "work" --- .../core/constants/ChannelDataType.java | 51 ++++++++++++++ .../core/constants/ChannelRequestType.java | 2 + .../common/ProtocolMessageParser.java | 4 +- .../core/protocol/connection/Channel.java | 68 +++++++++++++++++++ .../protocol/connection/ChannelManager.java | 61 +++++++++++++---- .../handler/ChannelCloseMessageHandler.java | 6 +- .../handler/ChannelDataMessageHandler.java | 6 +- .../handler/ChannelFailureMessageHandler.java | 18 ++++- ...ChannelRequestAuthAgentMessageHandler.java | 12 +++- .../ChannelRequestBreakMessageHandler.java | 14 +++- .../ChannelRequestEnvMessageHandler.java | 13 +++- .../ChannelRequestExecMessageHandler.java | 13 +++- ...hannelRequestExitSignalMessageHandler.java | 13 +++- ...hannelRequestExitStatusMessageHandler.java | 13 +++- .../ChannelRequestPtyMessageHandler.java | 13 +++- .../ChannelRequestShellMessageHandler.java | 14 +++- .../ChannelRequestSignalMessageHandler.java | 13 +++- ...ChannelRequestSubsystemMessageHandler.java | 12 +++- .../ChannelRequestUnknownMessageHandler.java | 12 +++- ...nnelRequestWindowChangeMessageHandler.java | 13 +++- .../ChannelRequestX11MessageHandler.java | 13 +++- .../ChannelRequestXonXoffMessageHandler.java | 13 +++- .../handler/ChannelSuccessMessageHandler.java | 55 ++++++++++++++- .../preparator/ChannelMessagePreparator.java | 2 +- ...alRequestSuccessMessageSerializerTest.java | 3 +- .../test/java/executing/NetcatWorkflow.java | 5 +- .../java/executing/NetcatWorkflowFactory.java | 9 +-- 27 files changed, 405 insertions(+), 66 deletions(-) create mode 100755 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/ChannelDataType.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/ChannelDataType.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/ChannelDataType.java new file mode 100755 index 000000000..3dd685ea3 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/ChannelDataType.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.constants; + +/** Represents data types that can occur when receiving SSH_MSG_CHANNEL_DATA */ +public enum ChannelDataType { + + // Only valid in channels in which no channel request has been confirmed yet + /** Not requested data */ + UNSET, + + // Only valid in SESSION ChannelType + /** Pseudo-terminal (pty) data stream */ + PTY, + /** Arbitrary std-out data stream of programs, executed with exec or a shell */ + SHELL, + /** SFTP protocol data */ + SUBSYSTEM_SFTP, + /** Unknown subsystem data */ + SUBSYSTEM_UNKNOWN, + + // Only valid in X11 ChannelType + /** X11 forwarding data stream */ + X11, + + // Only valid in FORWARDED_TCPIP and DIRECT_TCPIP ChannelType + /** TCP IP data stream */ + TCP_IP, + + // Only valid in TUN_OPENSSH_COM ChannelType + /** TCP IP data stream */ + TUN, + + // Only valid in DIRECT_STREAMLOCAL_OPENSSH_COM and FORWARDED_STREAMLOCAL_OPENSSH_COM + // ChannelType + /** Unix domain socket data stream */ + UNIX_DOMAIN, + + // Only valid in AUTH_AGENT_OPENSSH_COM ChannelType + /** SSH Agent Protocol data */ + AUTH_AGENT, + // Only valid if more than one channel request that changes the expected data type were + // confirmed + /** Unknown data stream, because multiple types are possible */ + UNKNOWN +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/ChannelRequestType.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/ChannelRequestType.java index 0b5b6a47f..cf7405e1a 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/ChannelRequestType.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/ChannelRequestType.java @@ -16,6 +16,8 @@ public enum ChannelRequestType { * Sources: * - https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-13 * - https://cvsweb.openbsd.org/src/usr.bin/ssh/PROTOCOL?annotate=HEAD + * - https://www.ietf.org/archive/id/draft-miller-ssh-agent-11.html for auth-agent-req@openssh.com + * - http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/usr.bin/ssh/PROTOCOL for eow@openssh.com */ // [ RFC 4254 ] PTY_REQ("pty-req"), diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ProtocolMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ProtocolMessageParser.java index 36a9015c7..162d83c45 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ProtocolMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ProtocolMessageParser.java @@ -14,9 +14,7 @@ import de.rub.nds.sshattacker.core.packet.BlobPacket; import de.rub.nds.sshattacker.core.protocol.authentication.message.*; import de.rub.nds.sshattacker.core.protocol.authentication.parser.*; -import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelOpenUnknownMessage; -import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestUnknownMessage; -import de.rub.nds.sshattacker.core.protocol.connection.message.GlobalRequestUnknownMessage; +import de.rub.nds.sshattacker.core.protocol.connection.message.*; import de.rub.nds.sshattacker.core.protocol.connection.parser.*; import de.rub.nds.sshattacker.core.protocol.transport.message.AsciiMessage; import de.rub.nds.sshattacker.core.protocol.transport.parser.*; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/Channel.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/Channel.java index 1c28524ad..ace3392f0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/Channel.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/Channel.java @@ -10,12 +10,17 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bool.ModifiableBoolean; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.constants.ChannelDataType; import de.rub.nds.sshattacker.core.constants.ChannelType; +import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestMessage; import java.io.Serializable; +import java.util.LinkedList; +import java.util.List; public class Channel implements Serializable { private ChannelType channelType; + private ChannelDataType expectedDataType; private ModifiableInteger localChannelId; private ModifiableInteger localWindowSize; private ModifiableInteger localPacketSize; @@ -28,6 +33,9 @@ public class Channel implements Serializable { private ModifiableBoolean closeMessageReceived; private ModifiableBoolean closeMessageSent; + private final List> receivedRequestsThatWantReply = new LinkedList<>(); + private final List> sentRequestsThatWantReply = new LinkedList<>(); + public Channel() { super(); } @@ -40,6 +48,7 @@ public Channel( boolean open) { super(); this.channelType = channelType; + expectedDataType = ChannelDataType.UNSET; setLocalChannelId(localChannelId); setLocalWindowSize(localWindowSize); setLocalPacketSize(localPacketSize); @@ -56,6 +65,7 @@ public Channel( Boolean open) { super(); this.channelType = channelType; + expectedDataType = ChannelDataType.UNSET; this.localChannelId = localChannelId; this.localWindowSize = localWindowSize; this.localPacketSize = localPacketSize; @@ -75,6 +85,31 @@ public Channel( Boolean open) { super(); this.channelType = channelType; + expectedDataType = ChannelDataType.UNSET; + setLocalChannelId(localChannelId); + setLocalWindowSize(localWindowSize); + setLocalPacketSize(localPacketSize); + setRemoteChannelId(remoteChannelId); + setRemoteWindowSize(remoteWindowSize); + setRemotePacketSize(remotePacketSize); + setCloseMessageSent(false); + setCloseMessageReceived(false); + setOpen(open); + } + + public Channel( + ChannelType channelType, + ChannelDataType expectedDataType, + Integer localChannelId, + Integer localWindowSize, + Integer localPacketSize, + Integer remoteChannelId, + Integer remoteWindowSize, + Integer remotePacketSize, + Boolean open) { + super(); + this.channelType = channelType; + this.expectedDataType = expectedDataType; setLocalChannelId(localChannelId); setLocalWindowSize(localWindowSize); setLocalPacketSize(localPacketSize); @@ -94,6 +129,14 @@ public void setChannelType(ChannelType channelType) { this.channelType = channelType; } + public ChannelDataType getExpectedDataType() { + return expectedDataType; + } + + public void setExpectedDataType(ChannelDataType expectedDataType) { + this.expectedDataType = expectedDataType; + } + public ModifiableInteger getLocalPacketSize() { return localPacketSize; } @@ -224,6 +267,28 @@ public void setRemoteWindowSize(Integer remoteWindowSize) { ModifiableVariableFactory.safelySetValue(this.remoteWindowSize, remoteWindowSize); } + public void addReceivedRequestThatWantsReply(ChannelRequestMessage message) { + receivedRequestsThatWantReply.add(message); + } + + public void addSentRequestsThatWantsReply(ChannelRequestMessage message) { + sentRequestsThatWantReply.add(message); + } + + public ChannelRequestMessage removeFirstReceivedRequestThatWantReply() { + if (!receivedRequestsThatWantReply.isEmpty()) { + return receivedRequestsThatWantReply.remove(0); + } + return null; + } + + public ChannelRequestMessage removeFirstSentRequestThatWantReply() { + if (!sentRequestsThatWantReply.isEmpty()) { + return sentRequestsThatWantReply.remove(0); + } + return null; + } + @Override public String toString() { return "\n" @@ -232,6 +297,9 @@ public String toString() { + " channelType: " + channelType.toString() + "\n" + + " channelDataType: " + + expectedDataType.toString() + + "\n" + " localChannelId: " + localChannelId.getValue() + "\n" diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/ChannelManager.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/ChannelManager.java index 09bf53936..a7cc08b7a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/ChannelManager.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/ChannelManager.java @@ -9,9 +9,9 @@ import de.rub.nds.sshattacker.core.constants.ChannelType; import de.rub.nds.sshattacker.core.exceptions.ChannelManagerException; -import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelMessage; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelOpenConfirmationMessage; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelOpenMessage; +import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestMessage; import de.rub.nds.sshattacker.core.state.SshContext; import java.util.*; import java.util.stream.IntStream; @@ -36,9 +36,6 @@ public class ChannelManager { private final List pendingChannelOpenConfirmations = new LinkedList<>(); - // Received channel requests that want a reply - private final List> channelRequestResponseQueue = new LinkedList<>(); - public ChannelManager(SshContext context) { super(); this.context = context; @@ -80,7 +77,7 @@ public ChannelOpenConfirmationMessage prepareNextOpenConfirm() { } // Create a new ChannelOpenConfirmationMessage, that is not a reply to a ChannelOpenMessage ChannelOpenConfirmationMessage fresh = new ChannelOpenConfirmationMessage(); - guessChannelByReceivedMessages() + getChannelByReceivedRequestThatWantReply() .ifPresentOrElse( channel -> { fresh.setSenderChannelId(channel.getLocalChannelId()); @@ -91,9 +88,8 @@ public ChannelOpenConfirmationMessage prepareNextOpenConfirm() { "Failed to guess channel, setting sender and receiver channel IDs to 0!"); fresh.setSenderChannelId(0); fresh.setRecipientChannelId(0); + createNewChannelFromDefaults(0, 0); }); - createNewChannelFromDefaults( - fresh.getSenderChannelId().getValue(), fresh.getRecipientChannelId().getValue()); return fresh; } @@ -223,17 +219,42 @@ public Channel createPrendingChannel() { return createPrendingChannel(findUnusedChannelId()); } - public Optional guessChannelByReceivedMessages() { - if (!channelRequestResponseQueue.isEmpty()) { - ChannelMessage message = channelRequestResponseQueue.remove(0); + /** + * Remove the "first" request received on any channel, that wants a reply, and return it or + * return none if there are no more requests in the queue. + * + * @return ChannelRequestMessage + */ + public ChannelRequestMessage removeFirstReceivedRequestThatWantReply() { + for (Channel channel : channelsByLocalId.values()) { + ChannelRequestMessage firstRequest = + channel.removeFirstReceivedRequestThatWantReply(); + if (firstRequest != null) { + return firstRequest; + } + } + return null; + } + + /** + * Return a channel on which a received request wants reply, or return none. + * + *

Also removes the ChannelRequestMessage from the queue + * + * @return channel + */ + public Optional getChannelByReceivedRequestThatWantReply() { + ChannelRequestMessage message = removeFirstReceivedRequestThatWantReply(); + if (message != null) { Optional.ofNullable(channelsByLocalId.get(message.getRecipientChannelId().getValue())); } - return channelsByLocalId.values().stream().findFirst(); + return Optional.empty(); } - public void addToChannelRequestResponseQueue(ChannelMessage message) { - if (channelsByLocalId.containsKey(message.getRecipientChannelId().getValue())) { - channelRequestResponseQueue.add(message); + public void addReceivedRequestThatWantsReply(ChannelRequestMessage message) { + Integer recipientChannelId = message.getRecipientChannelId().getValue(); + if (channelsByLocalId.containsKey(recipientChannelId)) { + channelsByLocalId.get(recipientChannelId).addReceivedRequestThatWantsReply(message); } else { LOGGER.warn( "{} received but no channel with id {} found locally, ignoring it.", @@ -241,4 +262,16 @@ public void addToChannelRequestResponseQueue(ChannelMessage message) { message.getRecipientChannelId().getValue()); } } + + public void addSentRequestThatWantsReply(ChannelRequestMessage message) { + Integer recipientChannelId = message.getRecipientChannelId().getValue(); + if (channelsByRemoteId.containsKey(recipientChannelId)) { + channelsByRemoteId.get(recipientChannelId).addSentRequestsThatWantsReply(message); + } else { + LOGGER.warn( + "{} sent but no channel with remote id {} found, ignoring it.", + message.getClass().getSimpleName(), + message.getRecipientChannelId().getValue()); + } + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java index 32883d631..f52a6bfd6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java @@ -61,14 +61,12 @@ public void adjustContextAfterMessageSent() { ChannelManager channelManager = context.getChannelManager(); Integer recipientChannelId = message.getRecipientChannelId().getValue(); Channel channel = channelManager.getChannelByRemoteId(recipientChannelId); - if (channel != null) - { + if (channel != null) { channel.setCloseMessageSent(true); if (!channel.isOpen().getValue()) { channelManager.removeChannelByRemoteId(recipientChannelId); } - } - else { + } else { LOGGER.warn( "{} sent but no channel with remote id {} found, ignoring request to close the channel.", getClass().getSimpleName(), diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelDataMessageHandler.java index 7b4a7d320..f2138fa4f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelDataMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelDataMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.*; +import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelDataMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelDataMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelDataMessagePreparator; @@ -25,9 +25,7 @@ public ChannelDataMessageHandler(SshContext context, ChannelDataMessage message) } @Override - public void adjustContext() { - // TODO: Handle ChannelDataMessage - } + public void adjustContext() {} @Override public ChannelDataMessageParser getParser(byte[] array) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelFailureMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelFailureMessageHandler.java index 0adc0960f..b30cbc69a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelFailureMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelFailureMessageHandler.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.protocol.connection.handler; import de.rub.nds.sshattacker.core.protocol.common.*; +import de.rub.nds.sshattacker.core.protocol.connection.Channel; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelFailureMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelFailureMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelFailureMessagePreparator; @@ -26,7 +27,22 @@ public ChannelFailureMessageHandler(SshContext context, ChannelFailureMessage me @Override public void adjustContext() { - // TODO: Handle ChannelFailureMessage + Integer recipientChannelId = message.getRecipientChannelId().getValue(); + Channel channel = context.getChannelManager().getChannelByLocalId(recipientChannelId); + if (channel != null) { + // Remove the failed request from the queue + if (channel.removeFirstSentRequestThatWantReply() == null) { + LOGGER.warn( + "{} received but no channel request was send before on channel with id {}.", + message.getClass().getSimpleName(), + message.getRecipientChannelId().getValue()); + } + } else { + LOGGER.warn( + "{} received but no channel with id {} found locally, ignoring it.", + message.getClass().getSimpleName(), + message.getRecipientChannelId().getValue()); + } } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestAuthAgentMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestAuthAgentMessageHandler.java index 49f8205e4..ec98576c4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestAuthAgentMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestAuthAgentMessageHandler.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestAuthAgentMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestAuthAgentMessageParser; @@ -16,7 +17,7 @@ import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestAuthAgentMessageHandler - extends SshMessageHandler { + extends SshMessageHandler implements MessageSentHandler { public ChannelRequestAuthAgentMessageHandler(SshContext context) { super(context); @@ -30,7 +31,14 @@ public ChannelRequestAuthAgentMessageHandler( @Override public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { - context.getChannelManager().addToChannelRequestResponseQueue(message); + context.getChannelManager().addReceivedRequestThatWantsReply(message); + } + } + + @Override + public void adjustContextAfterMessageSent() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + context.getChannelManager().addSentRequestThatWantsReply(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestBreakMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestBreakMessageHandler.java index b87bb3695..e8133a71b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestBreakMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestBreakMessageHandler.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestBreakMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestBreakMessageParser; @@ -15,8 +16,8 @@ import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; -public class ChannelRequestBreakMessageHandler - extends SshMessageHandler { +public class ChannelRequestBreakMessageHandler extends SshMessageHandler + implements MessageSentHandler { public ChannelRequestBreakMessageHandler(SshContext context) { super(context); } @@ -29,7 +30,14 @@ public ChannelRequestBreakMessageHandler( @Override public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { - context.getChannelManager().addToChannelRequestResponseQueue(message); + context.getChannelManager().addReceivedRequestThatWantsReply(message); + } + } + + @Override + public void adjustContextAfterMessageSent() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + context.getChannelManager().addSentRequestThatWantsReply(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestEnvMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestEnvMessageHandler.java index 72eb16c8f..73a1985c0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestEnvMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestEnvMessageHandler.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestEnvMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestEnvMessageParser; @@ -15,7 +16,8 @@ import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; -public class ChannelRequestEnvMessageHandler extends SshMessageHandler { +public class ChannelRequestEnvMessageHandler extends SshMessageHandler + implements MessageSentHandler { public ChannelRequestEnvMessageHandler(SshContext context) { super(context); @@ -28,7 +30,14 @@ public ChannelRequestEnvMessageHandler(SshContext context, ChannelRequestEnvMess @Override public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { - context.getChannelManager().addToChannelRequestResponseQueue(message); + context.getChannelManager().addReceivedRequestThatWantsReply(message); + } + } + + @Override + public void adjustContextAfterMessageSent() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + context.getChannelManager().addSentRequestThatWantsReply(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExecMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExecMessageHandler.java index f18e5dedf..fbaa3c644 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExecMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExecMessageHandler.java @@ -15,7 +15,8 @@ import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; -public class ChannelRequestExecMessageHandler extends SshMessageHandler { +public class ChannelRequestExecMessageHandler extends SshMessageHandler + implements MessageSentHandler { public ChannelRequestExecMessageHandler(SshContext context) { super(context); @@ -27,9 +28,15 @@ public ChannelRequestExecMessageHandler(SshContext context, ChannelRequestExecMe @Override public void adjustContext() { - // TODO: Handle ChannelRequestExecMessage if (Converter.byteToBoolean(message.getWantReply().getValue())) { - context.getChannelManager().addToChannelRequestResponseQueue(message); + context.getChannelManager().addReceivedRequestThatWantsReply(message); + } + } + + @Override + public void adjustContextAfterMessageSent() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + context.getChannelManager().addSentRequestThatWantsReply(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitSignalMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitSignalMessageHandler.java index 3e0066f22..bcd925c64 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitSignalMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitSignalMessageHandler.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestExitSignalMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestExitSignalMessageParser; @@ -16,7 +17,7 @@ import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestExitSignalMessageHandler - extends SshMessageHandler { + extends SshMessageHandler implements MessageSentHandler { public ChannelRequestExitSignalMessageHandler(SshContext context) { super(context); @@ -31,7 +32,15 @@ public ChannelRequestExitSignalMessageHandler( public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { // This should not happen, because WantReply should always be false - context.getChannelManager().addToChannelRequestResponseQueue(message); + context.getChannelManager().addReceivedRequestThatWantsReply(message); + } + } + + @Override + public void adjustContextAfterMessageSent() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + // This should not happen, because WantReply should always be false + context.getChannelManager().addSentRequestThatWantsReply(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitStatusMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitStatusMessageHandler.java index f3b1abb11..38ecf8c00 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitStatusMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitStatusMessageHandler.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestExitStatusMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestExitStatusMessageParser; @@ -16,7 +17,7 @@ import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestExitStatusMessageHandler - extends SshMessageHandler { + extends SshMessageHandler implements MessageSentHandler { public ChannelRequestExitStatusMessageHandler(SshContext context) { super(context); @@ -31,7 +32,15 @@ public ChannelRequestExitStatusMessageHandler( public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { // This should not happen, because WantReply should always be false - context.getChannelManager().addToChannelRequestResponseQueue(message); + context.getChannelManager().addReceivedRequestThatWantsReply(message); + } + } + + @Override + public void adjustContextAfterMessageSent() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + // This should not happen, because WantReply should always be false + context.getChannelManager().addSentRequestThatWantsReply(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestPtyMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestPtyMessageHandler.java index 8b30c5829..fd61c0295 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestPtyMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestPtyMessageHandler.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestPtyMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestPtyMessageParser; @@ -15,7 +16,8 @@ import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; -public class ChannelRequestPtyMessageHandler extends SshMessageHandler { +public class ChannelRequestPtyMessageHandler extends SshMessageHandler + implements MessageSentHandler { public ChannelRequestPtyMessageHandler(SshContext context) { super(context); @@ -28,7 +30,14 @@ public ChannelRequestPtyMessageHandler(SshContext context, ChannelRequestPtyMess @Override public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { - context.getChannelManager().addToChannelRequestResponseQueue(message); + context.getChannelManager().addReceivedRequestThatWantsReply(message); + } + } + + @Override + public void adjustContextAfterMessageSent() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + context.getChannelManager().addSentRequestThatWantsReply(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestShellMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestShellMessageHandler.java index 2c48316e7..5eeba2a59 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestShellMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestShellMessageHandler.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestShellMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestShellMessageParser; @@ -15,8 +16,8 @@ import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; -public class ChannelRequestShellMessageHandler - extends SshMessageHandler { +public class ChannelRequestShellMessageHandler extends SshMessageHandler + implements MessageSentHandler { public ChannelRequestShellMessageHandler(SshContext context) { super(context); @@ -30,7 +31,14 @@ public ChannelRequestShellMessageHandler( @Override public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { - context.getChannelManager().addToChannelRequestResponseQueue(message); + context.getChannelManager().addReceivedRequestThatWantsReply(message); + } + } + + @Override + public void adjustContextAfterMessageSent() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + context.getChannelManager().addSentRequestThatWantsReply(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSignalMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSignalMessageHandler.java index 80d89623f..090ec6eba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSignalMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSignalMessageHandler.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestSignalMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestSignalMessageParser; @@ -16,7 +17,7 @@ import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestSignalMessageHandler - extends SshMessageHandler { + extends SshMessageHandler implements MessageSentHandler { public ChannelRequestSignalMessageHandler(SshContext context) { super(context); @@ -31,7 +32,15 @@ public ChannelRequestSignalMessageHandler( public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { // This should not happen, because WantReply should always be false - context.getChannelManager().addToChannelRequestResponseQueue(message); + context.getChannelManager().addReceivedRequestThatWantsReply(message); + } + } + + @Override + public void adjustContextAfterMessageSent() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + // This should not happen, because WantReply should always be false + context.getChannelManager().addSentRequestThatWantsReply(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSubsystemMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSubsystemMessageHandler.java index 00452cc4a..06458358b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSubsystemMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSubsystemMessageHandler.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestSubsystemMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestSubsystemMessageParser; @@ -16,7 +17,7 @@ import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestSubsystemMessageHandler - extends SshMessageHandler { + extends SshMessageHandler implements MessageSentHandler { public ChannelRequestSubsystemMessageHandler(SshContext context) { super(context); } @@ -29,7 +30,14 @@ public ChannelRequestSubsystemMessageHandler( @Override public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { - context.getChannelManager().addToChannelRequestResponseQueue(message); + context.getChannelManager().addReceivedRequestThatWantsReply(message); + } + } + + @Override + public void adjustContextAfterMessageSent() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + context.getChannelManager().addSentRequestThatWantsReply(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestUnknownMessageHandler.java index 744818620..175235e85 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestUnknownMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestUnknownMessageHandler.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestUnknownMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestUnknownMessageParser; @@ -16,7 +17,7 @@ import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestUnknownMessageHandler - extends SshMessageHandler { + extends SshMessageHandler implements MessageSentHandler { public ChannelRequestUnknownMessageHandler(SshContext context) { super(context); @@ -30,7 +31,14 @@ public ChannelRequestUnknownMessageHandler( @Override public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { - context.getChannelManager().addToChannelRequestResponseQueue(message); + context.getChannelManager().addReceivedRequestThatWantsReply(message); + } + } + + @Override + public void adjustContextAfterMessageSent() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + context.getChannelManager().addSentRequestThatWantsReply(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestWindowChangeMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestWindowChangeMessageHandler.java index 6f11758a3..5aabcbfc0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestWindowChangeMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestWindowChangeMessageHandler.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestWindowChangeMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestWindowChangeMessageParser; @@ -16,7 +17,7 @@ import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestWindowChangeMessageHandler - extends SshMessageHandler { + extends SshMessageHandler implements MessageSentHandler { public ChannelRequestWindowChangeMessageHandler(SshContext context) { super(context); } @@ -30,7 +31,15 @@ public ChannelRequestWindowChangeMessageHandler( public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { // This should not happen, because WantReply should always be false - context.getChannelManager().addToChannelRequestResponseQueue(message); + context.getChannelManager().addReceivedRequestThatWantsReply(message); + } + } + + @Override + public void adjustContextAfterMessageSent() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + // This should not happen, because WantReply should always be false + context.getChannelManager().addSentRequestThatWantsReply(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestX11MessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestX11MessageHandler.java index 1276c44b3..781f1430f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestX11MessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestX11MessageHandler.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestX11Message; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestX11MessageParser; @@ -15,7 +16,8 @@ import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; -public class ChannelRequestX11MessageHandler extends SshMessageHandler { +public class ChannelRequestX11MessageHandler extends SshMessageHandler + implements MessageSentHandler { public ChannelRequestX11MessageHandler(SshContext context) { super(context); } @@ -27,7 +29,14 @@ public ChannelRequestX11MessageHandler(SshContext context, ChannelRequestX11Mess @Override public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { - context.getChannelManager().addToChannelRequestResponseQueue(message); + context.getChannelManager().addReceivedRequestThatWantsReply(message); + } + } + + @Override + public void adjustContextAfterMessageSent() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + context.getChannelManager().addSentRequestThatWantsReply(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestXonXoffMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestXonXoffMessageHandler.java index d0e95427d..00ada075f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestXonXoffMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestXonXoffMessageHandler.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestXonXoffMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestXonXoffMessageParser; @@ -16,7 +17,7 @@ import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestXonXoffMessageHandler - extends SshMessageHandler { + extends SshMessageHandler implements MessageSentHandler { public ChannelRequestXonXoffMessageHandler(SshContext context) { super(context); @@ -31,7 +32,15 @@ public ChannelRequestXonXoffMessageHandler( public void adjustContext() { if (Converter.byteToBoolean(message.getWantReply().getValue())) { // This should not happen, because WantReply should always be false - context.getChannelManager().addToChannelRequestResponseQueue(message); + context.getChannelManager().addReceivedRequestThatWantsReply(message); + } + } + + @Override + public void adjustContextAfterMessageSent() { + if (Converter.byteToBoolean(message.getWantReply().getValue())) { + // This should not happen, because WantReply should always be false + context.getChannelManager().addSentRequestThatWantsReply(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelSuccessMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelSuccessMessageHandler.java index 826b8a705..2adacbcb4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelSuccessMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelSuccessMessageHandler.java @@ -7,7 +7,12 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.constants.ChannelDataType; +import de.rub.nds.sshattacker.core.constants.ChannelRequestType; import de.rub.nds.sshattacker.core.protocol.common.*; +import de.rub.nds.sshattacker.core.protocol.connection.Channel; +import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestMessage; +import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestSubsystemMessage; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelSuccessMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelSuccessMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelSuccessMessagePreparator; @@ -26,7 +31,55 @@ public ChannelSuccessMessageHandler(SshContext context, ChannelSuccessMessage me @Override public void adjustContext() { - // TODO: Handle ChannelSuccessMessage + Integer recipientChannelId = message.getRecipientChannelId().getValue(); + Channel channel = context.getChannelManager().getChannelByLocalId(recipientChannelId); + if (channel != null) { + ChannelRequestMessage requestMessage = channel.removeFirstSentRequestThatWantReply(); + if (requestMessage != null) { + // Set the expected ChannelDataType corresponding to the request + ChannelDataType newDataTyp = ChannelDataType.UNSET; + switch (ChannelRequestType.fromName(requestMessage.getRequestType().getValue())) { + case PTY_REQ: + newDataTyp = ChannelDataType.PTY; + break; + case SHELL: + case EXEC: + newDataTyp = ChannelDataType.SHELL; + break; + case SUBSYSTEM: + if (((ChannelRequestSubsystemMessage) requestMessage) + .getSubsystemName() + .getValue() + .equals("sftp")) { + newDataTyp = ChannelDataType.SUBSYSTEM_SFTP; + } else { + newDataTyp = ChannelDataType.SUBSYSTEM_UNKNOWN; + } + + break; + default: + break; + } + if (newDataTyp != ChannelDataType.UNSET) { + ChannelDataType currentDataType = channel.getExpectedDataType(); + if (currentDataType == ChannelDataType.UNSET) { + channel.setExpectedDataType(newDataTyp); + } else if (currentDataType != newDataTyp) { + channel.setExpectedDataType(ChannelDataType.UNKNOWN); + } + } + } else { + LOGGER.warn( + "{} received but no channel request was send before on channel with id {}.", + message.getClass().getSimpleName(), + message.getRecipientChannelId().getValue()); + } + } else { + LOGGER.warn( + "{} received but no channel with id {} found locally, ignoring it.", + message.getClass().getSimpleName(), + message.getRecipientChannelId().getValue()); + } } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java index c251501f3..25b704fde 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java @@ -45,7 +45,7 @@ private void prepareChannel() { // ChannelMessages should only be sent for an opened channel channel = Optional.ofNullable(channelManager.getChannelByLocalId(localChannelId)) - .or(channelManager::guessChannelByReceivedMessages) + .or(channelManager::getChannelByReceivedRequestThatWantReply) .orElseGet( () -> { LOGGER.warn( diff --git a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializerTest.java b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializerTest.java index 1610c52d1..029566b39 100644 --- a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializerTest.java +++ b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializerTest.java @@ -34,9 +34,10 @@ public static Stream provideTestVectors() { */ @ParameterizedTest @MethodSource("provideTestVectors") - public void testSerialize(byte[] expectedBytes) { + public void testSerialize(byte[] expectedBytes, byte[] responseSpecificData) { GlobalRequestSuccessMessage msg = new GlobalRequestSuccessMessage(); msg.setMessageId(MessageIdConstant.SSH_MSG_REQUEST_SUCCESS); + msg.setResponseSpecificData(responseSpecificData); GlobalRequestSuccessMessageSerializer serializer = new GlobalRequestSuccessMessageSerializer(msg); diff --git a/SSH-Core/src/test/java/executing/NetcatWorkflow.java b/SSH-Core/src/test/java/executing/NetcatWorkflow.java index 2730b76ba..3cf5dca52 100755 --- a/SSH-Core/src/test/java/executing/NetcatWorkflow.java +++ b/SSH-Core/src/test/java/executing/NetcatWorkflow.java @@ -7,6 +7,7 @@ */ package executing; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthPasswordMessage; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelOpenSessionMessage; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestExecMessage; @@ -32,7 +33,6 @@ private NetcatWorkflow() { // integration test public static void main(String[] args) throws Exception { - State state = new State(); WorkflowTrace trace = new WorkflowTrace(); SendAction sendClientInit = new SendAction("client", new VersionExchangeMessage()); @@ -75,7 +75,8 @@ public static void main(String[] args) throws Exception { trace.addSshAction(sendChannelRequest); trace.addSshAction(receiveChannelResponse); - state.setWorkflowTrace(trace); + Config config = new Config(); + State state = new State(config, trace); DefaultWorkflowExecutor executor = new DefaultWorkflowExecutor(state); state.getConfig().setWorkflowExecutorShouldClose(false); executor.executeWorkflow(); diff --git a/SSH-Core/src/test/java/executing/NetcatWorkflowFactory.java b/SSH-Core/src/test/java/executing/NetcatWorkflowFactory.java index b99a8d049..f281f6e9e 100755 --- a/SSH-Core/src/test/java/executing/NetcatWorkflowFactory.java +++ b/SSH-Core/src/test/java/executing/NetcatWorkflowFactory.java @@ -8,6 +8,7 @@ package executing; import de.rub.nds.modifiablevariable.util.Modifiable; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.RunningModeType; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelDataMessage; import de.rub.nds.sshattacker.core.state.State; @@ -29,12 +30,12 @@ private NetcatWorkflowFactory() { // integration test public static void main(String[] args) throws Exception { - State state = new State(); + Config config = new Config(); + config.setDefaultRunningMode(RunningModeType.SERVER); WorkflowTrace trace = - new WorkflowConfigurationFactory(state.getConfig()) + new WorkflowConfigurationFactory(config) .createWorkflowTrace(WorkflowTraceType.FULL, RunningModeType.SERVER); - - state.setWorkflowTrace(trace); + State state = new State(config, trace); DefaultWorkflowExecutor executor = new DefaultWorkflowExecutor(state); state.getConfig().setWorkflowExecutorShouldClose(false); executor.executeWorkflow(); From 8255be57061c8919d77da3f9a4de960d7accfb39 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Tue, 29 Oct 2024 08:26:13 +0100 Subject: [PATCH 020/203] Implement parsing and serialization of data packets send over ChannelDataMessages. Implemented DataPackets, that can be used for protocols that are running on Channel Data (inluding AuthAgent). To provide same abstraction as classic SSH packets, I implemented it using AbstractDataPacket and provided PassThroughPacket, that really does nothing, and just pass through the data. This adds unnecessery complexety, but provides abstraction. To provide same abstraction as the classic SSH packet layer I implemented an AbstractDataPacketLayer (incuding Layers: DataPacketLayer and PassThroughPacketLayer). Tho this is not really necessery it only adds more complexity and extra objects that needs to be created. But maybe in future this abstraction is useful. Implemented StringDataMessages so Shell / Exec Commands, can be more easily created. Implemented UnknownDataMessage for data on ChannelDataMessages, that have no assosiated Parser. [SFTP] - Implemented basic Info and Version Message - Added Client Version and Server Version (with default 3) to: Chooser, Config, DefaultChooser, SshContext [ReceiveAction] - Added IGNORE_CHANNEL_DATA_WRAPPER Option, to ignore the ChannelDataMessage, because its data is parsed to a new message [WorkflowConfigurationFactory] - Added addSftpInitActions() --- .../nds/sshattacker/core/config/Config.java | 35 +++++ .../core/constants/ChannelType.java | 4 +- .../core/constants/DataPacketLayerType.java | 13 ++ .../constants/SftpPacketTypeConstant.java | 86 ++++++++++++ .../sshattacker/core/data/DataMessage.java | 12 ++ .../core/data/DataMessageLayer.java | 132 ++++++++++++++++++ .../core/data/packet/AbstractDataPacket.java | 73 ++++++++++ .../core/data/packet/DataPacket.java | 71 ++++++++++ .../core/data/packet/PassThroughPacket.java | 54 +++++++ .../packet/layer/AbstractDataPacketLayer.java | 60 ++++++++ .../data/packet/layer/DataPacketLayer.java | 46 ++++++ .../packet/layer/DataPacketLayerFactory.java | 31 ++++ .../layer/DataPacketLayerParseResult.java | 44 ++++++ .../packet/layer/PassThroughPacketLayer.java | 47 +++++++ .../parser/AbstractDataPacketParser.java | 18 +++ .../data/packet/parser/DataPacketParser.java | 38 +++++ .../parser/PassThroughPacketParser.java | 36 +++++ .../AbstractDataPacketPreparator.java | 20 +++ .../preparator/DataPacketPreparator.java | 23 +++ .../PassThroughPacketPreparator.java | 21 +++ .../AbstractDataPacketSerializer.java | 14 ++ .../serializer/DataPacketSerializer.java | 43 ++++++ .../PassThroughPacketSerializer.java | 42 ++++++ .../core/data/sftp/SftpMessage.java | 39 ++++++ .../core/data/sftp/SftpMessageHandler.java | 35 +++++ .../core/data/sftp/SftpMessageParser.java | 67 +++++++++ .../core/data/sftp/SftpMessagePreparator.java | 35 +++++ .../core/data/sftp/SftpMessageSerializer.java | 26 ++++ .../sftp/handler/SftpInitMessageHandler.java | 51 +++++++ .../handler/SftpUnknownMessageHandler.java | 58 ++++++++ .../handler/SftpVersionMessageHandler.java | 51 +++++++ .../data/sftp/message/SftpInitMessage.java | 36 +++++ .../data/sftp/message/SftpUnknownMessage.java | 47 +++++++ .../data/sftp/message/SftpVersionMessage.java | 36 +++++ .../sftp/parser/SftpInitMessageParser.java | 41 ++++++ .../sftp/parser/SftpUnknownMessageParser.java | 39 ++++++ .../sftp/parser/SftpVersionMessageParser.java | 41 ++++++ .../preperator/SftpInitMessagePreparator.java | 24 ++++ .../SftpUnknownMessagePreparator.java | 25 ++++ .../SftpVersionMessagePreparator.java | 24 ++++ .../serializer/SftpInitMessageSerializer.java | 32 +++++ .../SftpUnknownMessageSerializer.java | 29 ++++ .../SftpVersionMessageSerializer.java | 32 +++++ .../core/data/string/StringDataMessage.java | 40 ++++++ .../data/string/StringDataMessageHandler.java | 45 ++++++ .../data/string/StringDataMessageParser.java | 41 ++++++ .../string/StringDataMessagePreparator.java | 23 +++ .../string/StringDataMessageSerializer.java | 32 +++++ .../core/data/unknown/UnknownDataMessage.java | 40 ++++++ .../unknown/UnknownDataMessageHandler.java | 50 +++++++ .../unknown/UnknownDataMessageParser.java | 38 +++++ .../unknown/UnknownDataMessagePreparator.java | 22 +++ .../unknown/UnknownDataMessageSerializer.java | 28 ++++ .../protocol/connection/ChannelManager.java | 8 ++ .../parser/ChannelDataMessageParser.java | 2 +- .../ChannelDataMessageSerializer.java | 2 +- .../sshattacker/core/state/SshContext.java | 43 ++++++ .../core/workflow/action/MessageAction.java | 8 +- .../core/workflow/action/ReceiveAction.java | 40 +++++- .../action/executor/ReceiveMessageHelper.java | 8 ++ .../action/executor/SendMessageHelper.java | 17 ++- .../core/workflow/chooser/Chooser.java | 7 + .../core/workflow/chooser/DefaultChooser.java | 26 ++++ .../factory/WorkflowConfigurationFactory.java | 17 +++ .../string/StringDataMessageParserTest.java | 45 ++++++ .../StringDataMessageSerializerTest.java | 42 ++++++ 66 files changed, 2345 insertions(+), 10 deletions(-) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/DataPacketLayerType.java create mode 100755 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpPacketTypeConstant.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/AbstractDataPacket.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/DataPacket.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/PassThroughPacket.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/AbstractDataPacketLayer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayerFactory.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayerParseResult.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/PassThroughPacketLayer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/AbstractDataPacketParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/PassThroughPacketParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/preparator/AbstractDataPacketPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/preparator/DataPacketPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/preparator/PassThroughPacketPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/AbstractDataPacketSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/PassThroughPacketSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpUnknownMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpVersionMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpInitMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpVersionMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java create mode 100644 SSH-Core/src/test/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParserTest.java create mode 100644 SSH-Core/src/test/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializerTest.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 5626236ec..7a7a062dd 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -422,6 +422,15 @@ public class Config implements Serializable { // endregion + // region SFTP Version Exchange + /** SFTP Client protocol version */ + private Integer sftpClientVersion; + + /** SFTP Server protocol version */ + private Integer sftpServerVersion; + + // endregion + // region Workflow settings /** The path to load workflow trace from. The workflow trace must be stored in an XML-File. */ private String workflowInput; @@ -1087,6 +1096,11 @@ public Config() { outputFilters.add(FilterType.DEFAULT); applyFiltersInPlace = false; // endregion + + // region SFTP Version Exchange initialization + sftpClientVersion = 3; + sftpServerVersion = 3; + // endregion } // endregion @@ -1990,4 +2004,25 @@ public ChooserType getChooserType() { public void setChooserType(ChooserType chooserType) { this.chooserType = chooserType; } + + // region Getters for SFTP Version Exchange + public Integer getSftpClientVersion() { + return sftpClientVersion; + } + + public Integer getSftpServerVersion() { + return sftpServerVersion; + } + + // endregion + // region Setters for SFTP Version Exchange + public void setSftpClientVersion(Integer sftpClientVersion) { + this.sftpClientVersion = sftpClientVersion; + } + + public void setSftpServerVersion(Integer sftpServerVersion) { + this.sftpServerVersion = sftpServerVersion; + } + + // endregion } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/ChannelType.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/ChannelType.java index 3f3eee8f2..5496ec929 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/ChannelType.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/ChannelType.java @@ -16,6 +16,7 @@ public enum ChannelType { * Sources: * - https://www.iana.org/assignments/ssh-parameters/ssh-parameters.html#ssh-parameters-11 * - https://cvsweb.openbsd.org/src/usr.bin/ssh/PROTOCOL?annotate=HEAD + * - https://www.ietf.org/archive/id/draft-miller-ssh-agent-11.html for auth-agent-req@openssh.com */ // [ RFC 4254 ] SESSION("session"), @@ -26,7 +27,8 @@ public enum ChannelType { // [ OpenSSH ] TUN_OPENSSH_COM("tun@openssh.com"), DIRECT_STREAMLOCAL_OPENSSH_COM("direct-streamlocal@openssh.com"), - FORWARDED_STREAMLOCAL_OPENSSH_COM("forwarded-streamlocal@openssh.com"); + FORWARDED_STREAMLOCAL_OPENSSH_COM("forwarded-streamlocal@openssh.com"), + AUTH_AGENT_OPENSSH_COM("auth-agent@openssh.com"); private final String name; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/DataPacketLayerType.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/DataPacketLayerType.java new file mode 100644 index 000000000..14e4ebd46 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/DataPacketLayerType.java @@ -0,0 +1,13 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.constants; + +public enum DataPacketLayerType { + DATA, + PASS_THROUGH +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpPacketTypeConstant.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpPacketTypeConstant.java new file mode 100755 index 000000000..a40742662 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpPacketTypeConstant.java @@ -0,0 +1,86 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.constants; + +import java.util.*; + +public enum SftpPacketTypeConstant { + /* + * Sources: + * - https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-02 + */ + // [ Up to version 5 ] + // 1 - 2 protocol initialization + SSH_FXP_INIT((byte) 1), + SSH_FXP_VERSION((byte) 2), + // 2 - 20 requests from the client to the server + SSH_FXP_OPEN((byte) 3), + SSH_FXP_CLOSE((byte) 4), + SSH_FXP_READ((byte) 5), + SSH_FXP_WRITE((byte) 6), + SSH_FXP_LSTAT((byte) 7), + SSH_FXP_FSTAT((byte) 8), + SSH_FXP_SETSTAT((byte) 9), + SSH_FXP_FSETSTAT((byte) 10), + SSH_FXP_OPENDIR((byte) 11), + SSH_FXP_READDIR((byte) 12), + SSH_FXP_REMOVE((byte) 13), + SSH_FXP_MKDIR((byte) 14), + SSH_FXP_RMDIR((byte) 15), + SSH_FXP_REALPATH((byte) 16), + SSH_FXP_STAT((byte) 17), + SSH_FXP_RENAME((byte) 18), + SSH_FXP_READLINK((byte) 19), + SSH_FXP_SYMLINK((byte) 20), + // 100 - 105 responses from the server to the client + SSH_FXP_STATUS((byte) 101), + SSH_FXP_HANDLE((byte) 102), + SSH_FXP_DATA((byte) 103), + SSH_FXP_NAME((byte) 104), + SSH_FXP_ATTRS((byte) 105), + // 200 - 201 vendor specific extensions + SSH_FXP_EXTENDED((byte) 200), + SSH_FXP_EXTENDED_REPLY((byte) 201), + // [ Only version 6 ] + SSH_FXP_LINK((byte) 21), + SSH_FXP_BLOCK((byte) 22), + SSH_FXP_UNBLOCK((byte) 23), + // Unknown + UNKNOWN((byte) 255); + + private final byte id; + public static final Map map; + + static { + Map mutableMap = new TreeMap<>(); + for (SftpPacketTypeConstant constant : values()) { + mutableMap.put(constant.id, constant); + } + map = Collections.unmodifiableMap(mutableMap); + } + + SftpPacketTypeConstant(byte id) { + this.id = id; + } + + public byte getId() { + return id; + } + + public static String getNameById(byte id) { + if (map.containsKey(id)) { + return map.get(id).toString(); + } else { + return String.format("0x%02X", id); + } + } + + public static SftpPacketTypeConstant fromId(byte id) { + return map.get(id); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessage.java new file mode 100644 index 000000000..30c20d316 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessage.java @@ -0,0 +1,12 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data; + +import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessage; + +public abstract class DataMessage> extends ProtocolMessage {} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java new file mode 100644 index 000000000..d3978aa83 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java @@ -0,0 +1,132 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data; + +import de.rub.nds.sshattacker.core.constants.ChannelDataType; +import de.rub.nds.sshattacker.core.constants.DataPacketLayerType; +import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; +import de.rub.nds.sshattacker.core.data.packet.DataPacket; +import de.rub.nds.sshattacker.core.data.packet.PassThroughPacket; +import de.rub.nds.sshattacker.core.data.packet.layer.*; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessage; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; +import de.rub.nds.sshattacker.core.data.string.StringDataMessage; +import de.rub.nds.sshattacker.core.data.string.StringDataMessageParser; +import de.rub.nds.sshattacker.core.data.unknown.UnknownDataMessageParser; +import de.rub.nds.sshattacker.core.protocol.connection.Channel; +import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelDataMessage; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.util.Optional; +import java.util.stream.Stream; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class DataMessageLayer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SshContext context; + + public DataMessageLayer(SshContext context) { + super(); + this.context = context; + } + + public DataMessage parse(ChannelDataMessage message) { + // Query of the expected data type of the channel via which the message was received + Integer recepientChannelId = message.getRecipientChannelId().getValue(); + Channel channel = context.getChannelManager().getChannelByLocalId(recepientChannelId); + ChannelDataType dataType; + if (channel == null) { + dataType = ChannelDataType.UNKNOWN; + LOGGER.warn( + "ChannelDataMessage received but no channel with id {} found locally, processing it as unknown data.", + recepientChannelId); + } else { + dataType = channel.getExpectedDataType(); + } + + // Create correct data packet layer for expected data type + DataPacketLayerType layerType; + switch (dataType) { + case AUTH_AGENT: + case SUBSYSTEM_SFTP: + layerType = DataPacketLayerType.DATA; + break; + case SHELL: + layerType = DataPacketLayerType.PASS_THROUGH; + break; + default: + LOGGER.warn( + "Channel expected data type set to {}, but there is no packet layer implemented for it. Fall back to pass-through packet layer.", + dataType); + layerType = DataPacketLayerType.PASS_THROUGH; + } + AbstractDataPacketLayer packetLayer = + DataPacketLayerFactory.getDataPacketLayer(layerType, context); + + // Parse the packet according to expected data type + DataPacketLayerParseResult parseResult = + packetLayer.parsePacketSoftly(message.getData().getValue(), 0); + Optional parsedPacket = parseResult.getParsedPacket(); + if (parsedPacket.isPresent()) { + // Parse and return the message according to expected data type + switch (dataType) { + case SUBSYSTEM_SFTP: + return SftpMessageParser.delegateParsing(parsedPacket.get(), context); + case SHELL: + return new StringDataMessageParser(parsedPacket.get().getPayload().getValue()) + .parse(); + default: + LOGGER.debug("No parser implemented for ChannelDataType: {}", dataType); + return new UnknownDataMessageParser(parsedPacket.get().getPayload().getValue()) + .parse(); + } + } + return new UnknownDataMessageParser(message.getData().getValue()).parse(); + } + + public Stream> parse( + Stream dataMessageStream, ChannelDataType dataType) { + return dataMessageStream.map(this::parse); + } + + public ChannelDataMessage serialize(DataMessage message) { + // Create DataPacket and set serialized message as payload + AbstractDataPacket packet; + AbstractDataPacketLayer packetLayer; + if (message instanceof SftpMessage) { + packet = new DataPacket(); + packetLayer = new DataPacketLayer(context); + } else if (message instanceof StringDataMessage) { + packet = new PassThroughPacket(); + packetLayer = new PassThroughPacketLayer(context); + } else { + // Unknown Data Messages + packet = new PassThroughPacket(); + packetLayer = new PassThroughPacketLayer(context); + } + packet.setPayload(message.getHandler(context).getSerializer().serialize()); + + // Create and prepare ChannelDataMessage + ChannelDataMessage resultMessage = new ChannelDataMessage(); + resultMessage.getHandler(context).getPreparator().prepare(); + + // Set prepared and serialized packet as data of ChannelDataMessage + resultMessage.setData(packetLayer.preparePacket(packet), true); + + // TODO: If more than one channel is open: + // Try to set recipientChannelId to channel that expect that data type + + return resultMessage; + } + + public Stream serialize(Stream> messageStream) { + return messageStream.map(this::serialize); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/AbstractDataPacket.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/AbstractDataPacket.java new file mode 100644 index 000000000..d6b7a08bb --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/AbstractDataPacket.java @@ -0,0 +1,73 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.ModifiableVariableProperty; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.sshattacker.core.data.packet.parser.AbstractDataPacketParser; +import de.rub.nds.sshattacker.core.data.packet.preparator.AbstractDataPacketPreparator; +import de.rub.nds.sshattacker.core.data.packet.serializer.AbstractDataPacketSerializer; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +/** + * AbstractDataPacket are used for packets send over SSH-Channels as ChannelDataMessages + * + *

AbstractDataPacket do not utilize compression and encryption. + */ +public abstract class AbstractDataPacket extends ModifiableVariableHolder { + + /** + * This field contains the packet bytes sent over the network. This includes packet_length, + * padding_length, payload, padding and mac (some fields may be encrypted). + */ + @ModifiableVariableProperty(type = ModifiableVariableProperty.Type.CIPHERTEXT) + private ModifiableByteArray completePacketBytes; + + /** The useful contents of the packet. */ + @ModifiableVariableProperty(type = ModifiableVariableProperty.Type.PLAIN_PROTOCOL_MESSAGE) + private ModifiableByteArray payload; + + public ModifiableByteArray getCompletePacketBytes() { + return completePacketBytes; + } + + public void setCompletePacketBytes(ModifiableByteArray completePacketBytes) { + this.completePacketBytes = completePacketBytes; + } + + public void setCompletePacketBytes(byte[] completePacketBytes) { + this.completePacketBytes = + ModifiableVariableFactory.safelySetValue( + this.completePacketBytes, completePacketBytes); + } + + public ModifiableByteArray getPayload() { + return payload; + } + + public void setPayload(ModifiableByteArray payload) { + this.payload = payload; + } + + public void setPayload(byte[] payload) { + this.payload = ModifiableVariableFactory.safelySetValue(this.payload, payload); + } + + public abstract AbstractDataPacketPreparator getPacketPreparator( + Chooser chooser); + + public abstract AbstractDataPacketParser getPacketParser( + byte[] array, int startPosition); + + public abstract AbstractDataPacketSerializer + getPacketSerializer(); + + public abstract void prepareComputations(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/DataPacket.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/DataPacket.java new file mode 100644 index 000000000..5b5622cfd --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/DataPacket.java @@ -0,0 +1,71 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.ModifiableVariableProperty; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.data.packet.parser.DataPacketParser; +import de.rub.nds.sshattacker.core.data.packet.preparator.DataPacketPreparator; +import de.rub.nds.sshattacker.core.data.packet.serializer.DataPacketSerializer; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import java.util.Objects; + +/** DataPackets are used for protocols that start with a length field. */ +public class DataPacket extends AbstractDataPacket { + + /** The length of the packet in bytes, not including 'packet_length' field itself. */ + @ModifiableVariableProperty(type = ModifiableVariableProperty.Type.LENGTH) + private ModifiableInteger length; + + public ModifiableInteger getLength() { + return length; + } + + public void setLength(ModifiableInteger length) { + this.length = length; + } + + public void setLength(int length) { + this.length = ModifiableVariableFactory.safelySetValue(this.length, length); + } + + public DataPacketPreparator getPacketPreparator(Chooser chooser) { + return new DataPacketPreparator(chooser, this); + } + + public DataPacketParser getPacketParser(byte[] array, int startPosition) { + return new DataPacketParser(array, startPosition); + } + + @Override + public DataPacketSerializer getPacketSerializer() { + return new DataPacketSerializer(this); + } + + public void prepareComputations() {} + + @Override + public String toString() { + return "DataPacket{length=" + length + "}"; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + DataPacket that = (DataPacket) obj; + return Objects.equals(length, that.length) + && Objects.equals(getPayload(), that.getPayload()); + } + + @Override + public int hashCode() { + return Objects.hash(length, getPayload()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/PassThroughPacket.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/PassThroughPacket.java new file mode 100644 index 000000000..64d613daa --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/PassThroughPacket.java @@ -0,0 +1,54 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet; + +import de.rub.nds.sshattacker.core.data.packet.parser.PassThroughPacketParser; +import de.rub.nds.sshattacker.core.data.packet.preparator.PassThroughPacketPreparator; +import de.rub.nds.sshattacker.core.data.packet.serializer.PassThroughPacketSerializer; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import java.util.Objects; + +/** + * PassThroughPackets are used for data that does not have any packet structure. It just passes the + * data as is to the next layer. + */ +public class PassThroughPacket extends AbstractDataPacket { + + public PassThroughPacketPreparator getPacketPreparator(Chooser chooser) { + return new PassThroughPacketPreparator(chooser, this); + } + + public PassThroughPacketParser getPacketParser(byte[] array, int startPosition) { + return new PassThroughPacketParser(array, startPosition); + } + + @Override + public PassThroughPacketSerializer getPacketSerializer() { + return new PassThroughPacketSerializer(this); + } + + public void prepareComputations() {} + + @Override + public String toString() { + return "PassThroughPacket"; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + PassThroughPacket that = (PassThroughPacket) obj; + return Objects.equals(getPayload(), that.getPayload()); + } + + @Override + public int hashCode() { + return Objects.hash(getPayload()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/AbstractDataPacketLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/AbstractDataPacketLayer.java new file mode 100644 index 000000000..7a78db0d4 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/AbstractDataPacketLayer.java @@ -0,0 +1,60 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet.layer; + +import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; +import de.rub.nds.sshattacker.core.data.packet.preparator.AbstractDataPacketPreparator; +import de.rub.nds.sshattacker.core.data.packet.serializer.AbstractDataPacketSerializer; +import de.rub.nds.sshattacker.core.exceptions.ParserException; +import de.rub.nds.sshattacker.core.state.SshContext; + +/** + * An abstraction layer that can be used to define different packet layer types that can occur in + * channel data. + */ +public abstract class AbstractDataPacketLayer { + + protected final SshContext context; + + protected AbstractDataPacketLayer(SshContext context) { + super(); + this.context = context; + } + + /** + * Tries to parse a single packet from rawBytes at startPosition. If this is not possible a + * Parser Exception is thrown. + * + * @param rawBytes Bytes to parse + * @param startPosition Start position for parsing + * @return The parsed packet + * @throws ParserException Thrown whenever parsing the provided bytes fails + */ + public abstract DataPacketLayerParseResult parsePacket(byte[] rawBytes, int startPosition) + throws ParserException; + + /** + * Tries to parse a single packet from rawBytes at startPosition. Exception which might occur + * are handled. + * + * @param rawBytes Bytes to parse + * @param startPosition Start position for parsing + * @return The parsed packet + */ + public abstract DataPacketLayerParseResult parsePacketSoftly( + byte[] rawBytes, int startPosition); + + public byte[] preparePacket(AbstractDataPacket packet) { + AbstractDataPacketPreparator preparator = + packet.getPacketPreparator(context.getChooser()); + preparator.prepare(); + AbstractDataPacketSerializer serializer = + packet.getPacketSerializer(); + return serializer.serialize(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayer.java new file mode 100644 index 000000000..55ea900b9 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayer.java @@ -0,0 +1,46 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet.layer; + +import de.rub.nds.sshattacker.core.data.packet.DataPacket; +import de.rub.nds.sshattacker.core.data.packet.parser.DataPacketParser; +import de.rub.nds.sshattacker.core.exceptions.ParserException; +import de.rub.nds.sshattacker.core.state.SshContext; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class DataPacketLayer extends AbstractDataPacketLayer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public DataPacketLayer(SshContext context) { + super(context); + } + + @Override + public DataPacketLayerParseResult parsePacket(byte[] rawBytes, int startPosition) + throws ParserException { + try { + DataPacketParser parser = new DataPacketParser(rawBytes, startPosition); + DataPacket packet = parser.parse(); + return new DataPacketLayerParseResult(packet, parser.getPointer() - startPosition); + } catch (ParserException e) { + throw new ParserException("Could not parse provided data as data packet", e); + } + } + + @Override + public DataPacketLayerParseResult parsePacketSoftly(byte[] rawBytes, int startPosition) { + try { + return parsePacket(rawBytes, startPosition); + } catch (ParserException e) { + LOGGER.warn("Could not parse provided data as data packet, dropping remaining bytes"); + return new DataPacketLayerParseResult(null, rawBytes.length - startPosition, true); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayerFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayerFactory.java new file mode 100644 index 000000000..3671604ef --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayerFactory.java @@ -0,0 +1,31 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet.layer; + +import de.rub.nds.sshattacker.core.constants.DataPacketLayerType; +import de.rub.nds.sshattacker.core.state.SshContext; + +public final class DataPacketLayerFactory { + + public static AbstractDataPacketLayer getDataPacketLayer( + DataPacketLayerType type, SshContext context) { + switch (type) { + case DATA: + return new DataPacketLayer(context); + case PASS_THROUGH: + return new PassThroughPacketLayer(context); + default: + throw new UnsupportedOperationException( + "Packet layer type '" + type + "' not supported!"); + } + } + + private DataPacketLayerFactory() { + super(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayerParseResult.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayerParseResult.java new file mode 100644 index 000000000..f4a811184 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayerParseResult.java @@ -0,0 +1,44 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet.layer; + +import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; +import java.util.Optional; + +public class DataPacketLayerParseResult { + + private final AbstractDataPacket parsedPacket; + + private final int parsedByteCount; + + private final boolean failedParsing; + + public DataPacketLayerParseResult(AbstractDataPacket parsedPacket, int parsedByteCount) { + this(parsedPacket, parsedByteCount, false); + } + + public DataPacketLayerParseResult( + AbstractDataPacket parsedPacket, int parsedByteCount, boolean failedParsing) { + super(); + this.parsedPacket = parsedPacket; + this.parsedByteCount = parsedByteCount; + this.failedParsing = failedParsing; + } + + public Optional getParsedPacket() { + return Optional.ofNullable(parsedPacket); + } + + public int getParsedByteCount() { + return parsedByteCount; + } + + public boolean failedParsing() { + return failedParsing; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/PassThroughPacketLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/PassThroughPacketLayer.java new file mode 100644 index 000000000..39546b8b1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/PassThroughPacketLayer.java @@ -0,0 +1,47 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet.layer; + +import de.rub.nds.sshattacker.core.data.packet.PassThroughPacket; +import de.rub.nds.sshattacker.core.data.packet.parser.PassThroughPacketParser; +import de.rub.nds.sshattacker.core.exceptions.ParserException; +import de.rub.nds.sshattacker.core.state.SshContext; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class PassThroughPacketLayer extends AbstractDataPacketLayer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public PassThroughPacketLayer(SshContext context) { + super(context); + } + + @Override + public DataPacketLayerParseResult parsePacket(byte[] rawBytes, int startPosition) + throws ParserException { + try { + PassThroughPacketParser parser = new PassThroughPacketParser(rawBytes, startPosition); + PassThroughPacket packet = parser.parse(); + return new DataPacketLayerParseResult(packet, parser.getPointer() - startPosition); + } catch (ParserException e) { + throw new ParserException("Could not parse provided data as pass-through packet", e); + } + } + + @Override + public DataPacketLayerParseResult parsePacketSoftly(byte[] rawBytes, int startPosition) { + try { + return parsePacket(rawBytes, startPosition); + } catch (ParserException e) { + LOGGER.warn( + "Could not parse provided data as pass-through packet, dropping remaining bytes"); + return new DataPacketLayerParseResult(null, rawBytes.length - startPosition, true); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/AbstractDataPacketParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/AbstractDataPacketParser.java new file mode 100644 index 000000000..ec9946d6f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/AbstractDataPacketParser.java @@ -0,0 +1,18 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet.parser; + +import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; +import de.rub.nds.sshattacker.core.protocol.common.Parser; + +public abstract class AbstractDataPacketParser extends Parser { + + protected AbstractDataPacketParser(byte[] array, int startPosition) { + super(array, startPosition); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java new file mode 100644 index 000000000..4082b607e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet.parser; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.*; +import de.rub.nds.sshattacker.core.data.packet.DataPacket; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class DataPacketParser extends AbstractDataPacketParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public DataPacketParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public DataPacket parse() { + LOGGER.debug("Parsing DataPacket from serialized bytes:"); + DataPacket packet = new DataPacket(); + packet.setLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + packet.setPayload(parseByteArrayField(packet.getLength().getValue())); + packet.setCompletePacketBytes(getAlreadyParsed()); + + LOGGER.trace( + "Complete packet bytes: {}", + ArrayConverter.bytesToHexString(packet.getCompletePacketBytes().getValue())); + + return packet; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/PassThroughPacketParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/PassThroughPacketParser.java new file mode 100644 index 000000000..fe32b6041 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/PassThroughPacketParser.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet.parser; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.data.packet.PassThroughPacket; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class PassThroughPacketParser extends AbstractDataPacketParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public PassThroughPacketParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public PassThroughPacket parse() { + LOGGER.trace("Parsing PassThroughPacket from serialized bytes:"); + PassThroughPacket packet = new PassThroughPacket(); + packet.setPayload(parseByteArrayField(getBytesLeft())); + packet.setCompletePacketBytes(getAlreadyParsed()); + + LOGGER.trace( + "Complete packet bytes: {}", + ArrayConverter.bytesToHexString(packet.getCompletePacketBytes().getValue())); + + return packet; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/preparator/AbstractDataPacketPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/preparator/AbstractDataPacketPreparator.java new file mode 100644 index 000000000..ed269fff8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/preparator/AbstractDataPacketPreparator.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet.preparator; + +import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; +import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public abstract class AbstractDataPacketPreparator + extends Preparator { + + protected AbstractDataPacketPreparator(Chooser chooser, T object) { + super(chooser, object); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/preparator/DataPacketPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/preparator/DataPacketPreparator.java new file mode 100644 index 000000000..e2bd06898 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/preparator/DataPacketPreparator.java @@ -0,0 +1,23 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet.preparator; + +import de.rub.nds.sshattacker.core.data.packet.DataPacket; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class DataPacketPreparator extends AbstractDataPacketPreparator { + + public DataPacketPreparator(Chooser chooser, DataPacket dataPacket) { + super(chooser, dataPacket); + } + + @Override + public void prepare() { + getObject().setLength(getObject().getPayload().getValue().length); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/preparator/PassThroughPacketPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/preparator/PassThroughPacketPreparator.java new file mode 100644 index 000000000..f9c8ff21f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/preparator/PassThroughPacketPreparator.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet.preparator; + +import de.rub.nds.sshattacker.core.data.packet.PassThroughPacket; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class PassThroughPacketPreparator extends AbstractDataPacketPreparator { + + public PassThroughPacketPreparator(Chooser chooser, PassThroughPacket passThroughPacket) { + super(chooser, passThroughPacket); + } + + @Override + public void prepare() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/AbstractDataPacketSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/AbstractDataPacketSerializer.java new file mode 100644 index 000000000..e7cb3d5d8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/AbstractDataPacketSerializer.java @@ -0,0 +1,14 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet.serializer; + +import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; +import de.rub.nds.sshattacker.core.protocol.common.Serializer; + +public abstract class AbstractDataPacketSerializer + extends Serializer {} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java new file mode 100644 index 000000000..07bde6919 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java @@ -0,0 +1,43 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet.serializer; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.packet.DataPacket; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class DataPacketSerializer extends AbstractDataPacketSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final DataPacket dataPacket; + + public DataPacketSerializer(DataPacket dataPacket) { + super(); + this.dataPacket = dataPacket; + } + + @Override + protected void serializeBytes() { + LOGGER.debug("Serializing DataPacket to bytes:"); + + appendInt(dataPacket.getLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("Packet length: {}", dataPacket.getLength().getValue()); + + appendBytes(dataPacket.getPayload().getValue()); + LOGGER.debug( + "Payload: {}", ArrayConverter.bytesToHexString(dataPacket.getPayload().getValue())); + + dataPacket.setCompletePacketBytes(getAlreadySerialized()); + LOGGER.trace( + "Complete packet bytes: {}", + ArrayConverter.bytesToHexString(dataPacket.getCompletePacketBytes().getValue())); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/PassThroughPacketSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/PassThroughPacketSerializer.java new file mode 100644 index 000000000..780e2f99d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/PassThroughPacketSerializer.java @@ -0,0 +1,42 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.packet.serializer; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.data.packet.DataPacket; +import de.rub.nds.sshattacker.core.data.packet.PassThroughPacket; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class PassThroughPacketSerializer extends AbstractDataPacketSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final PassThroughPacket passThroughPacket; + + public PassThroughPacketSerializer(PassThroughPacket passThroughPacket) { + super(); + this.passThroughPacket = passThroughPacket; + } + + @Override + protected void serializeBytes() { + LOGGER.trace("Serializing PassThroughPacket to bytes:"); + + appendBytes(passThroughPacket.getPayload().getValue()); + LOGGER.trace( + "Payload: {}", + ArrayConverter.bytesToHexString(passThroughPacket.getPayload().getValue())); + + passThroughPacket.setCompletePacketBytes(getAlreadySerialized()); + LOGGER.trace( + "Complete packet bytes: {}", + ArrayConverter.bytesToHexString( + passThroughPacket.getCompletePacketBytes().getValue())); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessage.java new file mode 100644 index 000000000..5edecafd7 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessage.java @@ -0,0 +1,39 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.DataMessage; + +public abstract class SftpMessage> extends DataMessage { + + protected ModifiableByte packetType; + + public ModifiableByte getPacketType() { + return packetType; + } + + public void setPacketType(ModifiableByte packetType) { + this.packetType = packetType; + } + + public void setPacketType(byte packetType) { + this.packetType = ModifiableVariableFactory.safelySetValue(this.packetType, packetType); + } + + public void setPacketType(SftpPacketTypeConstant packetType) { + setPacketType(packetType.getId()); + } + + @Override + public String toCompactString() { + return getClass().getSimpleName(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageHandler.java new file mode 100644 index 000000000..f3fe5297e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageHandler.java @@ -0,0 +1,35 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp; + +import de.rub.nds.sshattacker.core.protocol.common.*; +import de.rub.nds.sshattacker.core.state.SshContext; + +public abstract class SftpMessageHandler> + extends ProtocolMessageHandler { + + protected SftpMessageHandler(SshContext context) { + super(context); + } + + protected SftpMessageHandler(SshContext context, T message) { + super(context, message); + } + + @Override + public abstract SftpMessageParser getParser(byte[] array); + + @Override + public abstract SftpMessageParser getParser(byte[] array, int startPosition); + + @Override + public abstract SftpMessagePreparator getPreparator(); + + @Override + public abstract SftpMessageSerializer getSerializer(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java new file mode 100644 index 000000000..f1ffd4d62 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java @@ -0,0 +1,67 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.constants.SshMessageConstants; +import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpInitMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpUnknownMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpVersionMessageParser; +import de.rub.nds.sshattacker.core.exceptions.ParserException; +import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessageParser; +import de.rub.nds.sshattacker.core.state.SshContext; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpMessageParser> extends ProtocolMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpMessageParser(byte[] array) { + super(array); + } + + protected SftpMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected final void parseProtocolMessageContents() { + parsePacketType(); + parseMessageSpecificContents(); + } + + protected abstract void parseMessageSpecificContents(); + + private void parsePacketType() { + message.setPacketType(parseByteField(SshMessageConstants.MESSAGE_ID_LENGTH)); + } + + public static SftpMessage delegateParsing(AbstractDataPacket packet, SshContext context) { + byte[] raw = packet.getPayload().getValue(); + + try { + switch (SftpPacketTypeConstant.fromId(raw[0])) { + case SSH_FXP_INIT: + return new SftpInitMessageParser(raw).parse(); + case SSH_FXP_VERSION: + return new SftpVersionMessageParser(raw).parse(); + default: + LOGGER.debug( + "Received unimplemented SFTP Message {} ({})", + SftpPacketTypeConstant.getNameById(raw[0]), + raw[0]); + return new SftpUnknownMessageParser(raw).parse(); + } + } catch (ParserException e) { + LOGGER.debug("Error while Parsing, now parsing as UnknownMessage", e); + return new SftpUnknownMessageParser(raw).parse(); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessagePreparator.java new file mode 100644 index 000000000..56b14469b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessagePreparator.java @@ -0,0 +1,35 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessagePreparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public abstract class SftpMessagePreparator> + extends ProtocolMessagePreparator { + + private final Byte packetType; + + protected SftpMessagePreparator(Chooser chooser, T message, SftpPacketTypeConstant packetType) { + this(chooser, message, packetType.getId()); + } + + protected SftpMessagePreparator(Chooser chooser, T message, byte packetType) { + super(chooser, message); + this.packetType = packetType; + } + + @Override + public final void prepareProtocolMessageContents() { + getObject().setPacketType(packetType); + prepareMessageSpecificContents(); + } + + protected abstract void prepareMessageSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageSerializer.java new file mode 100644 index 000000000..a416c2995 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageSerializer.java @@ -0,0 +1,26 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp; + +import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessageSerializer; + +public abstract class SftpMessageSerializer> + extends ProtocolMessageSerializer { + + protected SftpMessageSerializer(T message) { + super(message); + } + + @Override + protected final void serializeProtocolMessageContents() { + appendByte(message.getPacketType().getValue()); + serializeMessageSpecificContents(); + } + + public abstract void serializeMessageSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java new file mode 100644 index 000000000..728b6ac68 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpInitMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpInitMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpInitMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpInitMessageHandler extends SftpMessageHandler { + + public SftpInitMessageHandler(SshContext context) { + super(context); + } + + public SftpInitMessageHandler(SshContext context, SftpInitMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle + } + + @Override + public SftpInitMessageParser getParser(byte[] array) { + return new SftpInitMessageParser(array); + } + + @Override + public SftpInitMessageParser getParser(byte[] array, int startPosition) { + return new SftpInitMessageParser(array, startPosition); + } + + @Override + public SftpInitMessagePreparator getPreparator() { + return new SftpInitMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpInitMessageSerializer getSerializer() { + return new SftpInitMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpUnknownMessageHandler.java new file mode 100644 index 000000000..3bc8020fc --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpUnknownMessageHandler.java @@ -0,0 +1,58 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpUnknownMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpUnknownMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpUnknownMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpUnknownMessageHandler extends SftpMessageHandler { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpUnknownMessageHandler(SshContext context) { + super(context); + } + + public SftpUnknownMessageHandler(SshContext context, SftpUnknownMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + LOGGER.debug( + "Received unknown message:\n{}", + ArrayConverter.bytesToHexString(message.getPayload())); + } + + @Override + public SftpUnknownMessageParser getParser(byte[] array) { + return new SftpUnknownMessageParser(array); + } + + @Override + public SftpUnknownMessageParser getParser(byte[] array, int startPosition) { + return new SftpUnknownMessageParser(array, startPosition); + } + + @Override + public SftpUnknownMessagePreparator getPreparator() { + return new SftpUnknownMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpUnknownMessageSerializer getSerializer() { + return new SftpUnknownMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java new file mode 100644 index 000000000..1ebfc6cdf --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpVersionMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpVersionMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpVersionMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpVersionMessageHandler extends SftpMessageHandler { + + public SftpVersionMessageHandler(SshContext context) { + super(context); + } + + public SftpVersionMessageHandler(SshContext context, SftpVersionMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle + } + + @Override + public SftpVersionMessageParser getParser(byte[] array) { + return new SftpVersionMessageParser(array); + } + + @Override + public SftpVersionMessageParser getParser(byte[] array, int startPosition) { + return new SftpVersionMessageParser(array, startPosition); + } + + @Override + public SftpVersionMessagePreparator getPreparator() { + return new SftpVersionMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpVersionMessageSerializer getSerializer() { + return new SftpVersionMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java new file mode 100644 index 000000000..3af9ecac6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessage; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpInitMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpInitMessage extends SftpMessage { + + private ModifiableInteger version; + + public ModifiableInteger getVersion() { + return version; + } + + public void setVersion(ModifiableInteger version) { + this.version = version; + } + + public void setVersion(Integer version) { + this.version = ModifiableVariableFactory.safelySetValue(this.version, version); + } + + @Override + public SftpInitMessageHandler getHandler(SshContext context) { + return new SftpInitMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java new file mode 100644 index 000000000..46e0d36f3 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java @@ -0,0 +1,47 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessage; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpUnknownMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpUnknownMessage extends SftpMessage { + + private ModifiableByteArray payload; + + public ModifiableByteArray getPayload() { + return payload; + } + + public void setPayload(ModifiableByteArray payload) { + this.payload = payload; + } + + public void setPayload(byte[] payload) { + this.payload = ModifiableVariableFactory.safelySetValue(this.payload, payload); + } + + @Override + public String toCompactString() { + if (packetType != null && packetType.getValue() != null) { + return "SftpUnknownMessage (" + + SftpPacketTypeConstant.getNameById(packetType.getValue()) + + ")"; + } + return "SftpUnknownMessage (no id set)"; + } + + @Override + public SftpUnknownMessageHandler getHandler(SshContext context) { + return new SftpUnknownMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java new file mode 100644 index 000000000..c6d1bc9a3 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessage; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpVersionMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpVersionMessage extends SftpMessage { + + private ModifiableInteger version; + + public ModifiableInteger getVersion() { + return version; + } + + public void setVersion(ModifiableInteger version) { + this.version = version; + } + + public void setVersion(Integer version) { + this.version = ModifiableVariableFactory.safelySetValue(this.version, version); + } + + @Override + public SftpVersionMessageHandler getHandler(SshContext context) { + return new SftpVersionMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java new file mode 100644 index 000000000..9c5c8739b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpInitMessageParser extends SftpMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpInitMessageParser(byte[] array) { + super(array); + } + + public SftpInitMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpInitMessage createMessage() { + return new SftpInitMessage(); + } + + public void parseMessageSpecificContents() { + parseVersion(); + } + + private void parseVersion() { + message.setVersion(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("Version: {}", message.getVersion().getValue()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java new file mode 100644 index 000000000..9683b14d1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java @@ -0,0 +1,39 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpUnknownMessageParser extends SftpMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpUnknownMessageParser(byte[] array) { + super(array); + } + + public SftpUnknownMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpUnknownMessage createMessage() { + return new SftpUnknownMessage(); + } + + @Override + protected void parseMessageSpecificContents() { + message.setPayload(parseByteArrayField(getBytesLeft())); + LOGGER.debug( + "Payload: {}", ArrayConverter.bytesToRawHexString(message.getPayload().getValue())); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpVersionMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpVersionMessageParser.java new file mode 100644 index 000000000..09b524044 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpVersionMessageParser.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpVersionMessageParser extends SftpMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpVersionMessageParser(byte[] array) { + super(array); + } + + public SftpVersionMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpVersionMessage createMessage() { + return new SftpVersionMessage(); + } + + public void parseMessageSpecificContents() { + parseVersion(); + } + + private void parseVersion() { + message.setVersion(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("Version: {}", message.getVersion().getValue()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java new file mode 100644 index 000000000..88e286226 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java @@ -0,0 +1,24 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpInitMessagePreparator extends SftpMessagePreparator { + + public SftpInitMessagePreparator(Chooser chooser, SftpInitMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_INIT); + } + + public void prepareMessageSpecificContents() { + getObject().setVersion(chooser.getSftpClientVersion()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java new file mode 100644 index 000000000..f20ccf4fa --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java @@ -0,0 +1,25 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpUnknownMessagePreparator extends SftpMessagePreparator { + + public SftpUnknownMessagePreparator(Chooser chooser, SftpUnknownMessage message) { + super(chooser, message, SftpPacketTypeConstant.UNKNOWN); + } + + @Override + public void prepareMessageSpecificContents() { + getObject().setPayload(new byte[0]); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java new file mode 100644 index 000000000..50970b6eb --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java @@ -0,0 +1,24 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpVersionMessagePreparator extends SftpMessagePreparator { + + public SftpVersionMessagePreparator(Chooser chooser, SftpVersionMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_VERSION); + } + + public void prepareMessageSpecificContents() { + getObject().setVersion(chooser.getSftpClientVersion()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpInitMessageSerializer.java new file mode 100644 index 000000000..58019354f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpInitMessageSerializer.java @@ -0,0 +1,32 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpInitMessageSerializer extends SftpMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpInitMessageSerializer(SftpInitMessage message) { + super(message); + } + + private void serializeVersion() { + LOGGER.debug("Version: {}", message.getVersion().getValue()); + appendInt(message.getVersion().getValue(), DataFormatConstants.UINT32_SIZE); + } + + public void serializeMessageSpecificContents() { + serializeVersion(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java new file mode 100644 index 000000000..1f3d1935f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java @@ -0,0 +1,29 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpUnknownMessageSerializer extends SftpMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpUnknownMessageSerializer(SftpUnknownMessage message) { + super(message); + } + + @Override + public void serializeMessageSpecificContents() { + LOGGER.debug("Payload: {}", ArrayConverter.bytesToHexString(message.getPayload())); + appendBytes(message.getPayload().getValue()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpVersionMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpVersionMessageSerializer.java new file mode 100644 index 000000000..8c3770ca1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpVersionMessageSerializer.java @@ -0,0 +1,32 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpVersionMessageSerializer extends SftpMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpVersionMessageSerializer(SftpVersionMessage message) { + super(message); + } + + private void serializeVersion() { + LOGGER.debug("Version: {}", message.getVersion().getValue()); + appendInt(message.getVersion().getValue(), DataFormatConstants.UINT32_SIZE); + } + + public void serializeMessageSpecificContents() { + serializeVersion(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessage.java new file mode 100644 index 000000000..166679f38 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessage.java @@ -0,0 +1,40 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.string; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.DataMessage; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class StringDataMessage extends DataMessage { + + private ModifiableString data; + + public ModifiableString getData() { + return data; + } + + public void setData(ModifiableString data) { + this.data = data; + } + + public void setData(String data) { + this.data = ModifiableVariableFactory.safelySetValue(this.data, data); + } + + @Override + public String toCompactString() { + return getClass().getSimpleName(); + } + + @Override + public StringDataMessageHandler getHandler(SshContext context) { + return new StringDataMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageHandler.java new file mode 100644 index 000000000..8d9e8f163 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageHandler.java @@ -0,0 +1,45 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.string; + +import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class StringDataMessageHandler extends ProtocolMessageHandler { + + public StringDataMessageHandler(SshContext context) { + super(context); + } + + public StringDataMessageHandler(SshContext context, StringDataMessage message) { + super(context, message); + } + + @Override + public void adjustContext() {} + + @Override + public StringDataMessageParser getParser(byte[] array) { + return new StringDataMessageParser(array); + } + + @Override + public StringDataMessageParser getParser(byte[] array, int startPosition) { + return new StringDataMessageParser(array, startPosition); + } + + @Override + public StringDataMessagePreparator getPreparator() { + return new StringDataMessagePreparator(context.getChooser(), message); + } + + @Override + public StringDataMessageSerializer getSerializer() { + return new StringDataMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java new file mode 100644 index 000000000..7e0ebcfb2 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.string; + +import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessageParser; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class StringDataMessageParser extends ProtocolMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public StringDataMessageParser(byte[] array) { + super(array); + } + + public StringDataMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public StringDataMessage createMessage() { + return new StringDataMessage(); + } + + private void parseData() { + message.setData(parseByteString(getBytesLeft(), StandardCharsets.UTF_8)); + LOGGER.debug("Data: {}", message.getData().getValue()); + } + + @Override + public void parseProtocolMessageContents() { + parseData(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java new file mode 100644 index 000000000..7faefb1c8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java @@ -0,0 +1,23 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.string; + +import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessagePreparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class StringDataMessagePreparator extends ProtocolMessagePreparator { + + public StringDataMessagePreparator(Chooser chooser, StringDataMessage message) { + super(chooser, message); + } + + public void prepareProtocolMessageContents() { + // TODO dummy values for fuzzing + getObject().setData("ls /"); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java new file mode 100644 index 000000000..4b3af1b1c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java @@ -0,0 +1,32 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.string; + +import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessageSerializer; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class StringDataMessageSerializer extends ProtocolMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public StringDataMessageSerializer(StringDataMessage message) { + super(message); + } + + private void serializeData() { + LOGGER.debug("Data: {}", message.getData().getValue()); + appendString(message.getData().getValue(), StandardCharsets.UTF_8); + } + + @Override + public final void serializeProtocolMessageContents() { + serializeData(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessage.java new file mode 100644 index 000000000..80c8d1caa --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessage.java @@ -0,0 +1,40 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.unknown; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.sshattacker.core.data.DataMessage; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class UnknownDataMessage extends DataMessage { + + private ModifiableByteArray payload; + + public ModifiableByteArray getPayload() { + return payload; + } + + public void setPayload(ModifiableByteArray payload) { + this.payload = payload; + } + + public void setPayload(byte[] payload) { + this.payload = ModifiableVariableFactory.safelySetValue(this.payload, payload); + } + + @Override + public String toCompactString() { + return getClass().getSimpleName(); + } + + @Override + public UnknownDataMessageHandler getHandler(SshContext context) { + return new UnknownDataMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageHandler.java new file mode 100644 index 000000000..966a4f6e7 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageHandler.java @@ -0,0 +1,50 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.unknown; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class UnknownDataMessageHandler extends ProtocolMessageHandler { + + public UnknownDataMessageHandler(SshContext context) { + super(context); + } + + public UnknownDataMessageHandler(SshContext context, UnknownDataMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + LOGGER.debug( + "Received unknown data message:\n{}", + ArrayConverter.bytesToHexString(message.getPayload())); + } + + @Override + public UnknownDataMessageParser getParser(byte[] array) { + return new UnknownDataMessageParser(array); + } + + @Override + public UnknownDataMessageParser getParser(byte[] array, int startPosition) { + return new UnknownDataMessageParser(array, startPosition); + } + + @Override + public UnknownDataMessagePreparator getPreparator() { + return new UnknownDataMessagePreparator(context.getChooser(), message); + } + + @Override + public UnknownDataMessageSerializer getSerializer() { + return new UnknownDataMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java new file mode 100644 index 000000000..b30eb6b34 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.unknown; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessageParser; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class UnknownDataMessageParser extends ProtocolMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public UnknownDataMessageParser(byte[] array) { + super(array); + } + + public UnknownDataMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public UnknownDataMessage createMessage() { + return new UnknownDataMessage(); + } + + @Override + public void parseProtocolMessageContents() { + message.setPayload(parseByteArrayField(getBytesLeft())); + LOGGER.debug( + "Payload: {}", ArrayConverter.bytesToRawHexString(message.getPayload().getValue())); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessagePreparator.java new file mode 100644 index 000000000..fbe0bbc28 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessagePreparator.java @@ -0,0 +1,22 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.unknown; + +import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessagePreparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class UnknownDataMessagePreparator extends ProtocolMessagePreparator { + + public UnknownDataMessagePreparator(Chooser chooser, UnknownDataMessage message) { + super(chooser, message); + } + + public void prepareProtocolMessageContents() { + getObject().setPayload(new byte[0]); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java new file mode 100644 index 000000000..1469fafae --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java @@ -0,0 +1,28 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.unknown; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessageSerializer; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class UnknownDataMessageSerializer extends ProtocolMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public UnknownDataMessageSerializer(UnknownDataMessage message) { + super(message); + } + + @Override + public final void serializeProtocolMessageContents() { + LOGGER.debug("Payload: {}", ArrayConverter.bytesToHexString(message.getPayload())); + appendBytes(message.getPayload().getValue()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/ChannelManager.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/ChannelManager.java index a7cc08b7a..aa3d0bd90 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/ChannelManager.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/ChannelManager.java @@ -139,6 +139,10 @@ public Channel getPendingChannelByLocalId(Integer localId) { return pendingChannelsByLocalId.get(localId); } + public int countChannels() { + return channelsByLocalId.size(); + } + public void addPendingChannel(Channel channel) { if (channel.getLocalChannelId().getValue() == null) { throw new ChannelManagerException( @@ -159,6 +163,10 @@ public boolean containsPendingChannelWithLocalId(Integer localId) { return pendingChannelsByLocalId.containsKey(localId); } + public int countPendingChannels() { + return pendingChannelsByLocalId.size(); + } + public void confirmPendingChannel(Channel channel) { removePendingChannel(channel); addChannel(channel); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java index a50e1d174..760893a2d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java @@ -34,7 +34,7 @@ private void parseData() { message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Data length: {}", message.getDataLength().getValue()); message.setData(parseByteArrayField(message.getDataLength().getValue())); - LOGGER.debug("Data: {}", ArrayConverter.bytesToRawHexString(message.getData().getValue())); + LOGGER.debug("Data: {}", ArrayConverter.bytesToHexString(message.getData().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java index 61dfa15c6..71751aeee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java @@ -24,7 +24,7 @@ public ChannelDataMessageSerializer(ChannelDataMessage message) { private void serializeData() { LOGGER.debug("Data length: {}", message.getDataLength().getValue()); appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Data: {}", ArrayConverter.bytesToRawHexString(message.getData().getValue())); + LOGGER.debug("Data: {}", ArrayConverter.bytesToHexString(message.getData().getValue())); appendBytes(message.getData().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java index 1804dcf94..f1691ce02 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java @@ -16,6 +16,7 @@ import de.rub.nds.sshattacker.core.crypto.kex.HybridKeyExchange; import de.rub.nds.sshattacker.core.crypto.kex.RsaKeyExchange; import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; +import de.rub.nds.sshattacker.core.data.DataMessageLayer; import de.rub.nds.sshattacker.core.exceptions.ConfigurationException; import de.rub.nds.sshattacker.core.exceptions.TransportHandlerConnectException; import de.rub.nds.sshattacker.core.packet.cipher.keys.KeySet; @@ -63,6 +64,9 @@ public class SshContext { /** A layer to serialize messages */ private MessageLayer messageLayer = new MessageLayer(this); + /** A layer to serialize data messages to ChannelDataMessages */ + private DataMessageLayer dataMessageLayer = new DataMessageLayer(this); + /** * Sequence number used to generate MAC when sending packages. The sequence number is unsigned, * initialized to 0 and wraps around at 2^32. @@ -333,6 +337,15 @@ public class SshContext { // TODO: Implement channel requests in such a way that allows specification within the XML file // endregion + // region SFTP Version Exchange + /** SFTP Client protocol version */ + private Integer sftpClientVersion; + + /** SFTP Server protocol version */ + private Integer sftpServerVersion; + + // endregion + /** If set to true, an SSH_MSG_DISCONNECT has been received from the remote peer */ private boolean disconnectMessageReceived; @@ -473,6 +486,14 @@ public void setMessageLayer(MessageLayer messageLayer) { this.messageLayer = messageLayer; } + public DataMessageLayer getDataMessageLayer() { + return dataMessageLayer; + } + + public void setDataMessageLayer(DataMessageLayer dataMessageLayer) { + this.dataMessageLayer = dataMessageLayer; + } + // region Getters and Setters for Sequence Numbers public int getWriteSequenceNumber() { return writeSequenceNumber; @@ -1199,4 +1220,26 @@ public boolean isHandleAsClient() { public void setHandleAsClient(boolean handleAsClient) { this.handleAsClient = handleAsClient; } + + // region Getters for SFTP Version Exchange Fields + public Optional getSftpClientVersion() { + return Optional.ofNullable(sftpClientVersion); + } + + public Optional getSftpServerVersion() { + return Optional.ofNullable(sftpServerVersion); + } + + // endregion + // region Setters for SFTP Version Exchange Fields + public void setSftpClientVersion(Integer sftpClientVersion) { + this.sftpClientVersion = sftpClientVersion; + } + + public void setSftpServerVersion(Integer sftpServerVersion) { + this.sftpServerVersion = sftpServerVersion; + } + + // endregion + } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java index ec34dcc7b..c3f2be837 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java @@ -9,6 +9,9 @@ import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.sshattacker.core.connection.AliasedConnection; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; import de.rub.nds.sshattacker.core.protocol.authentication.message.*; import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessage; import de.rub.nds.sshattacker.core.protocol.connection.message.*; @@ -119,7 +122,10 @@ public abstract class MessageAction extends ConnectionBoundAction { @XmlElement(type = UnimplementedMessage.class, name = "UnimplementedMessage"), @XmlElement(type = UnknownMessage.class, name = "UnknownMessage"), @XmlElement(type = VersionExchangeMessage.class, name = "VersionExchange"), - @XmlElement(type = AsciiMessage.class, name = "AsciiMessage") + @XmlElement(type = AsciiMessage.class, name = "AsciiMessage"), + @XmlElement(type = SftpInitMessage.class, name = "SftpInit"), + @XmlElement(type = SftpVersionMessage.class, name = "SftpVersion"), + @XmlElement(type = SftpUnknownMessage.class, name = "SftpUnknown") }) protected List> messages = new ArrayList<>(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java index caeaf90a7..2e62611e4 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java @@ -9,6 +9,9 @@ import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.sshattacker.core.connection.AliasedConnection; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; import de.rub.nds.sshattacker.core.exceptions.WorkflowExecutionException; import de.rub.nds.sshattacker.core.packet.AbstractPacket; import de.rub.nds.sshattacker.core.packet.BinaryPacket; @@ -130,7 +133,10 @@ public class ReceiveAction extends MessageAction implements ReceivingAction { @XmlElement(type = VersionExchangeMessage.class, name = "VersionExchange"), @XmlElement(type = AsciiMessage.class, name = "AsciiMessage"), @XmlElement(type = HybridKeyExchangeInitMessage.class, name = "HybridKeyExchangeInit"), - @XmlElement(type = HybridKeyExchangeReplyMessage.class, name = "HybridKeyExchangeReply") + @XmlElement(type = HybridKeyExchangeReplyMessage.class, name = "HybridKeyExchangeReply"), + @XmlElement(type = SftpInitMessage.class, name = "SftpInit"), + @XmlElement(type = SftpVersionMessage.class, name = "SftpVersion"), + @XmlElement(type = SftpUnknownMessage.class, name = "SftpUnknown") }) protected List> expectedMessages = new ArrayList<>(); @@ -166,6 +172,12 @@ public class ReceiveAction extends MessageAction implements ReceivingAction { */ @XmlElement protected Boolean ignoreUnexpectedChannelWindowAdjusts; + /** + * Set to {@code true} if the {@link ReceiveOption#IGNORE_CHANNEL_DATA_WRAPPER} option has been + * set. + */ + @XmlElement protected Boolean ignoreChannelDataWrapper; + @HoldsModifiableVariable @XmlElementWrapper @XmlElements({ @@ -345,6 +357,9 @@ public boolean executedAsPlanned() { // - the `IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS` // receive option is set and the actual message is an // SSH_MSG_CHANNEL_WINDOW_ADJUST. + // - the `IGNORE_CHANNEL_DATA_WRAPPER` + // receive option is set and the actual message is an + // SSH_MSG_CHANNEL_DATA. // // In these cases, ignore the received message and check if the // next received message matches the expected message. @@ -362,7 +377,9 @@ public boolean executedAsPlanned() { || !hasReceiveOption(ReceiveOption.FAIL_ON_UNEXPECTED_DEBUG_MESSAGES) && actualMessage instanceof DebugMessage || hasReceiveOption(ReceiveOption.IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS) - && actualMessage instanceof ChannelWindowAdjustMessage) { + && actualMessage instanceof ChannelWindowAdjustMessage + || hasReceiveOption(ReceiveOption.IGNORE_CHANNEL_DATA_WRAPPER) + && actualMessage instanceof ChannelDataMessage) { LOGGER.debug("Ignoring message of type {}.", actualMessage.toCompactString()); continue; } @@ -441,6 +458,9 @@ protected boolean hasReceiveOption(ReceiveOption option) { case IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS: value = ignoreUnexpectedChannelWindowAdjusts; break; + case IGNORE_CHANNEL_DATA_WRAPPER: + value = ignoreChannelDataWrapper; + break; } return value != null && value; @@ -474,6 +494,8 @@ public void setReceiveOptions(Set receiveOptions) { receiveOptions.contains(ReceiveOption.FAIL_ON_UNEXPECTED_DEBUG_MESSAGES); ignoreUnexpectedChannelWindowAdjusts = receiveOptions.contains(ReceiveOption.IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS); + ignoreChannelDataWrapper = + receiveOptions.contains(ReceiveOption.IGNORE_CHANNEL_DATA_WRAPPER); if (hasReceiveOption(ReceiveOption.CHECK_ONLY_EXPECTED) && hasReceiveOption(ReceiveOption.FAIL_ON_UNEXPECTED_IGNORE_MESSAGES)) { @@ -582,7 +604,19 @@ public enum ReceiveOption { * @see RFC 4254, * section 5.2 "Data Transfer" */ - IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS; + IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS, + /** + * Ignore unexpected {@code SSH_MSG_CHANNEL_DATA} messages when checking if the reception + * action was executed as planned. + * + *

The data of the ChannelDataMessages are parsed into a separate message. It is + * therefore practical to ignore the {@code SSH_MSG_CHANNEL_DATA} and only expect the + * messages that were transmitted via channel data. + * + * @see RFC 4254, + * section 5.2 "Data Transfer" + */ + IGNORE_CHANNEL_DATA_WRAPPER; public static Set bundle(ReceiveOption... receiveOptions) { return new HashSet<>(Arrays.asList(receiveOptions)); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java index 6249f79ef..ab85d753a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java @@ -13,6 +13,7 @@ import de.rub.nds.sshattacker.core.packet.AbstractPacket; import de.rub.nds.sshattacker.core.packet.layer.PacketLayerParseResult; import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessage; +import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelDataMessage; import de.rub.nds.sshattacker.core.protocol.transport.message.DisconnectMessage; import de.rub.nds.sshattacker.core.state.SshContext; import java.io.IOException; @@ -143,6 +144,13 @@ public static MessageActionResult handleReceivedBytes( message.getHandler(context).adjustContext(); retrievedPackets.add(parsedPacket.get()); parsedMessages.add(message); + + if (message instanceof ChannelDataMessage) { + // Parse ChannelDataMessage + ProtocolMessage innerMessage = + context.getDataMessageLayer().parse((ChannelDataMessage) message); + parsedMessages.add(innerMessage); + } } dataPointer += parseResult.getParsedByteCount(); } while (dataPointer < receivedBytes.length); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java index bb813c083..057f44600 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java @@ -7,16 +7,17 @@ */ package de.rub.nds.sshattacker.core.workflow.action.executor; +import de.rub.nds.sshattacker.core.data.DataMessage; import de.rub.nds.sshattacker.core.packet.AbstractPacket; import de.rub.nds.sshattacker.core.packet.layer.AbstractPacketLayer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessage; -import de.rub.nds.sshattacker.core.protocol.common.layer.MessageLayer; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.tlsattacker.transport.TransportHandler; import java.io.IOException; import java.util.Collections; +import java.util.List; import java.util.stream.Stream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -36,14 +37,24 @@ public static void sendPacket(SshContext context, AbstractPacket packet) throws } public static MessageActionResult sendMessage(SshContext context, ProtocolMessage message) { - MessageLayer messageLayer = context.getMessageLayer(); try { - AbstractPacket packet = messageLayer.serialize(message); + ProtocolMessage innerMessage = null; + if (message instanceof DataMessage) { + // Serialize data message to ChannelDataMessage + innerMessage = message; + message = context.getDataMessageLayer().serialize((DataMessage) message); + } + + AbstractPacket packet = context.getMessageLayer().serialize(message); sendPacket(context, packet); Handler handler = message.getHandler(context); if (handler instanceof MessageSentHandler) { ((MessageSentHandler) handler).adjustContextAfterMessageSent(); } + if (innerMessage != null) { + return new MessageActionResult( + Collections.singletonList(packet), List.of(message, innerMessage)); + } return new MessageActionResult( Collections.singletonList(packet), Collections.singletonList(message)); } catch (IOException e) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java index 09daf7199..da3f69344 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java @@ -250,4 +250,11 @@ public CompressionMethod getReceiveCompressionMethod() { // endregion public abstract AuthenticationMethod getAuthenticationMethod(); + + // region SFTP Version Exchange + public abstract Integer getSftpClientVersion(); + + public abstract Integer getSftpServerVersion(); + + // endregion } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java index 7bf27d05a..7c886d7bc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java @@ -1019,4 +1019,30 @@ public Integer getMaximalDhGroupSize() { public AuthenticationMethod getAuthenticationMethod() { return config.getAuthenticationMethod(); } + + // region SFTP + /** + * Retrieves the SFTP client version from context. If no version was received (i.e. out-of-order + * workflow or SSH-Attacker is running in client mode), the SFTP client version from config will + * be returned. + * + * @return The SFTP protocol version of the client + */ + @Override + public Integer getSftpClientVersion() { + return context.getSftpClientVersion().orElse(config.getSftpClientVersion()); + } + + /** + * Retrieves the SFTP server version from context. If no version was received (i.e. out-of-order + * workflow or SSH-Attacker is running in server mode), the SFTP server version from config will + * be returned. + * + * @return The SFTP protocol version of the server + */ + @Override + public Integer getSftpServerVersion() { + return context.getSftpServerVersion().orElse(config.getSftpServerVersion()); + } + // endregion } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java index 09b831351..7d7581e31 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java @@ -13,6 +13,8 @@ import de.rub.nds.sshattacker.core.constants.KeyExchangeFlowType; import de.rub.nds.sshattacker.core.constants.PacketLayerType; import de.rub.nds.sshattacker.core.constants.RunningModeType; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; import de.rub.nds.sshattacker.core.exceptions.ConfigurationException; import de.rub.nds.sshattacker.core.protocol.authentication.message.*; import de.rub.nds.sshattacker.core.protocol.connection.message.*; @@ -155,6 +157,7 @@ public WorkflowTrace createSftpInitWorkflowTrace() { // Connection Protocol Actions addChannelOpenActions(workflow); addChannelRequestSubsystemActions(workflow); + addSftpInitActions(workflow); return workflow; } @@ -552,6 +555,20 @@ public void addGlobalRequestActions(WorkflowTrace workflow) { .IGNORE_UNEXPECTED_GLOBAL_REQUESTS_WITHOUT_WANTREPLY))); } + public void addSftpInitActions(WorkflowTrace workflow) { + AliasedConnection connection = getDefaultConnection(); + workflow.addSshActions( + SshActionFactory.createMessageAction( + connection, ConnectionEndType.CLIENT, new SftpInitMessage()), + SshActionFactory.withReceiveOptions( + SshActionFactory.createMessageAction( + connection, ConnectionEndType.SERVER, new SftpVersionMessage()), + Set.of( + ReceiveAction.ReceiveOption.IGNORE_CHANNEL_DATA_WRAPPER, + ReceiveAction.ReceiveOption + .IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS))); + } + private WorkflowTrace createSimpleMitmProxyWorkflow() { WorkflowTrace workflow = new WorkflowTrace(); diff --git a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParserTest.java b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParserTest.java new file mode 100644 index 000000000..5c65041b2 --- /dev/null +++ b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParserTest.java @@ -0,0 +1,45 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.string; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import java.util.stream.Stream; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public class StringDataMessageParserTest { + /** + * Provides a stream of test vectors for the StringDataMessageParser class + * + * @return A stream of test vectors to feed the testParse unit test + */ + public static Stream provideTestVectors() { + return Stream.of( + Arguments.of(ArrayConverter.hexStringToByteArray("6C73202F"), "ls /"), + Arguments.of(ArrayConverter.hexStringToByteArray("6C73202F726F6F74"), "ls /root"), + Arguments.of(ArrayConverter.hexStringToByteArray("6364202E2E"), "cd ..")); + } + + /** + * Test of StringDataMessageParser::parse method + * + * @param providedBytes Bytes to parse + * @param expectedPayload Expected payload of the message + */ + @ParameterizedTest + @MethodSource("provideTestVectors") + public void testParse(byte[] providedBytes, String expectedPayload) { + StringDataMessageParser parser = new StringDataMessageParser(providedBytes); + StringDataMessage msg = parser.parse(); + + assertEquals(expectedPayload, msg.getData().getValue()); + } +} diff --git a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializerTest.java b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializerTest.java new file mode 100644 index 000000000..5afe86ab1 --- /dev/null +++ b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializerTest.java @@ -0,0 +1,42 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.string; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; + +import java.util.stream.Stream; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +public class StringDataMessageSerializerTest { + /** + * Provides a stream of test vectors for the StringDataMessageSerializer class + * + * @return A stream of test vectors to feed the testSerialize unit test + */ + public static Stream provideTestVectors() { + return StringDataMessageParserTest.provideTestVectors(); + } + + /** + * Test of StringDataMessageSerializer::serialize method + * + * @param expectedBytes Expected output bytes of the serialize() call + * @param providedPayload Payload of the message + */ + @ParameterizedTest + @MethodSource("provideTestVectors") + public void testSerialize(byte[] expectedBytes, String providedPayload) { + StringDataMessage msg = new StringDataMessage(); + msg.setData(providedPayload); + StringDataMessageSerializer serializer = new StringDataMessageSerializer(msg); + + assertArrayEquals(expectedBytes, serializer.serialize()); + } +} From be87f3bbe97c54389d93d9688c867eff0f4ab921 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Tue, 29 Oct 2024 10:07:41 +0100 Subject: [PATCH 021/203] Add checks if Data Layer consumed all bytes of ChannelDataMessages --- .../core/data/DataMessageLayer.java | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java index d3978aa83..f497b1d4a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java @@ -73,20 +73,40 @@ public DataMessage parse(ChannelDataMessage message) { // Parse the packet according to expected data type DataPacketLayerParseResult parseResult = packetLayer.parsePacketSoftly(message.getData().getValue(), 0); + if (parseResult.getParsedByteCount() < message.getDataLength().getValue()) { + LOGGER.warn( + "Data packet did not consume complete channel data. Only parsed {} of {} bytes.", + parseResult.getParsedByteCount(), + message.getDataLength().getValue()); + } Optional parsedPacket = parseResult.getParsedPacket(); if (parsedPacket.isPresent()) { + DataMessage resultMessage; // Parse and return the message according to expected data type switch (dataType) { case SUBSYSTEM_SFTP: - return SftpMessageParser.delegateParsing(parsedPacket.get(), context); + resultMessage = SftpMessageParser.delegateParsing(parsedPacket.get(), context); + break; case SHELL: - return new StringDataMessageParser(parsedPacket.get().getPayload().getValue()) - .parse(); + resultMessage = + new StringDataMessageParser(parsedPacket.get().getPayload().getValue()) + .parse(); + break; default: LOGGER.debug("No parser implemented for ChannelDataType: {}", dataType); - return new UnknownDataMessageParser(parsedPacket.get().getPayload().getValue()) - .parse(); + resultMessage = + new UnknownDataMessageParser(parsedPacket.get().getPayload().getValue()) + .parse(); + } + + if (resultMessage.getCompleteResultingMessage().getValue().length + < parsedPacket.get().getPayload().getValue().length) { + LOGGER.warn( + "Data message did not consume complete data packet. Only parsed {} of {} bytes.", + resultMessage.getCompleteResultingMessage().getValue().length, + parsedPacket.get().getPayload().getValue().length); } + return resultMessage; } return new UnknownDataMessageParser(message.getData().getValue()).parse(); } From 31f0dd402ec22fb3fb1f6f73f7c292ab26afa82e Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 30 Oct 2024 12:34:09 +0100 Subject: [PATCH 022/203] [SFTP] - Added SFTP Extension mechanism - Extensions can be set via Configuration - No explicit extention yet implemented. Only Unknown Extension - Added SFTP File Attributs and Extended Attribtue - Added Abstract SFTP Request and Response In contrast to the SSH Messages, I implemended the preperators so, that if, values already set, these values will not be overwritten / prepared with defaults. This allows the creation of SFTP Messages with explicit values without using ModifiableVariable modification. This could also be implemented for the SSH Messages, if it proofs to be useful. --- .gitignore | 4 + .../nds/sshattacker/core/config/Config.java | 47 +++++ .../core/constants/SftpExtension.java | 87 +++++++++ .../core/constants/SftpFileAttributeFlag.java | 38 ++++ .../sftp/handler/SftpInitMessageHandler.java | 4 +- .../handler/SftpVersionMessageHandler.java | 4 +- .../attribute/SftpFileAttributesHandler.java | 55 ++++++ .../SftpFileExtendedAttributeHandler.java | 56 ++++++ .../SftpAbstractExtensionHandler.java | 30 +++ .../SftpUnknownExtensionHandler.java | 52 ++++++ .../sftp/message/SftpHandshakeMessage.java | 63 +++++++ .../data/sftp/message/SftpInitMessage.java | 20 +- .../data/sftp/message/SftpRequestMessage.java | 29 +++ .../sftp/message/SftpResponseMessage.java | 29 +++ .../data/sftp/message/SftpVersionMessage.java | 19 +- .../message/attribute/SftpFileAttributes.java | 176 ++++++++++++++++++ .../attribute/SftpFileExtendedAttribute.java | 105 +++++++++++ .../extension/SftpAbstractExtension.java | 64 +++++++ .../extension/SftpUnknownExtension.java | 64 +++++++ .../parser/SftpHandshakeMessageParser.java | 69 +++++++ .../sftp/parser/SftpInitMessageParser.java | 18 +- .../sftp/parser/SftpRequestMessageParser.java | 40 ++++ .../parser/SftpResponseMessageParser.java | 40 ++++ .../sftp/parser/SftpVersionMessageParser.java | 17 +- .../attribute/SftpFileAttributesParser.java | 102 ++++++++++ .../SftpFileExtendedAttributeParser.java | 53 ++++++ .../SftpAbstractExtensionParser.java | 50 +++++ .../extension/SftpUnknownExtensionParser.java | 41 ++++ .../preperator/SftpInitMessagePreparator.java | 16 +- .../SftpRequestMessagePreparator.java | 30 +++ .../SftpResponseMessagePreparator.java | 30 +++ .../SftpUnknownMessagePreparator.java | 4 +- .../SftpVersionMessagePreparator.java | 16 +- .../SftpFileAttributesPreparator.java | 72 +++++++ .../SftpFileExtendedAttributePreparator.java | 37 ++++ .../SftpAbstractExtensionPreparator.java | 27 +++ .../SftpUnknownExtensionPreparator.java | 36 ++++ .../SftpHandshakeMessageSerializer.java | 42 +++++ .../serializer/SftpInitMessageSerializer.java | 17 +- .../SftpRequestMessageSerializer.java | 36 ++++ .../SftpResponseMessageSerializer.java | 36 ++++ .../SftpVersionMessageSerializer.java | 18 +- .../SftpFileAttributesSerializer.java | 96 ++++++++++ .../SftpFileExtendedAttributeSerializer.java | 51 +++++ .../SftpAbstractExtensionSerializer.java | 43 +++++ .../SftpUnknownExtensionSerializer.java | 32 ++++ .../core/protocol/common/Parser.java | 14 ++ .../core/protocol/common/Serializer.java | 22 ++- .../message/ExtensionInfoMessage.java | 4 + .../transport/message/PingMessage.java | 4 +- .../transport/message/PongMessage.java | 8 +- .../extension/UnknownExtensionParser.java | 5 +- .../sshattacker/core/state/SshContext.java | 35 ++++ .../core/workflow/chooser/Chooser.java | 10 + .../core/workflow/chooser/DefaultChooser.java | 27 +++ 55 files changed, 2031 insertions(+), 113 deletions(-) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileAttributeFlag.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileAttributesHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileExtendedAttributeHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpAbstractExtensionHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpUnknownExtensionHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileExtendedAttribute.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpUnknownExtension.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpUnknownExtensionParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java diff --git a/.gitignore b/.gitignore index 86804cb38..e843249a6 100755 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,7 @@ nbactions.xml # VS Code .factorypath .vscode + +# IntelliJ +.idea/*.iml + diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 7a7a062dd..46c1eb592 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -14,6 +14,8 @@ import de.rub.nds.sshattacker.core.constants.*; import de.rub.nds.sshattacker.core.crypto.ec.PointFormatter; import de.rub.nds.sshattacker.core.crypto.keys.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpUnknownExtension; import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationResponse; import de.rub.nds.sshattacker.core.protocol.connection.ChannelDefaults; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.*; @@ -431,6 +433,19 @@ public class Config implements Serializable { // endregion + // region SSH Extensions + /** List of SFTP extensions supported by the client */ + @XmlElementWrapper + @XmlElements({@XmlElement(type = SftpUnknownExtension.class, name = "SftpUnknownExtension")}) + private List> sftpClientSupportedExtensions; + + /** List of SFTP extensions supported by the server */ + @XmlElementWrapper + @XmlElements({@XmlElement(type = SftpUnknownExtension.class, name = "SftpUnknownExtension")}) + private List> sftpServerSupportedExtensions; + + // endregion + // region Workflow settings /** The path to load workflow trace from. The workflow trace must be stored in an XML-File. */ private String workflowInput; @@ -1101,6 +1116,12 @@ public Config() { sftpClientVersion = 3; sftpServerVersion = 3; // endregion + + // region SFTP Extension + sftpClientSupportedExtensions = new ArrayList<>(); + sftpServerSupportedExtensions = new ArrayList<>(); + + // endregion } // endregion @@ -2025,4 +2046,30 @@ public void setSftpServerVersion(Integer sftpServerVersion) { } // endregion + + // region Getters SFTP Extensions + + // section general extensions + public List> getSftpClientSupportedExtensions() { + return sftpClientSupportedExtensions; + } + + public List> getSftpServerSupportedExtensions() { + return sftpServerSupportedExtensions; + } + + // endregion + + // region Setters SFTP Extensions + + // section general extensions + public void setSftpClientSupportedExtensions( + List> clientSupportedExtensions) { + this.sftpClientSupportedExtensions = clientSupportedExtensions; + } + + public void setSftpServerSupportedExtensions( + List> serverSupportedExtensions) { + this.sftpServerSupportedExtensions = serverSupportedExtensions; + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java new file mode 100644 index 000000000..93654e2b3 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java @@ -0,0 +1,87 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.constants; + +import java.util.Map; +import java.util.TreeMap; + +public enum SftpExtension { + /* + * Sources: + * - https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-extensions-00 + * - 2. vendor-id + * - 3. check-file + * - 4. space-available + * - 5. home-directory + * - 6. copy-file + * - 7. copy-data + * - http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/usr.bin/ssh/PROTOCOL + * - 4.3. posix-rename@openssh.com + * - 4.4. statvfs@openssh.com + * - 4.5. hardlink@openssh.com + * - 4.6. fsync@openssh.com + * - 4.7. lsetstat@openssh.com + * - 4.8. limits@openssh.com + * - 4.9. expand-path@openssh.com + * - 4.10. expand-path@openssh.com + * - 4.12. users-groups-by-id@openssh.com + */ + // SFTP + VENDOR_ID("vendor-id"), + CHECK_FILE("check-file"), + SPACE_AVAILABLE("space-available"), + HOME_DIRECTORY("home-directory"), + COPY_FILE("copy-file"), + COPY_DATA("copy-data"), + GET_TEMP_FOLDER("get-temp-folder"), + MAKE_TEMP_FOLDER("make-temp-folder"), + // Vendor extensions + POSIX_RENAME_OPENSSH_COM("posix-rename@openssh.com"), + STAT_VFS_OPENSSH_COM("statvfs@openssh.com"), + HARDLINK_OPENSSH_COM("hardlink@openssh.com"), + FSYNC_OPENSSH_COM("fsync@openssh.com"), + L_SET_STAT("lsetstat@openssh.com"), + LIMITS("limits@openssh.com"), + EXPAND_PATH("expand-path@openssh.com"), + USERS_GROUPS_BY_ID("users-groups-by-id@openssh.com"), + + UNKNOWN(null); + + private final String name; + + private static final Map map; + + static { + map = new TreeMap<>(); + for (SftpExtension extension : values()) { + if (extension.name != null) { + map.put(extension.name, extension); + } + } + } + + SftpExtension(String name) { + this.name = name; + } + + @Override + public String toString() { + return name; + } + + public String getName() { + return name; + } + + public static SftpExtension fromName(String name) { + if (map.containsKey(name)) { + return map.get(name); + } + return UNKNOWN; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileAttributeFlag.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileAttributeFlag.java new file mode 100644 index 000000000..658b173dd --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileAttributeFlag.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.constants; + +public enum SftpFileAttributeFlag { + SSH_FILEXFER_ATTR_SIZE(0x00000001), + SSH_FILEXFER_ATTR_UIDGID(0x00000002), + SSH_FILEXFER_ATTR_PERMISSIONS(0x00000004), + SSH_FILEXFER_ATTR_ACMODTIME(0x00000008), + SSH_FILEXFER_ATTR_EXTENDED(0x80000000); + + private final int value; + + SftpFileAttributeFlag(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + + public static boolean isFlagSet(int attributes, SftpFileAttributeFlag attribute) { + return (attributes & attribute.value) != 0; + } + + public static int getFlags(SftpFileAttributeFlag... attributes) { + int result = 0; + for (SftpFileAttributeFlag attribute : attributes) { + result |= attribute.value; // Use bitwise OR to set each flag + } + return result; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java index 728b6ac68..56101690f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java @@ -26,7 +26,9 @@ public SftpInitMessageHandler(SshContext context, SftpInitMessage message) { @Override public void adjustContext() { - // TODO: Handle + context.setSftpClientVersion(message.getVersion().getValue()); + context.setSftpClientSupportedExtensions(message.getExtensions()); + message.getExtensions().forEach(extension -> extension.getHandler(context).adjustContext()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java index 1ebfc6cdf..000aae833 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java @@ -26,7 +26,9 @@ public SftpVersionMessageHandler(SshContext context, SftpVersionMessage message) @Override public void adjustContext() { - // TODO: Handle + context.setSftpServerVersion(message.getVersion().getValue()); + context.setSftpServerSupportedExtensions(message.getExtensions()); + message.getExtensions().forEach(extension -> extension.getHandler(context).adjustContext()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileAttributesHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileAttributesHandler.java new file mode 100644 index 000000000..d90a58667 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileAttributesHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.attribute; + +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.attribute.SftpFileAttributesPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.attribute.SftpFileAttributesSerializer; +import de.rub.nds.sshattacker.core.protocol.common.Handler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpFileAttributesHandler implements Handler { + + private final SshContext context; + + private final SftpFileAttributes attributes; + + public SftpFileAttributesHandler(SshContext context) { + this(context, null); + } + + public SftpFileAttributesHandler(SshContext context, SftpFileAttributes attributes) { + super(); + this.context = context; + this.attributes = attributes; + } + + @Override + public void adjustContext() {} + + @Override + public SftpFileAttributesParser getParser(byte[] array) { + return new SftpFileAttributesParser(array); + } + + @Override + public SftpFileAttributesParser getParser(byte[] array, int startPosition) { + return new SftpFileAttributesParser(array, startPosition); + } + + @Override + public SftpFileAttributesPreparator getPreparator() { + return new SftpFileAttributesPreparator(context.getChooser(), attributes); + } + + @Override + public SftpFileAttributesSerializer getSerializer() { + return new SftpFileAttributesSerializer(attributes); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileExtendedAttributeHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileExtendedAttributeHandler.java new file mode 100644 index 000000000..c5eb5fe1f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileExtendedAttributeHandler.java @@ -0,0 +1,56 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.attribute; + +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileExtendedAttributeParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.attribute.SftpFileExtendedAttributePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.attribute.SftpFileExtendedAttributeSerializer; +import de.rub.nds.sshattacker.core.protocol.common.Handler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpFileExtendedAttributeHandler implements Handler { + + private final SshContext context; + + private final SftpFileExtendedAttribute attribute; + + public SftpFileExtendedAttributeHandler(SshContext context) { + this(context, null); + } + + public SftpFileExtendedAttributeHandler( + SshContext context, SftpFileExtendedAttribute attribute) { + super(); + this.context = context; + this.attribute = attribute; + } + + @Override + public void adjustContext() {} + + @Override + public SftpFileExtendedAttributeParser getParser(byte[] array) { + return new SftpFileExtendedAttributeParser(array); + } + + @Override + public SftpFileExtendedAttributeParser getParser(byte[] array, int startPosition) { + return new SftpFileExtendedAttributeParser(array, startPosition); + } + + @Override + public SftpFileExtendedAttributePreparator getPreparator() { + return new SftpFileExtendedAttributePreparator(context.getChooser(), attribute); + } + + @Override + public SftpFileExtendedAttributeSerializer getSerializer() { + return new SftpFileExtendedAttributeSerializer(attribute); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpAbstractExtensionHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpAbstractExtensionHandler.java new file mode 100644 index 000000000..9a6f25da4 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpAbstractExtensionHandler.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.protocol.common.Handler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public abstract class SftpAbstractExtensionHandler> + implements Handler { + + protected final SshContext context; + + protected final E extension; + + protected SftpAbstractExtensionHandler(SshContext context) { + this(context, null); + } + + protected SftpAbstractExtensionHandler(SshContext context, E extension) { + super(); + this.context = context; + this.extension = extension; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpUnknownExtensionHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpUnknownExtensionHandler.java new file mode 100644 index 000000000..50c5a86ac --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpUnknownExtensionHandler.java @@ -0,0 +1,52 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpUnknownExtension; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpUnknownExtensionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpUnknownExtensionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpUnknownExtensionSerializer; +import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpUnknownExtensionHandler + extends SftpAbstractExtensionHandler { + + public SftpUnknownExtensionHandler(SshContext context) { + super(context); + } + + public SftpUnknownExtensionHandler(SshContext context, SftpUnknownExtension extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpUnknownExtensionParser getParser(byte[] array) { + return new SftpUnknownExtensionParser(array); + } + + @Override + public SftpUnknownExtensionParser getParser(byte[] array, int startPosition) { + return new SftpUnknownExtensionParser(array, startPosition); + } + + @Override + public Preparator getPreparator() { + return new SftpUnknownExtensionPreparator(context.getChooser(), extension); + } + + @Override + public SftpUnknownExtensionSerializer getSerializer() { + return new SftpUnknownExtensionSerializer(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java new file mode 100644 index 000000000..770a07005 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java @@ -0,0 +1,63 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpUnknownExtension; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElementWrapper; +import jakarta.xml.bind.annotation.XmlElements; +import java.util.ArrayList; +import java.util.List; + +public abstract class SftpHandshakeMessage> + extends SftpMessage { + + private ModifiableInteger version; + + @HoldsModifiableVariable + @XmlElementWrapper + @XmlElements({@XmlElement(type = SftpUnknownExtension.class, name = "SftpUnknownExtension")}) + private List> extensions = new ArrayList<>(); + + public ModifiableInteger getVersion() { + return version; + } + + public void setVersion(ModifiableInteger version) { + this.version = version; + } + + public void setVersion(Integer version) { + this.version = ModifiableVariableFactory.safelySetValue(this.version, version); + } + + public List> getExtensions() { + return extensions; + } + + public void setExtensions(List> extensions) { + this.extensions = extensions; + } + + public void addExtension(SftpAbstractExtension extension) { + extensions.add(extension); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + holders.addAll(extensions); + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java index 3af9ecac6..194d92dce 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java @@ -7,27 +7,11 @@ */ package de.rub.nds.sshattacker.core.data.sftp.message; -import de.rub.nds.modifiablevariable.ModifiableVariableFactory; -import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.SftpMessage; import de.rub.nds.sshattacker.core.data.sftp.handler.SftpInitMessageHandler; +import de.rub.nds.sshattacker.core.protocol.transport.message.extension.*; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpInitMessage extends SftpMessage { - - private ModifiableInteger version; - - public ModifiableInteger getVersion() { - return version; - } - - public void setVersion(ModifiableInteger version) { - this.version = version; - } - - public void setVersion(Integer version) { - this.version = ModifiableVariableFactory.safelySetValue(this.version, version); - } +public class SftpInitMessage extends SftpHandshakeMessage { @Override public SftpInitMessageHandler getHandler(SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMessage.java new file mode 100644 index 000000000..d13662367 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMessage.java @@ -0,0 +1,29 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessage; + +public abstract class SftpRequestMessage> extends SftpMessage { + + private ModifiableInteger requestId; + + public ModifiableInteger getRequestId() { + return requestId; + } + + public void setRequestId(ModifiableInteger requestId) { + this.requestId = requestId; + } + + public void setRequestId(int requestId) { + this.requestId = ModifiableVariableFactory.safelySetValue(this.requestId, requestId); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseMessage.java new file mode 100644 index 000000000..120f52bd9 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseMessage.java @@ -0,0 +1,29 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessage; + +public abstract class SftpResponseMessage> extends SftpMessage { + + private ModifiableInteger requestId; + + public ModifiableInteger getRequestId() { + return requestId; + } + + public void setRequestId(ModifiableInteger requestId) { + this.requestId = requestId; + } + + public void setRequestId(int requestId) { + this.requestId = ModifiableVariableFactory.safelySetValue(this.requestId, requestId); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java index c6d1bc9a3..71fa89ac2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java @@ -7,27 +7,10 @@ */ package de.rub.nds.sshattacker.core.data.sftp.message; -import de.rub.nds.modifiablevariable.ModifiableVariableFactory; -import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.SftpMessage; import de.rub.nds.sshattacker.core.data.sftp.handler.SftpVersionMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpVersionMessage extends SftpMessage { - - private ModifiableInteger version; - - public ModifiableInteger getVersion() { - return version; - } - - public void setVersion(ModifiableInteger version) { - this.version = version; - } - - public void setVersion(Integer version) { - this.version = ModifiableVariableFactory.safelySetValue(this.version, version); - } +public class SftpVersionMessage extends SftpHandshakeMessage { @Override public SftpVersionMessageHandler getHandler(SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java new file mode 100644 index 000000000..1da21f81f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java @@ -0,0 +1,176 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.attribute; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.sshattacker.core.data.sftp.handler.attribute.SftpFileAttributesHandler; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElementWrapper; +import jakarta.xml.bind.annotation.XmlElements; +import java.util.ArrayList; +import java.util.List; + +public class SftpFileAttributes extends ModifiableVariableHolder { + + private ModifiableInteger flags; + private ModifiableLong size; + private ModifiableInteger uId; + private ModifiableInteger gId; + private ModifiableInteger permissions; + private ModifiableInteger aTime; + private ModifiableInteger mTime; + private ModifiableInteger extendedCount; + + @HoldsModifiableVariable + @XmlElementWrapper + @XmlElements({ + @XmlElement(type = SftpFileExtendedAttribute.class, name = "SftpFileExtendedAttribute") + }) + private List extendedAttributes = new ArrayList<>(); + + public ModifiableInteger getFlags() { + return flags; + } + + public void setFlags(ModifiableInteger flags) { + this.flags = flags; + } + + public void setFlags(int flags) { + this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); + } + + public ModifiableLong getSize() { + return size; + } + + public void setSize(ModifiableLong size) { + this.size = size; + } + + public void setSize(long size) { + this.size = ModifiableVariableFactory.safelySetValue(this.size, size); + } + + public ModifiableInteger getUId() { + return uId; + } + + public void setUId(ModifiableInteger uId) { + this.uId = uId; + } + + public void setUId(int uId) { + this.uId = ModifiableVariableFactory.safelySetValue(this.uId, uId); + } + + public ModifiableInteger getGId() { + return gId; + } + + public void setGId(ModifiableInteger gId) { + this.gId = gId; + } + + public void setGId(int gId) { + this.gId = ModifiableVariableFactory.safelySetValue(this.gId, gId); + } + + public ModifiableInteger getPermissions() { + return permissions; + } + + public void setPermissions(ModifiableInteger permissions) { + this.permissions = permissions; + } + + public void setPermissions(int permissions) { + this.permissions = ModifiableVariableFactory.safelySetValue(this.permissions, permissions); + } + + public ModifiableInteger getATime() { + return aTime; + } + + public void setATime(ModifiableInteger aTime) { + this.aTime = aTime; + } + + public void setATime(int aTime) { + this.aTime = ModifiableVariableFactory.safelySetValue(this.aTime, aTime); + } + + public ModifiableInteger getMTime() { + return mTime; + } + + public void setMTime(ModifiableInteger mTime) { + this.mTime = mTime; + } + + public void setMTime(int mTime) { + this.mTime = ModifiableVariableFactory.safelySetValue(this.mTime, mTime); + } + + public ModifiableInteger getExtendedCount() { + return extendedCount; + } + + public void setExtendedCount(ModifiableInteger extendedCount) { + this.extendedCount = extendedCount; + } + + public void setExtendedCount(int extendedCount) { + this.extendedCount = + ModifiableVariableFactory.safelySetValue(this.extendedCount, extendedCount); + } + + public List getExtendedAttributes() { + return extendedAttributes; + } + + public void setExtendedAttributes(List extendedAttributes) { + setExtendedAttributes(extendedAttributes, false); + } + + public void setExtendedAttributes( + List extendedAttributes, boolean adjustLengthField) { + if (adjustLengthField) { + setExtendedCount(extendedAttributes.size()); + } + this.extendedAttributes = extendedAttributes; + } + + public void addExtendedAttribute(SftpFileExtendedAttribute extendedAttribute) { + addExtendedAttribute(extendedAttribute, false); + } + + public void addExtendedAttribute( + SftpFileExtendedAttribute extendedAttribute, boolean adjustLengthField) { + extendedAttributes.add(extendedAttribute); + if (adjustLengthField) { + setExtendedCount(extendedAttributes.size()); + } + } + + public SftpFileAttributesHandler getHandler(SshContext context) { + return new SftpFileAttributesHandler(context, this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + holders.addAll(extendedAttributes); + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileExtendedAttribute.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileExtendedAttribute.java new file mode 100644 index 000000000..9ee7fc393 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileExtendedAttribute.java @@ -0,0 +1,105 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.attribute; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.handler.attribute.SftpFileExtendedAttributeHandler; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; + +public class SftpFileExtendedAttribute extends ModifiableVariableHolder { + + private ModifiableInteger typeLength; + private ModifiableString type; + private ModifiableInteger dataLength; + private ModifiableByteArray data; + + public ModifiableInteger getTypeLength() { + return typeLength; + } + + public void setTypeLength(ModifiableInteger typeLength) { + this.typeLength = typeLength; + } + + public void setTypeLength(int typeLength) { + this.typeLength = ModifiableVariableFactory.safelySetValue(this.typeLength, typeLength); + } + + public ModifiableString getType() { + return type; + } + + public void setType(ModifiableString type) { + setType(type, false); + } + + public void setType(String type) { + setType(type, false); + } + + public void setType(ModifiableString type, boolean adjustLengthField) { + if (adjustLengthField) { + setTypeLength(type.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + this.type = type; + } + + public void setType(String type, boolean adjustLengthField) { + if (adjustLengthField) { + setTypeLength(type.getBytes(StandardCharsets.US_ASCII).length); + } + this.type = ModifiableVariableFactory.safelySetValue(this.type, type); + } + + public ModifiableInteger getDataLength() { + return dataLength; + } + + public void setDataLength(ModifiableInteger dataLength) { + this.dataLength = dataLength; + } + + public void setDataLength(int dataLength) { + this.dataLength = ModifiableVariableFactory.safelySetValue(this.dataLength, dataLength); + } + + public ModifiableByteArray getData() { + return data; + } + + public void setData(ModifiableByteArray data) { + setData(data, false); + } + + public void setData(byte[] data) { + setData(data, false); + } + + public void setData(ModifiableByteArray data, boolean adjustLengthField) { + this.data = data; + if (adjustLengthField) { + setDataLength(this.data.getValue().length); + } + } + + public void setData(byte[] data, boolean adjustLengthField) { + this.data = ModifiableVariableFactory.safelySetValue(this.data, data); + if (adjustLengthField) { + setDataLength(this.data.getValue().length); + } + } + + public SftpFileExtendedAttributeHandler getHandler(SshContext context) { + return new SftpFileExtendedAttributeHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java new file mode 100644 index 000000000..c73c01fd5 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java @@ -0,0 +1,64 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpAbstractExtensionHandler; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; + +public abstract class SftpAbstractExtension> + extends ModifiableVariableHolder { + + protected ModifiableInteger nameLength; + + protected ModifiableString name; + + public ModifiableInteger getNameLength() { + return nameLength; + } + + public void setNameLength(ModifiableInteger nameLength) { + this.nameLength = nameLength; + } + + public void setNameLength(int nameLength) { + this.nameLength = ModifiableVariableFactory.safelySetValue(this.nameLength, nameLength); + } + + public ModifiableString getName() { + return name; + } + + public void setName(ModifiableString name) { + setName(name, false); + } + + public void setName(String name) { + setName(name, false); + } + + public void setName(ModifiableString name, boolean adjustLengthField) { + if (adjustLengthField) { + setNameLength(name.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + this.name = name; + } + + public void setName(String name, boolean adjustLengthField) { + if (adjustLengthField) { + setNameLength(name.getBytes(StandardCharsets.US_ASCII).length); + } + this.name = ModifiableVariableFactory.safelySetValue(this.name, name); + } + + public abstract SftpAbstractExtensionHandler getHandler(SshContext context); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpUnknownExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpUnknownExtension.java new file mode 100644 index 000000000..d7a36a6b1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpUnknownExtension.java @@ -0,0 +1,64 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpUnknownExtensionHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpUnknownExtension extends SftpAbstractExtension { + + private ModifiableInteger valueLength; + + private ModifiableByteArray value; + + public ModifiableInteger getValueLength() { + return valueLength; + } + + public void setValueLength(ModifiableInteger valueLength) { + this.valueLength = valueLength; + } + + public void setValueLength(int valueLength) { + this.valueLength = ModifiableVariableFactory.safelySetValue(this.valueLength, valueLength); + } + + public ModifiableByteArray getValue() { + return value; + } + + public void setValue(ModifiableByteArray value) { + setValue(value, false); + } + + public void setValue(byte[] value) { + setValue(value, false); + } + + public void setValue(ModifiableByteArray value, boolean adjustLengthField) { + if (adjustLengthField) { + setValueLength(value.getValue().length); + } + this.value = value; + } + + public void setValue(byte[] value, boolean adjustLengthField) { + if (adjustLengthField) { + setValueLength(value.length); + } + this.value = ModifiableVariableFactory.safelySetValue(this.value, value); + } + + @Override + public SftpUnknownExtensionHandler getHandler(SshContext context) { + return new SftpUnknownExtensionHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java new file mode 100644 index 000000000..751b5e56b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java @@ -0,0 +1,69 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpHandshakeMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpAbstractExtensionParser; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpUnknownExtensionParser; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpHandshakeMessageParser> + extends SftpMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpHandshakeMessageParser(byte[] array) { + super(array); + } + + protected SftpHandshakeMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseVersion() { + message.setVersion(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("Version: {}", message.getVersion().getValue()); + } + + private void parseExtensions() { + int extensionStartPointer; + int extensionIndex = 0; + while (getBytesLeft() > 0) { + extensionStartPointer = getPointer(); + // Parse extension name to determine the parser to use + int extensionNameLength = parseIntField(DataFormatConstants.UINT32_SIZE); + SftpExtension extension = + SftpExtension.fromName( + parseByteString(extensionNameLength, StandardCharsets.US_ASCII)); + SftpAbstractExtensionParser extensionParser; + switch (extension) { + default: + LOGGER.debug( + "Extension [{}] (index {}) is unknown or not implemented, parsing as UnknownExtension", + extension, + extensionIndex); + extensionParser = + new SftpUnknownExtensionParser(getArray(), extensionStartPointer); + break; + } + message.addExtension(extensionParser.parse()); + setPointer(extensionParser.getPointer()); + extensionIndex++; + } + } + + public void parseMessageSpecificContents() { + parseVersion(); + parseExtensions(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java index 9c5c8739b..3a37e062e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java @@ -7,15 +7,10 @@ */ package de.rub.nds.sshattacker.core.data.sftp.parser; -import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import de.rub.nds.sshattacker.core.protocol.transport.parser.extension.*; -public class SftpInitMessageParser extends SftpMessageParser { - - private static final Logger LOGGER = LogManager.getLogger(); +public class SftpInitMessageParser extends SftpHandshakeMessageParser { public SftpInitMessageParser(byte[] array) { super(array); @@ -29,13 +24,4 @@ public SftpInitMessageParser(byte[] array, int startPosition) { public SftpInitMessage createMessage() { return new SftpInitMessage(); } - - public void parseMessageSpecificContents() { - parseVersion(); - } - - private void parseVersion() { - message.setVersion(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Version: {}", message.getVersion().getValue()); - } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMessageParser.java new file mode 100644 index 000000000..17497dbb3 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMessageParser.java @@ -0,0 +1,40 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpRequestMessageParser> + extends SftpMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpRequestMessageParser(byte[] array) { + super(array); + } + + protected SftpRequestMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseRequestId() { + message.setRequestId(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("RequestId: {}", message.getRequestId().getValue()); + } + + public void parseMessageSpecificContents() { + parseRequestId(); + parseRequestSpecificContents(); + } + + protected abstract void parseRequestSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseMessageParser.java new file mode 100644 index 000000000..27d67ec01 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseMessageParser.java @@ -0,0 +1,40 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpResponseMessageParser> + extends SftpMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpResponseMessageParser(byte[] array) { + super(array); + } + + protected SftpResponseMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseRequestId() { + message.setRequestId(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("RequestId: {}", message.getRequestId().getValue()); + } + + public void parseMessageSpecificContents() { + parseRequestId(); + parseResponseSpecificContents(); + } + + protected abstract void parseResponseSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpVersionMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpVersionMessageParser.java index 09b524044..033442f12 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpVersionMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpVersionMessageParser.java @@ -7,15 +7,9 @@ */ package de.rub.nds.sshattacker.core.data.sftp.parser; -import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -public class SftpVersionMessageParser extends SftpMessageParser { - - private static final Logger LOGGER = LogManager.getLogger(); +public class SftpVersionMessageParser extends SftpHandshakeMessageParser { public SftpVersionMessageParser(byte[] array) { super(array); @@ -29,13 +23,4 @@ public SftpVersionMessageParser(byte[] array, int startPosition) { public SftpVersionMessage createMessage() { return new SftpVersionMessage(); } - - public void parseMessageSpecificContents() { - parseVersion(); - } - - private void parseVersion() { - message.setVersion(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Version: {}", message.getVersion().getValue()); - } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java new file mode 100644 index 000000000..5a6aab273 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java @@ -0,0 +1,102 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.attribute; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.Parser; +import de.rub.nds.sshattacker.core.protocol.transport.parser.extension.*; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpFileAttributesParser extends Parser { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpFileAttributes attributes = new SftpFileAttributes(); + + public SftpFileAttributesParser(byte[] array) { + super(array); + } + + public SftpFileAttributesParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseFlags() { + attributes.setFlags(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("Flags: {}", attributes.getFlags().getValue()); + } + + private void parseSize() { + attributes.setSize(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("Size: {}", attributes.getSize().getValue()); + } + + private void parseUIdGId() { + attributes.setUId(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("UId: {}", attributes.getUId().getValue()); + attributes.setGId(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("GId: {}", attributes.getGId().getValue()); + } + + private void parsePermissions() { + attributes.setPermissions(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("Permissions: {}", attributes.getPermissions().getValue()); + } + + private void parseAcModTime() { + attributes.setATime(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("ATime: {}", attributes.getATime().getValue()); + attributes.setMTime(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("MTime: {}", attributes.getMTime().getValue()); + } + + private void parseExtendedAttributes() { + attributes.setExtendedCount(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("ExtendedCount: {}", attributes.getExtendedCount().getValue()); + + for (int extendedAttrIndex = 0, extendedAttrStartPointer = getPointer(); + extendedAttrIndex < attributes.getExtendedCount().getValue(); + extendedAttrIndex++, extendedAttrStartPointer = getPointer()) { + + SftpFileExtendedAttributeParser extendedAttrParser = + new SftpFileExtendedAttributeParser(getArray(), extendedAttrStartPointer); + + attributes.addExtendedAttribute(extendedAttrParser.parse()); + setPointer(extendedAttrParser.getPointer()); + } + } + + @Override + public final SftpFileAttributes parse() { + parseFlags(); + int flags = attributes.getFlags().getValue(); + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE)) { + parseSize(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID)) { + parseUIdGId(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS)) { + parsePermissions(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME)) { + parseAcModTime(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED)) { + parseExtendedAttributes(); + } + return attributes; + } + + private static boolean isFlagSet(int attributes, SftpFileAttributeFlag attribute) { + return (attributes & attribute.getValue()) != 0; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java new file mode 100644 index 000000000..0b748d4d5 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.attribute; + +import de.rub.nds.sshattacker.core.constants.BinaryPacketConstants; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.protocol.common.Parser; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpFileExtendedAttributeParser extends Parser { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpFileExtendedAttribute attribute = new SftpFileExtendedAttribute(); + + public SftpFileExtendedAttributeParser(byte[] array) { + super(array); + } + + public SftpFileExtendedAttributeParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseType() { + attribute.setTypeLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("Type length: {}", attribute.getTypeLength().getValue()); + attribute.setType( + parseByteString(attribute.getTypeLength().getValue(), StandardCharsets.US_ASCII)); + LOGGER.debug("Type: {}", attribute.getType().getValue()); + } + + private void parseData() { + attribute.setDataLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); + LOGGER.debug("Data length: {}", attribute.getDataLength().getValue()); + attribute.setData(parseByteArrayField(attribute.getDataLength().getValue())); + LOGGER.debug("Data: {}", attribute.getData()); + } + + @Override + public final SftpFileExtendedAttribute parse() { + parseType(); + parseData(); + return attribute; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java new file mode 100644 index 000000000..65dbb7be6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java @@ -0,0 +1,50 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extension; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.protocol.common.Parser; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpAbstractExtensionParser> + extends Parser { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected final E extension = createExtension(); + + protected SftpAbstractExtensionParser(byte[] array) { + super(array); + } + + protected SftpAbstractExtensionParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + protected abstract E createExtension(); + + @Override + public final E parse() { + parseExtensionName(); + parseExtensionValue(); + return extension; + } + + protected void parseExtensionName() { + extension.setNameLength(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("Extension name length: {}", extension.getNameLength().getValue()); + extension.setName( + parseByteString(extension.getNameLength().getValue(), StandardCharsets.US_ASCII)); + LOGGER.debug("Extension name: {}", extension.getName().getValue()); + } + + protected abstract void parseExtensionValue(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpUnknownExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpUnknownExtensionParser.java new file mode 100644 index 000000000..05c952902 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpUnknownExtensionParser.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extension; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpUnknownExtension; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpUnknownExtensionParser extends SftpAbstractExtensionParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpUnknownExtensionParser(byte[] array) { + super(array); + } + + public SftpUnknownExtensionParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpUnknownExtension createExtension() { + return new SftpUnknownExtension(); + } + + @Override + protected void parseExtensionValue() { + extension.setValueLength(parseIntField(DataFormatConstants.UINT32_SIZE)); + extension.setValue(parseArrayOrTillEnd(extension.getValueLength().getValue())); + LOGGER.debug( + "Extension value: {}", + ArrayConverter.bytesToRawHexString(extension.getValue().getValue())); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java index 88e286226..a98243753 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java @@ -19,6 +19,20 @@ public SftpInitMessagePreparator(Chooser chooser, SftpInitMessage message) { } public void prepareMessageSpecificContents() { - getObject().setVersion(chooser.getSftpClientVersion()); + if(getObject().getVersion() == null) { + getObject().setVersion(chooser.getSftpClientVersion()); + } + if(getObject().getExtensions().isEmpty()) { + getObject().setExtensions(chooser.getSftpClientSupportedExtensions()); + } + + getObject() + .getExtensions() + .forEach( + extension -> + extension + .getHandler(chooser.getContext()) + .getPreparator() + .prepare()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMessagePreparator.java new file mode 100644 index 000000000..9d8594315 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMessagePreparator.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public abstract class SftpRequestMessagePreparator> + extends SftpMessagePreparator { + + protected SftpRequestMessagePreparator( + Chooser chooser, T message, SftpPacketTypeConstant packetType) { + super(chooser, message, packetType); + } + + public void prepareMessageSpecificContents() { + // TODO: Get valid request ID + getObject().setRequestId(0); + prepareRequestSpecificContents(); + } + + protected abstract void prepareRequestSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseMessagePreparator.java new file mode 100644 index 000000000..8e7260103 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseMessagePreparator.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public abstract class SftpResponseMessagePreparator> + extends SftpMessagePreparator { + + protected SftpResponseMessagePreparator( + Chooser chooser, T message, SftpPacketTypeConstant packetType) { + super(chooser, message, packetType); + } + + public void prepareMessageSpecificContents() { + // TODO: Get valid request ID + getObject().setRequestId(0); + prepareResponseSpecificContents(); + } + + protected abstract void prepareResponseSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java index f20ccf4fa..3ca6ba36a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java @@ -20,6 +20,8 @@ public SftpUnknownMessagePreparator(Chooser chooser, SftpUnknownMessage message) @Override public void prepareMessageSpecificContents() { - getObject().setPayload(new byte[0]); + if(getObject().getPayload() == null) { + getObject().setPayload(new byte[0]); + } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java index 50970b6eb..950c0e425 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java @@ -19,6 +19,20 @@ public SftpVersionMessagePreparator(Chooser chooser, SftpVersionMessage message) } public void prepareMessageSpecificContents() { - getObject().setVersion(chooser.getSftpClientVersion()); + if (getObject().getVersion() == null) { + getObject().setVersion(chooser.getSftpServerVersion()); + } + if (getObject().getExtensions().isEmpty()) { + getObject().setExtensions(chooser.getSftpServerSupportedExtensions()); + } + + getObject() + .getExtensions() + .forEach( + extension -> + extension + .getHandler(chooser.getContext()) + .getPreparator() + .prepare()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java new file mode 100644 index 000000000..f32b62969 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java @@ -0,0 +1,72 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.attribute; + +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpFileAttributesPreparator extends Preparator { + + public SftpFileAttributesPreparator(Chooser chooser, SftpFileAttributes attribute) { + super(chooser, attribute); + } + + @Override + public final void prepare() { + if (getObject().getFlags() == null) { + getObject() + .setFlags( + getFlags( + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED)); + } + if (getObject().getSize() == null) { + getObject().setSize(0); + } + if (getObject().getUId() == null) { + getObject().setUId(0); + } + if (getObject().getGId() == null) { + getObject().setGId(0); + } + if (getObject().getPermissions() == null) { + getObject().setPermissions(0); + } + if (getObject().getATime() == null) { + getObject().setATime(0); + } + if (getObject().getMTime() == null) { + getObject().setMTime(0); + } + if (getObject().getExtendedCount() == null) { + getObject().setExtendedCount(0); + } + + getObject() + .getExtendedAttributes() + .forEach( + extendedAttribute -> + extendedAttribute + .getHandler(chooser.getContext()) + .getPreparator() + .prepare()); + } + + public static int getFlags(SftpFileAttributeFlag... attributes) { + int result = 0; + for (SftpFileAttributeFlag attribute : attributes) { + result |= attribute.getValue(); // Use bitwise OR to set each flag + } + return result; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java new file mode 100644 index 000000000..944addf5f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java @@ -0,0 +1,37 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.attribute; + +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpFileExtendedAttributePreparator extends Preparator { + + public SftpFileExtendedAttributePreparator( + Chooser chooser, SftpFileExtendedAttribute attribute) { + super(chooser, attribute); + } + + @Override + public final void prepare() { + if(getObject().getType() == null){ + getObject().setType("hello-from@ssh-attacker", true); + } + if(getObject().getTypeLength() == null){ + getObject().setTypeLength(getObject().getType().getValue().length()); + } + + if(getObject().getData() == null) { + getObject().setData(new byte[100], true); + } + if(getObject().getDataLength() == null){ + getObject().setDataLength(getObject().getData().getValue().length); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java new file mode 100644 index 000000000..fd2dc08ea --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java @@ -0,0 +1,27 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2023 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; + +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public abstract class SftpAbstractExtensionPreparator> + extends Preparator { + + protected SftpAbstractExtensionPreparator(Chooser chooser, E extension) { + super(chooser, extension); + } + + @Override + public void prepare() { + prepareExtensionSpecificContents(); + } + + protected abstract void prepareExtensionSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java new file mode 100644 index 000000000..e1572e4e3 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2023 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; + +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpUnknownExtension; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpUnknownExtensionPreparator + extends SftpAbstractExtensionPreparator { + + public SftpUnknownExtensionPreparator(Chooser chooser, SftpUnknownExtension extension) { + super(chooser, extension); + } + + @Override + protected void prepareExtensionSpecificContents() { + if(getObject().getName() == null){ + getObject().setName("hello-from@ssh-attacker", true); + } + if(getObject().getNameLength() == null){ + getObject().setNameLength(getObject().getName().getValue().length()); + } + + if(getObject().getValue() == null) { + getObject().setValue(new byte[100], true); + } + if(getObject().getValueLength() == null){ + getObject().setValueLength(getObject().getValue().getValue().length); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java new file mode 100644 index 000000000..5013ae6a9 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java @@ -0,0 +1,42 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpHandshakeMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpHandshakeMessageSerializer> + extends SftpMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpHandshakeMessageSerializer(T message) { + super(message); + } + + private void serializeVersion() { + LOGGER.debug("Version: {}", message.getVersion().getValue()); + appendInt(message.getVersion().getValue(), DataFormatConstants.UINT32_SIZE); + } + + private void serializeExtensions() { + message.getExtensions() + .forEach( + extension -> + appendBytes( + extension.getHandler(null).getSerializer().serialize())); + } + + public void serializeMessageSpecificContents() { + serializeVersion(); + serializeExtensions(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpInitMessageSerializer.java index 58019354f..0d06f8d9a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpInitMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpInitMessageSerializer.java @@ -7,26 +7,11 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer; -import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.SftpMessageSerializer; import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -public class SftpInitMessageSerializer extends SftpMessageSerializer { - - private static final Logger LOGGER = LogManager.getLogger(); +public class SftpInitMessageSerializer extends SftpHandshakeMessageSerializer { public SftpInitMessageSerializer(SftpInitMessage message) { super(message); } - - private void serializeVersion() { - LOGGER.debug("Version: {}", message.getVersion().getValue()); - appendInt(message.getVersion().getValue(), DataFormatConstants.UINT32_SIZE); - } - - public void serializeMessageSpecificContents() { - serializeVersion(); - } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java new file mode 100644 index 000000000..977876486 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpRequestMessageSerializer> + extends SftpMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpRequestMessageSerializer(T message) { + super(message); + } + + private void serializeRequestId() { + LOGGER.debug("RequestId: {}", message.getRequestId().getValue()); + appendInt(message.getRequestId().getValue(), DataFormatConstants.UINT32_SIZE); + } + + public void serializeMessageSpecificContents() { + serializeRequestId(); + prepareRequestSpecificContents(); + } + + protected abstract void prepareRequestSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java new file mode 100644 index 000000000..068d91571 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpResponseMessageSerializer> + extends SftpMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpResponseMessageSerializer(T message) { + super(message); + } + + private void serializeRequestId() { + LOGGER.debug("RequestId: {}", message.getRequestId().getValue()); + appendInt(message.getRequestId().getValue(), DataFormatConstants.UINT32_SIZE); + } + + public void serializeMessageSpecificContents() { + serializeRequestId(); + prepareResponseSpecificContents(); + } + + protected abstract void prepareResponseSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpVersionMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpVersionMessageSerializer.java index 8c3770ca1..4855fee65 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpVersionMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpVersionMessageSerializer.java @@ -7,26 +7,12 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer; -import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.SftpMessageSerializer; import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -public class SftpVersionMessageSerializer extends SftpMessageSerializer { - - private static final Logger LOGGER = LogManager.getLogger(); +public class SftpVersionMessageSerializer + extends SftpHandshakeMessageSerializer { public SftpVersionMessageSerializer(SftpVersionMessage message) { super(message); } - - private void serializeVersion() { - LOGGER.debug("Version: {}", message.getVersion().getValue()); - appendInt(message.getVersion().getValue(), DataFormatConstants.UINT32_SIZE); - } - - public void serializeMessageSpecificContents() { - serializeVersion(); - } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java new file mode 100644 index 000000000..b80a78582 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java @@ -0,0 +1,96 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.attribute; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.Serializer; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpFileAttributesSerializer extends Serializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpFileAttributes attributes; + + public SftpFileAttributesSerializer(SftpFileAttributes attributes) { + super(); + this.attributes = attributes; + } + + private void serializeFlags() { + LOGGER.debug("Flags: {}", attributes.getFlags().getValue()); + appendInt(attributes.getFlags().getValue(), DataFormatConstants.UINT32_SIZE); + } + + private void serializeSize() { + LOGGER.debug("Size: {}", attributes.getSize().getValue()); + appendLong(attributes.getSize().getValue(), DataFormatConstants.UINT64_SIZE); + } + + private void serializeUIdGId() { + LOGGER.debug("UId: {}", attributes.getUId().getValue()); + appendInt(attributes.getUId().getValue(), DataFormatConstants.UINT32_SIZE); + LOGGER.debug("GId: {}", attributes.getGId().getValue()); + appendInt(attributes.getGId().getValue(), DataFormatConstants.UINT32_SIZE); + } + + private void serializePermissions() { + LOGGER.debug("Permissions: {}", attributes.getPermissions().getValue()); + appendInt(attributes.getPermissions().getValue(), DataFormatConstants.UINT32_SIZE); + } + + private void serializeAcModTime() { + LOGGER.debug("ATime: {}", attributes.getATime().getValue()); + appendInt(attributes.getATime().getValue(), DataFormatConstants.UINT32_SIZE); + LOGGER.debug("MTime: {}", attributes.getMTime().getValue()); + appendInt(attributes.getMTime().getValue(), DataFormatConstants.UINT32_SIZE); + } + + private void serializeExtendedAttributes() { + LOGGER.debug("ExtendedCount: {}", attributes.getExtendedCount().getValue()); + appendInt(attributes.getExtendedCount().getValue(), DataFormatConstants.UINT32_SIZE); + + attributes + .getExtendedAttributes() + .forEach( + extendedAttribute -> + appendBytes( + extendedAttribute + .getHandler(null) + .getSerializer() + .serialize())); + } + + @Override + protected final void serializeBytes() { + serializeFlags(); + int flags = attributes.getFlags().getValue(); + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE)) { + serializeSize(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID)) { + serializeUIdGId(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS)) { + serializePermissions(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME)) { + serializeAcModTime(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED)) { + serializeExtendedAttributes(); + } + } + + private static boolean isFlagSet(int attributes, SftpFileAttributeFlag attribute) { + return (attributes & attribute.getValue()) != 0; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java new file mode 100644 index 000000000..3aaaff5f4 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.attribute; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.protocol.common.Serializer; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpFileExtendedAttributeSerializer extends Serializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpFileExtendedAttribute attribute; + + public SftpFileExtendedAttributeSerializer(SftpFileExtendedAttribute attribute) { + super(); + this.attribute = attribute; + } + + public void serializeType() { + LOGGER.debug("Type length: {}", attribute.getTypeLength().getValue()); + appendInt(attribute.getTypeLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("Type: {}", backslashEscapeString(attribute.getType().getValue())); + appendString(attribute.getType().getValue(), StandardCharsets.US_ASCII); + } + + public void serializeData() { + LOGGER.debug("Data length: {}", attribute.getDataLength().getValue()); + appendInt(attribute.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "Data: {}", ArrayConverter.bytesToRawHexString(attribute.getData().getValue())); + appendBytes(attribute.getData().getValue()); + } + + @Override + protected final void serializeBytes() { + serializeType(); + serializeData(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java new file mode 100644 index 000000000..0cd5ba2da --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java @@ -0,0 +1,43 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extension; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.protocol.common.Serializer; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpAbstractExtensionSerializer> + extends Serializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected final E extension; + + protected SftpAbstractExtensionSerializer(E extension) { + super(); + this.extension = extension; + } + + @Override + protected final void serializeBytes() { + serializeExtensionName(); + serializeExtensionValue(); + } + + private void serializeExtensionName() { + LOGGER.debug("Extension name length: {}", extension.getNameLength().getValue()); + appendInt(extension.getNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("Extension name: {}", extension.getName().getValue()); + appendString(extension.getName().getValue(), StandardCharsets.US_ASCII); + } + + protected abstract void serializeExtensionValue(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java new file mode 100644 index 000000000..bdb016a7e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java @@ -0,0 +1,32 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extension; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpUnknownExtension; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpUnknownExtensionSerializer + extends SftpAbstractExtensionSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpUnknownExtensionSerializer(SftpUnknownExtension extension) { + super(extension); + } + + @Override + protected void serializeExtensionValue() { + LOGGER.debug("Extension value length: {}", extension.getValueLength().getValue()); + appendInt(extension.getValueLength().getValue(), DataFormatConstants.UINT32_SIZE); + LOGGER.debug("Extension value: {}", ArrayConverter.bytesToHexString(extension.getValue())); + appendBytes(extension.getValue().getValue()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/Parser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/Parser.java index a4d373905..be0834959 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/Parser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/Parser.java @@ -107,6 +107,20 @@ protected int parseIntField(int length) { return ArrayConverter.bytesToInt(parseByteArrayField(length)); } + /** + * Parses a number of bytes from the Array and returns them as a long. Throws a ParserException + * if the number of bytes cannot be parsed. Moves the pointer accordingly. + * + * @param length Number of bytes to be parsed + * @return An integer representation of the partial byteArray + */ + protected long parseLongField(int length) { + if (length == 0) { + throw new ParserException("Cannot parse long of size 0"); + } + return ArrayConverter.bytesToLong(parseByteArrayField(length)); + } + /** * Parses a number of bytes from the Array and returns them as a positive BigInteger. Throws a * ParserException if the number of bytes cannot be parsed. Moves the pointer accordingly. diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/Serializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/Serializer.java index d10a3e8a9..9d458519b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/Serializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/Serializer.java @@ -58,7 +58,27 @@ protected final void appendInt(int i, int length) { length, length); } - appendBytes(ArrayConverter.intToBytes(i, length)); + appendBytes(bytes); + } + + /** + * Adds a byte[] representation of an long to the final byte[]. If the Long is greater than the + * specified length only the lower length bytes are serialized. + * + * @param l The Long that should be appended + * @param length The number of bytes which should be reserved for this Long + */ + protected final void appendLong(long l, int length) { + byte[] bytes = ArrayConverter.longToBytes(l, length); + long reconvertedLong = ArrayConverter.bytesToLong(bytes); + if (reconvertedLong != l) { + LOGGER.warn( + "Long \"{}\" is too long to write in field of size {}. Only using last {} bytes.", + l, + length, + length); + } + appendBytes(bytes); } /** diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java index 1c6b2e3b3..23dc6a8d3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java @@ -64,6 +64,10 @@ public void setExtensions(List> extensions, boolean adjustL } public void addExtension(AbstractExtension extension) { + addExtension(extension, false); + } + + public void addExtension(AbstractExtension extension, boolean adjustLengthField) { extensions.add(extension); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PingMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PingMessage.java index 3ca5c7b18..5a89bf3a3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PingMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PingMessage.java @@ -51,10 +51,10 @@ public void setData(byte[] data) { } public void setData(byte[] data, boolean adjustLengthField) { + this.data = ModifiableVariableFactory.safelySetValue(this.data, data); if (adjustLengthField) { - setDataLength(data.length); + setDataLength(this.data.getValue().length); } - this.data = ModifiableVariableFactory.safelySetValue(this.data, data); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PongMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PongMessage.java index 903ecddf3..8106877ee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PongMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PongMessage.java @@ -40,10 +40,10 @@ public void setData(ModifiableByteArray data) { } public void setData(ModifiableByteArray data, boolean adjustLengthField) { + this.data = data; if (adjustLengthField) { - setDataLength(data.getValue().length); + setDataLength(this.data.getValue().length); } - this.data = data; } public void setData(byte[] data) { @@ -51,10 +51,10 @@ public void setData(byte[] data) { } public void setData(byte[] data, boolean adjustLengthField) { + this.data = ModifiableVariableFactory.safelySetValue(this.data, data); if (adjustLengthField) { - setDataLength(data.length); + setDataLength(this.data.getValue().length); } - this.data = ModifiableVariableFactory.safelySetValue(this.data, data); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/UnknownExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/UnknownExtensionParser.java index c8d285f29..3f9ae78dc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/UnknownExtensionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/UnknownExtensionParser.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.transport.parser.extension; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.UnknownExtension; import org.apache.logging.log4j.LogManager; @@ -33,6 +34,8 @@ protected UnknownExtension createExtension() { protected void parseExtensionValue() { extension.setValueLength(parseIntField(DataFormatConstants.UINT32_SIZE)); extension.setValue(parseArrayOrTillEnd(extension.getValueLength().getValue())); - LOGGER.debug("Extension value: {}", extension.getValue().getValue()); + LOGGER.debug( + "Extension value: {}", + ArrayConverter.bytesToRawHexString(extension.getValue().getValue())); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java index f1691ce02..7a636d3c4 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java @@ -17,6 +17,7 @@ import de.rub.nds.sshattacker.core.crypto.kex.RsaKeyExchange; import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; import de.rub.nds.sshattacker.core.data.DataMessageLayer; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.exceptions.ConfigurationException; import de.rub.nds.sshattacker.core.exceptions.TransportHandlerConnectException; import de.rub.nds.sshattacker.core.packet.cipher.keys.KeySet; @@ -346,6 +347,15 @@ public class SshContext { // endregion + // region SFTP Extensions + /** List of SFTP extensions supported by the client */ + public List> sftpClientSupportedExtensions; + + /** List of SFTP extensions supported by the server */ + public List> sftpServerSupportedExtensions; + + // endregion + /** If set to true, an SSH_MSG_DISCONNECT has been received from the remote peer */ private boolean disconnectMessageReceived; @@ -1242,4 +1252,29 @@ public void setSftpServerVersion(Integer sftpServerVersion) { // endregion + // region Getters for SFTP Extensions + + // section general SFTP extensions + public Optional>> getSftpClientSupportedExtensions() { + return Optional.ofNullable(sftpClientSupportedExtensions); + } + + public Optional>> getSftpServerSupportedExtensions() { + return Optional.ofNullable(sftpServerSupportedExtensions); + } + + // endregion + + // region Setters for SFTP Extensions + + // section general SFTP extensions + public void setSftpClientSupportedExtensions(List> extensions) { + sftpClientSupportedExtensions = extensions; + } + + public void setSftpServerSupportedExtensions(List> extensions) { + sftpServerSupportedExtensions = extensions; + } + // endregion + } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java index da3f69344..8293f1353 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java @@ -14,6 +14,7 @@ import de.rub.nds.sshattacker.core.crypto.kex.HybridKeyExchange; import de.rub.nds.sshattacker.core.crypto.kex.RsaKeyExchange; import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.AbstractExtension; import de.rub.nds.sshattacker.core.state.SshContext; import java.util.List; @@ -257,4 +258,13 @@ public CompressionMethod getReceiveCompressionMethod() { public abstract Integer getSftpServerVersion(); // endregion + + // region SFTP Extensions + // section general extensions + public abstract List> getSftpClientSupportedExtensions(); + + public abstract List> getSftpServerSupportedExtensions(); + + // endregion + } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java index 7c886d7bc..ab391f483 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java @@ -14,6 +14,7 @@ import de.rub.nds.sshattacker.core.crypto.kex.HybridKeyExchange; import de.rub.nds.sshattacker.core.crypto.kex.RsaKeyExchange; import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.AbstractExtension; import de.rub.nds.sshattacker.core.protocol.util.AlgorithmPicker; import de.rub.nds.sshattacker.core.state.SshContext; @@ -1044,5 +1045,31 @@ public Integer getSftpClientVersion() { public Integer getSftpServerVersion() { return context.getSftpServerVersion().orElse(config.getSftpServerVersion()); } + // endregion + + // region SFTP Extensions + /** + * Retrieves the list of client supported SFTP extensions included in the clients SSH_FXP_INIT + * packet from context. If no SSH_FXP_INIT packet was received yet or SSH-Attacker is running in + * client mode, the extensions from config will be returned instead. + * + * @return List of client supported SFTP extensions + */ + public List> getSftpClientSupportedExtensions() { + return context.getSftpClientSupportedExtensions() + .orElse(config.getSftpClientSupportedExtensions()); + } + + /** + * Retrieves the list of server supported SFTP extensions included in the servers + * SSH_FXP_VERSION packet from context. If no SSH_FXP_VERSION packet was received yet or + * SSH-Attacker is running in server mode, the extensions from config will be returned instead. + * + * @return List of server supported SFTP extensions + */ + public List> getSftpServerSupportedExtensions() { + return context.getSftpServerSupportedExtensions() + .orElse(config.getSftpServerSupportedExtensions()); + } } From 0ef2d0b384232975b9a2577304485cef692178f3 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 30 Oct 2024 15:47:49 +0100 Subject: [PATCH 023/203] Add SSH_FXP_OPEN Message Also some formatting, not sure why it did not format on last commit :D --- .../nds/sshattacker/core/config/Config.java | 8 +- .../core/constants/SftpFileAttributeFlag.java | 6 +- .../core/constants/SftpFileOpenFlag.java | 39 +++++++ .../SftpRequestOpenMessageHandler.java | 51 +++++++++ .../sftp/message/SftpRequestOpenMessage.java | 104 ++++++++++++++++++ .../message/attribute/SftpFileAttributes.java | 5 + .../parser/SftpRequestOpenMessageParser.java | 62 +++++++++++ .../SftpFileExtendedAttributeParser.java | 8 +- .../SftpAbstractExtensionParser.java | 4 +- .../preperator/SftpInitMessagePreparator.java | 4 +- .../SftpRequestOpenMessagePreparator.java | 38 +++++++ .../SftpUnknownMessagePreparator.java | 2 +- .../SftpFileAttributesPreparator.java | 33 ++---- .../SftpFileExtendedAttributePreparator.java | 8 +- .../SftpUnknownExtensionPreparator.java | 8 +- .../SftpRequestMessageSerializer.java | 4 +- .../SftpRequestOpenMessageSerializer.java | 49 +++++++++ .../SftpResponseMessageSerializer.java | 4 +- .../SftpFileAttributesSerializer.java | 3 + .../SftpAbstractExtensionSerializer.java | 4 +- .../SftpUnknownExtensionSerializer.java | 4 +- .../data/string/StringDataMessageParser.java | 4 +- .../string/StringDataMessageSerializer.java | 4 +- .../factory/WorkflowConfigurationFactory.java | 16 +++ 24 files changed, 422 insertions(+), 50 deletions(-) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileOpenFlag.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpenMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 46c1eb592..904a423be 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -2064,12 +2064,12 @@ public List> getSftpServerSupportedExtensions() { // section general extensions public void setSftpClientSupportedExtensions( - List> clientSupportedExtensions) { - this.sftpClientSupportedExtensions = clientSupportedExtensions; + List> sftpClientSupportedExtensions) { + this.sftpClientSupportedExtensions = sftpClientSupportedExtensions; } public void setSftpServerSupportedExtensions( - List> serverSupportedExtensions) { - this.sftpServerSupportedExtensions = serverSupportedExtensions; + List> sftpServerSupportedExtensions) { + this.sftpServerSupportedExtensions = sftpServerSupportedExtensions; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileAttributeFlag.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileAttributeFlag.java index 658b173dd..52de2acfe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileAttributeFlag.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileAttributeFlag.java @@ -28,10 +28,10 @@ public static boolean isFlagSet(int attributes, SftpFileAttributeFlag attribute) return (attributes & attribute.value) != 0; } - public static int getFlags(SftpFileAttributeFlag... attributes) { + public static int flagsToInt(SftpFileAttributeFlag... attributeFlags) { int result = 0; - for (SftpFileAttributeFlag attribute : attributes) { - result |= attribute.value; // Use bitwise OR to set each flag + for (SftpFileAttributeFlag attributeFlag : attributeFlags) { + result |= attributeFlag.value; // Use bitwise OR to set each flag } return result; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileOpenFlag.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileOpenFlag.java new file mode 100644 index 000000000..cd2f66765 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileOpenFlag.java @@ -0,0 +1,39 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.constants; + +public enum SftpFileOpenFlag { + SSH_FXF_READ(0x00000001), + SSH_FXF_WRITE(0x00000002), + SSH_FXF_APPEND(0x00000004), + SSH_FXF_CREAT(0x00000008), + SSH_FXF_TRUNC(0x00000010), + SSH_FXF_EXCL(0x00000020); + + private final int value; + + SftpFileOpenFlag(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + + public static boolean isFlagSet(int attributes, SftpFileOpenFlag attribute) { + return (attributes & attribute.value) != 0; + } + + public static int flagsToInt(SftpFileOpenFlag... fileOpenFlags) { + int result = 0; + for (SftpFileOpenFlag fileOpenFlag : fileOpenFlags) { + result |= fileOpenFlag.value; // Use bitwise OR to set each flag + } + return result; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpenMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpenMessageHandler.java new file mode 100644 index 000000000..2d63f897d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpenMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestOpenMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestOpenMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestOpenMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestOpenMessageHandler extends SftpMessageHandler { + + public SftpRequestOpenMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestOpenMessageHandler(SshContext context, SftpRequestOpenMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestOpenMessage + } + + @Override + public SftpRequestOpenMessageParser getParser(byte[] array) { + return new SftpRequestOpenMessageParser(array); + } + + @Override + public SftpRequestOpenMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestOpenMessageParser(array, startPosition); + } + + @Override + public SftpRequestOpenMessagePreparator getPreparator() { + return new SftpRequestOpenMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestOpenMessageSerializer getSerializer() { + return new SftpRequestOpenMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java new file mode 100644 index 000000000..c694bd20a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java @@ -0,0 +1,104 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestOpenMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; +import java.util.List; + +public class SftpRequestOpenMessage extends SftpRequestMessage { + + private ModifiableInteger filenameLength; + private ModifiableString filename; + private ModifiableInteger pFlags; + private SftpFileAttributes attributes; + + public ModifiableInteger getFilenameLength() { + return filenameLength; + } + + public void setFilenameLength(ModifiableInteger filenameLength) { + this.filenameLength = filenameLength; + } + + public void setFilenameLength(int filenameLength) { + this.filenameLength = + ModifiableVariableFactory.safelySetValue(this.filenameLength, filenameLength); + } + + public ModifiableString getFilename() { + return filename; + } + + public void setFilename(ModifiableString filename) { + setFilename(filename, false); + } + + public void setFilename(String filename) { + setFilename(filename, false); + } + + public void setFilename(ModifiableString filename, boolean adjustLengthField) { + if (adjustLengthField) { + setFilenameLength(filename.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.filename = filename; + } + + public void setFilename(String filename, boolean adjustLengthField) { + if (adjustLengthField) { + setFilenameLength(filename.getBytes(StandardCharsets.UTF_8).length); + } + this.filename = ModifiableVariableFactory.safelySetValue(this.filename, filename); + } + + public ModifiableInteger getPFlags() { + return pFlags; + } + + public void setPFlags(ModifiableInteger pFlags) { + this.pFlags = pFlags; + } + + public void setPFlags(int pFlags) { + this.pFlags = ModifiableVariableFactory.safelySetValue(this.pFlags, pFlags); + } + + public void setPFlags(SftpFileOpenFlag... fileOpenFlags) { + setPFlags(SftpFileOpenFlag.flagsToInt(fileOpenFlags)); + } + + public SftpFileAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SftpFileAttributes attributes) { + this.attributes = attributes; + } + + @Override + public SftpRequestOpenMessageHandler getHandler(SshContext context) { + return new SftpRequestOpenMessageHandler(context, this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + if (attributes != null) { + holders.addAll(attributes.getAllModifiableVariableHolders()); + } + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java index 1da21f81f..ad58bfe13 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.data.sftp.handler.attribute.SftpFileAttributesHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; @@ -50,6 +51,10 @@ public void setFlags(int flags) { this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); } + public void setFlags(SftpFileAttributeFlag... attributeFlags) { + setFlags(SftpFileAttributeFlag.flagsToInt(attributeFlags)); + } + public ModifiableLong getSize() { return size; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java new file mode 100644 index 000000000..d89890482 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java @@ -0,0 +1,62 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestOpenMessageParser extends SftpRequestMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestOpenMessageParser(byte[] array) { + super(array); + } + + public SftpRequestOpenMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestOpenMessage createMessage() { + return new SftpRequestOpenMessage(); + } + + private void parseFilename() { + message.setFilenameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("Filename length: {}", message.getFilenameLength().getValue()); + message.setFilename( + parseByteString(message.getFilenameLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug("Filename: {}", backslashEscapeString(message.getFilename().getValue())); + } + + private void parsePFlags() { + message.setPFlags(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("PFlags: {}", message.getPFlags().getValue()); + } + + private void parseAttributes() { + SftpFileAttributesParser attributesParser = + new SftpFileAttributesParser(getArray(), getPointer()); + message.setAttributes(attributesParser.parse()); + setPointer(attributesParser.getPointer()); + } + + @Override + protected void parseRequestSpecificContents() { + parseFilename(); + parsePFlags(); + parseAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java index 0b748d4d5..ad6243676 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java @@ -7,6 +7,9 @@ */ package de.rub.nds.sshattacker.core.data.sftp.parser.attribute; +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.BinaryPacketConstants; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileExtendedAttribute; @@ -34,14 +37,15 @@ private void parseType() { LOGGER.debug("Type length: {}", attribute.getTypeLength().getValue()); attribute.setType( parseByteString(attribute.getTypeLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("Type: {}", attribute.getType().getValue()); + LOGGER.debug("Type: {}", backslashEscapeString(attribute.getType().getValue())); } private void parseData() { attribute.setDataLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); LOGGER.debug("Data length: {}", attribute.getDataLength().getValue()); attribute.setData(parseByteArrayField(attribute.getDataLength().getValue())); - LOGGER.debug("Data: {}", attribute.getData()); + LOGGER.debug( + "Data: {}", ArrayConverter.bytesToRawHexString(attribute.getData().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java index 65dbb7be6..51ba908ab 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java @@ -7,6 +7,8 @@ */ package de.rub.nds.sshattacker.core.data.sftp.parser.extension; +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.protocol.common.Parser; @@ -43,7 +45,7 @@ protected void parseExtensionName() { LOGGER.debug("Extension name length: {}", extension.getNameLength().getValue()); extension.setName( parseByteString(extension.getNameLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("Extension name: {}", extension.getName().getValue()); + LOGGER.debug("Extension name: {}", backslashEscapeString(extension.getName().getValue())); } protected abstract void parseExtensionValue(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java index a98243753..6b0dee19f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java @@ -19,10 +19,10 @@ public SftpInitMessagePreparator(Chooser chooser, SftpInitMessage message) { } public void prepareMessageSpecificContents() { - if(getObject().getVersion() == null) { + if (getObject().getVersion() == null) { getObject().setVersion(chooser.getSftpClientVersion()); } - if(getObject().getExtensions().isEmpty()) { + if (getObject().getExtensions().isEmpty()) { getObject().setExtensions(chooser.getSftpClientSupportedExtensions()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java new file mode 100644 index 000000000..70455817f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestOpenMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpRequestOpenMessagePreparator(Chooser chooser, SftpRequestOpenMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_OPEN); + } + + public void prepareRequestSpecificContents() { + if (getObject().getFilename() == null) { + getObject().setFilename("/etc/passwd", true); + } + if (getObject().getFilenameLength() == null) { + getObject().setFilenameLength(getObject().getFilename().getValue().length()); + } + if (getObject().getPFlags() == null) { + getObject().setPFlags(SftpFileOpenFlag.SSH_FXF_READ); + } + if (getObject().getAttributes() == null) { + getObject().setAttributes(new SftpFileAttributes()); + } + getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java index 3ca6ba36a..e7d669dff 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java @@ -20,7 +20,7 @@ public SftpUnknownMessagePreparator(Chooser chooser, SftpUnknownMessage message) @Override public void prepareMessageSpecificContents() { - if(getObject().getPayload() == null) { + if (getObject().getPayload() == null) { getObject().setPayload(new byte[0]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java index f32b62969..508f87702 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java @@ -23,12 +23,11 @@ public final void prepare() { if (getObject().getFlags() == null) { getObject() .setFlags( - getFlags( - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE, - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID, - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS, - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME, - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED)); + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED); } if (getObject().getSize() == null) { getObject().setSize(0); @@ -53,20 +52,12 @@ public final void prepare() { } getObject() - .getExtendedAttributes() - .forEach( - extendedAttribute -> - extendedAttribute - .getHandler(chooser.getContext()) - .getPreparator() - .prepare()); - } - - public static int getFlags(SftpFileAttributeFlag... attributes) { - int result = 0; - for (SftpFileAttributeFlag attribute : attributes) { - result |= attribute.getValue(); // Use bitwise OR to set each flag - } - return result; + .getExtendedAttributes() + .forEach( + extendedAttribute -> + extendedAttribute + .getHandler(chooser.getContext()) + .getPreparator() + .prepare()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java index 944addf5f..738cbc158 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java @@ -20,17 +20,17 @@ public SftpFileExtendedAttributePreparator( @Override public final void prepare() { - if(getObject().getType() == null){ + if (getObject().getType() == null) { getObject().setType("hello-from@ssh-attacker", true); } - if(getObject().getTypeLength() == null){ + if (getObject().getTypeLength() == null) { getObject().setTypeLength(getObject().getType().getValue().length()); } - if(getObject().getData() == null) { + if (getObject().getData() == null) { getObject().setData(new byte[100], true); } - if(getObject().getDataLength() == null){ + if (getObject().getDataLength() == null) { getObject().setDataLength(getObject().getData().getValue().length); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java index e1572e4e3..38393880b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java @@ -19,17 +19,17 @@ public SftpUnknownExtensionPreparator(Chooser chooser, SftpUnknownExtension exte @Override protected void prepareExtensionSpecificContents() { - if(getObject().getName() == null){ + if (getObject().getName() == null) { getObject().setName("hello-from@ssh-attacker", true); } - if(getObject().getNameLength() == null){ + if (getObject().getNameLength() == null) { getObject().setNameLength(getObject().getName().getValue().length()); } - if(getObject().getValue() == null) { + if (getObject().getValue() == null) { getObject().setValue(new byte[100], true); } - if(getObject().getValueLength() == null){ + if (getObject().getValueLength() == null) { getObject().setValueLength(getObject().getValue().getValue().length); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java index 977876486..29c2fc6b6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java @@ -29,8 +29,8 @@ private void serializeRequestId() { public void serializeMessageSpecificContents() { serializeRequestId(); - prepareRequestSpecificContents(); + serializeRequestSpecificContents(); } - protected abstract void prepareRequestSpecificContents(); + protected abstract void serializeRequestSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java new file mode 100644 index 000000000..8009ce72b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java @@ -0,0 +1,49 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestOpenMessageSerializer + extends SftpRequestMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestOpenMessageSerializer(SftpRequestOpenMessage message) { + super(message); + } + + public void serializeFilename() { + LOGGER.debug("Filename length: {}", message.getFilenameLength().getValue()); + appendInt(message.getFilenameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("Filename: {}", backslashEscapeString(message.getFilename().getValue())); + appendString(message.getFilename().getValue(), StandardCharsets.UTF_8); + } + + private void serializePFlags() { + LOGGER.debug("PFlags: {}", message.getPFlags().getValue()); + appendInt(message.getPFlags().getValue(), DataFormatConstants.UINT32_SIZE); + } + + private void serializeAttributes() { + appendBytes(message.getAttributes().getHandler(null).getSerializer().serialize()); + } + + @Override + public void serializeRequestSpecificContents() { + serializeFilename(); + serializePFlags(); + serializeAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java index 068d91571..f8872d3cd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java @@ -29,8 +29,8 @@ private void serializeRequestId() { public void serializeMessageSpecificContents() { serializeRequestId(); - prepareResponseSpecificContents(); + serializeResponseSpecificContents(); } - protected abstract void prepareResponseSpecificContents(); + protected abstract void serializeResponseSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java index b80a78582..8a65db119 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer.attribute; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; @@ -26,6 +27,8 @@ public SftpFileAttributesSerializer(SftpFileAttributes attributes) { } private void serializeFlags() { + ArrayConverter.intToBytes( + attributes.getFlags().getValue(), DataFormatConstants.UINT32_SIZE); LOGGER.debug("Flags: {}", attributes.getFlags().getValue()); appendInt(attributes.getFlags().getValue(), DataFormatConstants.UINT32_SIZE); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java index 0cd5ba2da..e2a154d7a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java @@ -7,6 +7,8 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer.extension; +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.protocol.common.Serializer; @@ -35,7 +37,7 @@ protected final void serializeBytes() { private void serializeExtensionName() { LOGGER.debug("Extension name length: {}", extension.getNameLength().getValue()); appendInt(extension.getNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Extension name: {}", extension.getName().getValue()); + LOGGER.debug("Extension name: {}", backslashEscapeString(extension.getName().getValue())); appendString(extension.getName().getValue(), StandardCharsets.US_ASCII); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java index bdb016a7e..785d35307 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java @@ -26,7 +26,9 @@ public SftpUnknownExtensionSerializer(SftpUnknownExtension extension) { protected void serializeExtensionValue() { LOGGER.debug("Extension value length: {}", extension.getValueLength().getValue()); appendInt(extension.getValueLength().getValue(), DataFormatConstants.UINT32_SIZE); - LOGGER.debug("Extension value: {}", ArrayConverter.bytesToHexString(extension.getValue())); + LOGGER.debug( + "Extension value: {}", + ArrayConverter.bytesToRawHexString(extension.getValue().getValue())); appendBytes(extension.getValue().getValue()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java index 7e0ebcfb2..5ea91411f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java @@ -7,6 +7,8 @@ */ package de.rub.nds.sshattacker.core.data.string; +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessageParser; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; @@ -31,7 +33,7 @@ public StringDataMessage createMessage() { private void parseData() { message.setData(parseByteString(getBytesLeft(), StandardCharsets.UTF_8)); - LOGGER.debug("Data: {}", message.getData().getValue()); + LOGGER.debug("Data: {}", backslashEscapeString(message.getData().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java index 4b3af1b1c..2e64198a0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java @@ -7,6 +7,8 @@ */ package de.rub.nds.sshattacker.core.data.string; +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessageSerializer; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; @@ -21,7 +23,7 @@ public StringDataMessageSerializer(StringDataMessage message) { } private void serializeData() { - LOGGER.debug("Data: {}", message.getData().getValue()); + LOGGER.debug("Data: {}", backslashEscapeString(message.getData().getValue())); appendString(message.getData().getValue(), StandardCharsets.UTF_8); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java index 7d7581e31..2c38c0064 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java @@ -14,6 +14,7 @@ import de.rub.nds.sshattacker.core.constants.PacketLayerType; import de.rub.nds.sshattacker.core.constants.RunningModeType; import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenMessage; import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; import de.rub.nds.sshattacker.core.exceptions.ConfigurationException; import de.rub.nds.sshattacker.core.protocol.authentication.message.*; @@ -158,6 +159,7 @@ public WorkflowTrace createSftpInitWorkflowTrace() { addChannelOpenActions(workflow); addChannelRequestSubsystemActions(workflow); addSftpInitActions(workflow); + addSftpTestActions(workflow); return workflow; } @@ -569,6 +571,20 @@ connection, ConnectionEndType.SERVER, new SftpVersionMessage()), .IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS))); } + public void addSftpTestActions(WorkflowTrace workflow) { + AliasedConnection connection = getDefaultConnection(); + workflow.addSshActions( + SshActionFactory.createMessageAction( + connection, ConnectionEndType.CLIENT, new SftpRequestOpenMessage()), + SshActionFactory.withReceiveOptions( + SshActionFactory.createMessageAction( + connection, ConnectionEndType.SERVER, new SftpRequestOpenMessage()), + Set.of( + ReceiveAction.ReceiveOption.IGNORE_CHANNEL_DATA_WRAPPER, + ReceiveAction.ReceiveOption + .IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS))); + } + private WorkflowTrace createSimpleMitmProxyWorkflow() { WorkflowTrace workflow = new WorkflowTrace(); From ef9c3a141a76a9d86f1fbb8d1183d62b44c3c146 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 30 Oct 2024 16:11:59 +0100 Subject: [PATCH 024/203] Use Lazy Logging: Patterns used: (",\s*)ArrayConverter.bytesToRawHexString -> $1() -> ArrayConverter.bytesToRawHexString (",\s*)ArrayConverter.bytesToHexString -> $1() -> ArrayConverter.bytesToHexString (",\s*)backslashEscapeString -> $1() -> backslashEscapeString --- .../nds/sshattacker/attacks/pkcs1/Manger.java | 10 ++++--- .../attacks/pkcs1/Pkcs1VectorGenerator.java | 4 +-- .../core/crypto/kex/OpenQuantumSafeKem.java | 2 +- .../config/converter/LogLevelConverter.java | 2 +- .../core/config/delegate/GeneralDelegate.java | 4 +-- .../core/crypto/hash/ExchangeHash.java | 4 +-- .../core/crypto/kex/DhKeyExchange.java | 2 +- .../core/crypto/kex/EcdhKeyExchange.java | 2 +- .../core/crypto/kex/HybridKeyExchange.java | 7 +++-- .../crypto/kex/XCurveEcdhKeyExchange.java | 2 +- .../crypto/signature/SignatureParser.java | 2 +- .../data/packet/parser/DataPacketParser.java | 2 +- .../parser/PassThroughPacketParser.java | 2 +- .../serializer/DataPacketSerializer.java | 7 +++-- .../PassThroughPacketSerializer.java | 7 +++-- .../handler/SftpUnknownMessageHandler.java | 2 +- .../parser/SftpRequestOpenMessageParser.java | 2 +- .../sftp/parser/SftpUnknownMessageParser.java | 3 +- .../SftpFileExtendedAttributeParser.java | 5 ++-- .../SftpAbstractExtensionParser.java | 3 +- .../extension/SftpUnknownExtensionParser.java | 2 +- .../SftpRequestOpenMessageSerializer.java | 2 +- .../SftpUnknownMessageSerializer.java | 2 +- .../SftpFileExtendedAttributeSerializer.java | 5 ++-- .../SftpAbstractExtensionSerializer.java | 3 +- .../SftpUnknownExtensionSerializer.java | 2 +- .../data/string/StringDataMessageParser.java | 2 +- .../string/StringDataMessageSerializer.java | 2 +- .../unknown/UnknownDataMessageHandler.java | 2 +- .../unknown/UnknownDataMessageParser.java | 3 +- .../unknown/UnknownDataMessageSerializer.java | 2 +- .../packet/parser/BinaryPacketParser.java | 19 +++++++++---- .../core/packet/parser/BlobPacketParser.java | 2 +- .../serializer/BinaryPacketSerializer.java | 12 ++++---- .../serializer/BlobPacketSerializer.java | 2 +- .../UserAuthHostbasedMessageParser.java | 9 +++--- .../UserAuthInfoRequestMessageParser.java | 10 +++++-- ...rAuthKeyboardInteractiveMessageParser.java | 6 ++-- .../parser/UserAuthPkOkMessageParser.java | 4 +-- .../parser/UserAuthPubkeyMessageParser.java | 7 +++-- .../parser/UserAuthRequestMessageParser.java | 9 ++++-- .../parser/UserAuthUnknownMessageParser.java | 4 ++- .../UserAuthBannerMessageSerializer.java | 5 ++-- .../UserAuthHostbasedMessageSerializer.java | 9 +++--- .../UserAuthInfoRequestMessageSerializer.java | 10 +++++-- ...hKeyboardInteractiveMessageSerializer.java | 6 ++-- .../UserAuthPubkeyMessageSerializer.java | 7 +++-- .../UserAuthRequestMessageSerializer.java | 9 ++++-- .../UserAuthUnknownMessageSerializer.java | 4 ++- .../common/ProtocolMessageParser.java | 4 ++- .../parser/ChannelDataMessageParser.java | 3 +- .../ChannelExtendedDataMessageParser.java | 3 +- .../ChannelOpenFailureMessageParser.java | 5 ++-- .../parser/ChannelOpenMessageParser.java | 3 +- .../ChannelOpenUnknownMessageParser.java | 2 +- .../ChannelRequestEnvMessageParser.java | 6 ++-- ...ChannelRequestExitSignalMessageParser.java | 9 ++++-- .../ChannelRequestPtyMessageParser.java | 4 ++- .../ChannelRequestSignalMessageParser.java | 3 +- .../ChannelRequestSubsystemMessageParser.java | 3 +- .../ChannelRequestUnknownMessageParser.java | 2 +- .../parser/GlobalRequestMessageParser.java | 3 +- ...alRequestOpenSshHostKeysMessageParser.java | 2 +- .../GlobalRequestSuccessMessageParser.java | 4 ++- .../GlobalRequestUnknownMessageParser.java | 2 +- .../ChannelDataMessageSerializer.java | 3 +- .../ChannelExtendedDataMessageSerializer.java | 3 +- .../ChannelOpenFailureMessageSerializer.java | 5 ++-- .../ChannelOpenUnknownMessageSerializer.java | 2 +- .../ChannelRequestEnvMessageSerializer.java | 6 ++-- .../ChannelRequestExecMessageSerializer.java | 2 +- ...nelRequestExitSignalMessageSerializer.java | 9 ++++-- .../ChannelRequestPtyMessageSerializer.java | 4 ++- ...ChannelRequestSignalMessageSerializer.java | 3 +- ...nnelRequestSubsystemMessageSerializer.java | 3 +- ...hannelRequestUnknownMessageSerializer.java | 2 +- .../GlobalRequestMessageSerializer.java | 3 +- ...questOpenSshHostKeysMessageSerializer.java | 2 +- ...GlobalRequestSuccessMessageSerializer.java | 5 ++-- ...GlobalRequestUnknownMessageSerializer.java | 2 +- .../handler/AsciiMessageHandler.java | 3 +- .../HybridKeyExchangeReplyMessageHandler.java | 4 +-- .../handler/UnknownMessageHandler.java | 2 +- .../transport/parser/DebugMessageParser.java | 5 ++-- .../DhGexKeyExchangeGroupMessageParser.java | 6 ++-- .../DhKeyExchangeReplyMessageParser.java | 2 +- .../parser/DisconnectMessageParser.java | 7 +++-- .../EcdhKeyExchangeInitMessageParser.java | 4 ++- .../EcdhKeyExchangeReplyMessageParser.java | 8 ++++-- .../HybridKeyExchangeReplyMessageParser.java | 2 +- .../transport/parser/IgnoreMessageParser.java | 3 +- .../parser/KeyExchangeInitMessageParser.java | 28 ++++++++++++------- .../transport/parser/PingMessageParser.java | 3 +- .../transport/parser/PongMessageParser.java | 3 +- .../parser/ServiceRequestMessageParser.java | 3 +- .../parser/UnknownMessageParser.java | 3 +- .../parser/VersionExchangeMessageParser.java | 4 +-- .../extension/UnknownExtensionParser.java | 2 +- ...ybridKeyExchangeInitMessagePreperator.java | 16 +++++++---- .../serializer/AsciiMessageSerializer.java | 2 +- .../serializer/DebugMessageSerializer.java | 5 ++-- ...hGexKeyExchangeGroupMessageSerializer.java | 10 ++++--- ...hGexKeyExchangeReplyMessageSerializer.java | 2 +- .../DhKeyExchangeReplyMessageSerializer.java | 2 +- .../DisconnectMessageSerializer.java | 3 +- .../EcdhKeyExchangeInitMessageSerializer.java | 4 ++- ...EcdhKeyExchangeReplyMessageSerializer.java | 2 +- ...ybridKeyExchangeInitMessageSerializer.java | 3 +- ...bridKeyExchangeReplyMessageSerializer.java | 2 +- .../serializer/IgnoreMessageSerializer.java | 3 +- .../KeyExchangeInitMessageSerializer.java | 28 ++++++++++++------- .../serializer/PingMessageSerializer.java | 3 +- .../serializer/PongMessageSerializer.java | 3 +- .../ServiceAcceptMessageSerializer.java | 3 +- .../ServiceRequestMessageSerializer.java | 3 +- .../serializer/UnknownMessageSerializer.java | 2 +- .../extension/UnknownExtensionSerializer.java | 3 +- 117 files changed, 334 insertions(+), 204 deletions(-) diff --git a/Attacks/src/main/java/de/rub/nds/sshattacker/attacks/pkcs1/Manger.java b/Attacks/src/main/java/de/rub/nds/sshattacker/attacks/pkcs1/Manger.java index 67f25027e..e06c76b39 100644 --- a/Attacks/src/main/java/de/rub/nds/sshattacker/attacks/pkcs1/Manger.java +++ b/Attacks/src/main/java/de/rub/nds/sshattacker/attacks/pkcs1/Manger.java @@ -40,7 +40,7 @@ public Manger(byte[] msg, Pkcs1Oracle pkcsOracle) { tmp = (MathHelper.intCeilDiv(tmp, 8) - 1) * 8; bigB = BigInteger.ONE.shiftLeft(tmp); c0 = new BigInteger(1, encryptedMsg); - LOGGER.debug("b: {}", ArrayConverter.bytesToHexString(bigB.toByteArray())); + LOGGER.debug("b: {}", () -> ArrayConverter.bytesToHexString(bigB.toByteArray())); } /** @@ -66,7 +66,8 @@ public void attack() throws OracleException { } LOGGER.debug( - "Ciphertext after step 0: {}", ArrayConverter.bytesToHexString(c0.toByteArray())); + "Ciphertext after step 0: {}", + () -> ArrayConverter.bytesToHexString(c0.toByteArray())); LOGGER.debug("Step 1"); BigInteger f1 = new BigInteger("2"); @@ -124,9 +125,10 @@ public void attack() throws OracleException { } if (!interrupted) { + BigInteger finalMmin = mmin; LOGGER.debug( "Manger's attack solution (before inverse computation, if any): {}", - ArrayConverter.bytesToHexString(mmin.toByteArray())); + () -> ArrayConverter.bytesToHexString(finalMmin.toByteArray())); if (fx.equals(BigInteger.ONE)) { solution = mmin; @@ -136,7 +138,7 @@ public void attack() throws OracleException { } LOGGER.debug( "Manger's attack solution (after inverse computation, if any): {}", - ArrayConverter.bytesToHexString(solution.toByteArray())); + () -> ArrayConverter.bytesToHexString(solution.toByteArray())); } } diff --git a/Attacks/src/main/java/de/rub/nds/sshattacker/attacks/pkcs1/Pkcs1VectorGenerator.java b/Attacks/src/main/java/de/rub/nds/sshattacker/attacks/pkcs1/Pkcs1VectorGenerator.java index abfcf5236..16dcc077a 100644 --- a/Attacks/src/main/java/de/rub/nds/sshattacker/attacks/pkcs1/Pkcs1VectorGenerator.java +++ b/Attacks/src/main/java/de/rub/nds/sshattacker/attacks/pkcs1/Pkcs1VectorGenerator.java @@ -167,7 +167,7 @@ private static byte[] getSecretWrongFirstByte( paddedSecret[0] = (byte) 1; LOGGER.debug( "Generated a PKCS1 padded message with a wrong first byte: {}", - ArrayConverter.bytesToHexString(paddedSecret)); + () -> ArrayConverter.bytesToHexString(paddedSecret)); return paddedSecret; } @@ -178,7 +178,7 @@ private static byte[] getSecretWrongSecondByte( paddedSecret[1] = (byte) (paddedSecret[1] ^ (byte) 255); LOGGER.debug( "Generated a PKCS1 padded message with a wrong second byte: {}", - ArrayConverter.bytesToHexString(paddedSecret)); + () -> ArrayConverter.bytesToHexString(paddedSecret)); return paddedSecret; } diff --git a/SSH-Core-OQS/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/OpenQuantumSafeKem.java b/SSH-Core-OQS/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/OpenQuantumSafeKem.java index 44b1516da..592489720 100644 --- a/SSH-Core-OQS/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/OpenQuantumSafeKem.java +++ b/SSH-Core-OQS/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/OpenQuantumSafeKem.java @@ -83,7 +83,7 @@ public void decryptSharedSecret(byte[] encryptedSharedSecret) throws CryptoExcep this.encryptedSharedSecret = encryptedSharedSecret; LOGGER.info( "SharedSecret Encapsulation = {}", - ArrayConverter.bytesToRawHexString(sharedSecret)); + () -> ArrayConverter.bytesToRawHexString(sharedSecret)); } catch (RuntimeException e) { throw new CryptoException( "Unexpected exception occured while decrypting the shared secret: " + e); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/converter/LogLevelConverter.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/converter/LogLevelConverter.java index 9836eb75b..f0b5ab5a2 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/converter/LogLevelConverter.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/converter/LogLevelConverter.java @@ -17,7 +17,7 @@ public class LogLevelConverter implements IStringConverter { @Override public Level convert(String s) { - Level level = Level.toLevel(s); + Level level = Level.toLevel(s, null); if (level == null) { throw new ParameterException( "Value " diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/delegate/GeneralDelegate.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/delegate/GeneralDelegate.java index 45c5fb0ba..e826fd1ac 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/delegate/GeneralDelegate.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/delegate/GeneralDelegate.java @@ -31,12 +31,12 @@ public class GeneralDelegate extends Delegate { @Parameter(names = "-debug", description = "Show extra debug output (sets logLevel to DEBUG)") private boolean debug; - @Parameter(names = "-quiet", description = "No output (sets logLevel to NONE)") + @Parameter(names = "-quiet", description = "No output (sets logLevel to OFF)") private boolean quiet; @Parameter( names = "-log_level", - description = "Sets explicit log level", + description = "Sets explicit log level.", converter = LogLevelConverter.class) private Level loglevel; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/hash/ExchangeHash.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/hash/ExchangeHash.java index 96198ee66..f200ca80a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/hash/ExchangeHash.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/hash/ExchangeHash.java @@ -148,7 +148,7 @@ public static byte[] computeRsaHash( private static byte[] compute(KeyExchangeAlgorithm algorithm, byte[] input) throws CryptoException { - LOGGER.debug("Exchange hash input: {}", ArrayConverter.bytesToRawHexString(input)); + LOGGER.debug("Exchange hash input: {}", () -> ArrayConverter.bytesToRawHexString(input)); MessageDigest md; try { md = MessageDigest.getInstance(algorithm.getDigest()); @@ -162,7 +162,7 @@ private static byte[] compute(KeyExchangeAlgorithm algorithm, byte[] input) e); } byte[] hash = md.digest(input); - LOGGER.info("Computed exchange hash: {}", ArrayConverter.bytesToRawHexString(hash)); + LOGGER.info("Computed exchange hash: {}", () -> ArrayConverter.bytesToRawHexString(hash)); return hash; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/DhKeyExchange.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/DhKeyExchange.java index 248ceb2da..e24fce829 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/DhKeyExchange.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/DhKeyExchange.java @@ -193,7 +193,7 @@ public void computeSharedSecret() throws CryptoException { .toByteArray(); LOGGER.debug( "Finished computation of shared secret: {}", - ArrayConverter.bytesToRawHexString(sharedSecret)); + () -> ArrayConverter.bytesToRawHexString(sharedSecret)); } public void selectGroup(int preferredGroupSize) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/EcdhKeyExchange.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/EcdhKeyExchange.java index f07b9c804..f0d398890 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/EcdhKeyExchange.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/EcdhKeyExchange.java @@ -90,7 +90,7 @@ public void computeSharedSecret() throws CryptoException { sharedSecret = sharedPoint.getFieldX().getData().toByteArray(); LOGGER.debug( "Finished computation of shared secret: {}", - ArrayConverter.bytesToRawHexString(sharedSecret)); + () -> ArrayConverter.bytesToRawHexString(sharedSecret)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/HybridKeyExchange.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/HybridKeyExchange.java index 62f973f01..3d57cd48c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/HybridKeyExchange.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/HybridKeyExchange.java @@ -151,11 +151,12 @@ public void combineSharedSecrets() { sharedSecret = encode(tmpSharedSecret, algorithm.getDigest()); LOGGER.debug( "Concatenated Shared Secret = {}", - ArrayConverter.bytesToRawHexString(tmpSharedSecret)); + () -> ArrayConverter.bytesToRawHexString(tmpSharedSecret)); LOGGER.debug( "Encoded Shared Secret = {}", - ArrayConverter.bytesToRawHexString( - encode(tmpSharedSecret, algorithm.getDigest()))); + () -> + ArrayConverter.bytesToRawHexString( + encode(tmpSharedSecret, algorithm.getDigest()))); } catch (Exception e) { LOGGER.warn("Could not create the shared secret", e); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/XCurveEcdhKeyExchange.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/XCurveEcdhKeyExchange.java index 9ede153b8..42eef548a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/XCurveEcdhKeyExchange.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/XCurveEcdhKeyExchange.java @@ -121,7 +121,7 @@ public void computeSharedSecret() throws CryptoException { encodeSharedBytes ? new BigInteger(1, sharedBytes).toByteArray() : sharedBytes; LOGGER.debug( "Finished computation of shared secret: {}", - ArrayConverter.bytesToRawHexString(sharedSecret)); + () -> ArrayConverter.bytesToRawHexString(sharedSecret)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/signature/SignatureParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/signature/SignatureParser.java index 2353d4668..53b8cea3b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/signature/SignatureParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/signature/SignatureParser.java @@ -42,7 +42,7 @@ public RawSignature parse() { signature.setSignatureBytes(parseByteArrayField(signature.getSignatureLength())); LOGGER.debug( "Signature bytes: {}", - ArrayConverter.bytesToHexString(signature.getSignatureBytes())); + () -> ArrayConverter.bytesToHexString(signature.getSignatureBytes())); return signature; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java index 4082b607e..fe657931f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java @@ -31,7 +31,7 @@ public DataPacket parse() { LOGGER.trace( "Complete packet bytes: {}", - ArrayConverter.bytesToHexString(packet.getCompletePacketBytes().getValue())); + () -> ArrayConverter.bytesToHexString(packet.getCompletePacketBytes().getValue())); return packet; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/PassThroughPacketParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/PassThroughPacketParser.java index fe32b6041..709714a28 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/PassThroughPacketParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/PassThroughPacketParser.java @@ -29,7 +29,7 @@ public PassThroughPacket parse() { LOGGER.trace( "Complete packet bytes: {}", - ArrayConverter.bytesToHexString(packet.getCompletePacketBytes().getValue())); + () -> ArrayConverter.bytesToHexString(packet.getCompletePacketBytes().getValue())); return packet; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java index 07bde6919..06dc5cb46 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java @@ -33,11 +33,14 @@ protected void serializeBytes() { appendBytes(dataPacket.getPayload().getValue()); LOGGER.debug( - "Payload: {}", ArrayConverter.bytesToHexString(dataPacket.getPayload().getValue())); + "Payload: {}", + () -> ArrayConverter.bytesToHexString(dataPacket.getPayload().getValue())); dataPacket.setCompletePacketBytes(getAlreadySerialized()); LOGGER.trace( "Complete packet bytes: {}", - ArrayConverter.bytesToHexString(dataPacket.getCompletePacketBytes().getValue())); + () -> + ArrayConverter.bytesToHexString( + dataPacket.getCompletePacketBytes().getValue())); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/PassThroughPacketSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/PassThroughPacketSerializer.java index 780e2f99d..04b3dfb53 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/PassThroughPacketSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/PassThroughPacketSerializer.java @@ -31,12 +31,13 @@ protected void serializeBytes() { appendBytes(passThroughPacket.getPayload().getValue()); LOGGER.trace( "Payload: {}", - ArrayConverter.bytesToHexString(passThroughPacket.getPayload().getValue())); + () -> ArrayConverter.bytesToHexString(passThroughPacket.getPayload().getValue())); passThroughPacket.setCompletePacketBytes(getAlreadySerialized()); LOGGER.trace( "Complete packet bytes: {}", - ArrayConverter.bytesToHexString( - passThroughPacket.getCompletePacketBytes().getValue())); + () -> + ArrayConverter.bytesToHexString( + passThroughPacket.getCompletePacketBytes().getValue())); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpUnknownMessageHandler.java index 3bc8020fc..adbf2f1dd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpUnknownMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpUnknownMessageHandler.java @@ -33,7 +33,7 @@ public SftpUnknownMessageHandler(SshContext context, SftpUnknownMessage message) public void adjustContext() { LOGGER.debug( "Received unknown message:\n{}", - ArrayConverter.bytesToHexString(message.getPayload())); + () -> ArrayConverter.bytesToHexString(message.getPayload())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java index d89890482..939437d0a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java @@ -38,7 +38,7 @@ private void parseFilename() { LOGGER.debug("Filename length: {}", message.getFilenameLength().getValue()); message.setFilename( parseByteString(message.getFilenameLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("Filename: {}", backslashEscapeString(message.getFilename().getValue())); + LOGGER.debug("Filename: {}", () -> backslashEscapeString(message.getFilename().getValue())); } private void parsePFlags() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java index 9683b14d1..15021e149 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java @@ -34,6 +34,7 @@ public SftpUnknownMessage createMessage() { protected void parseMessageSpecificContents() { message.setPayload(parseByteArrayField(getBytesLeft())); LOGGER.debug( - "Payload: {}", ArrayConverter.bytesToRawHexString(message.getPayload().getValue())); + "Payload: {}", + () -> ArrayConverter.bytesToRawHexString(message.getPayload().getValue())); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java index ad6243676..e48c763e5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java @@ -37,7 +37,7 @@ private void parseType() { LOGGER.debug("Type length: {}", attribute.getTypeLength().getValue()); attribute.setType( parseByteString(attribute.getTypeLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("Type: {}", backslashEscapeString(attribute.getType().getValue())); + LOGGER.debug("Type: {}", () -> backslashEscapeString(attribute.getType().getValue())); } private void parseData() { @@ -45,7 +45,8 @@ private void parseData() { LOGGER.debug("Data length: {}", attribute.getDataLength().getValue()); attribute.setData(parseByteArrayField(attribute.getDataLength().getValue())); LOGGER.debug( - "Data: {}", ArrayConverter.bytesToRawHexString(attribute.getData().getValue())); + "Data: {}", + () -> ArrayConverter.bytesToRawHexString(attribute.getData().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java index 51ba908ab..62e93dcf3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java @@ -45,7 +45,8 @@ protected void parseExtensionName() { LOGGER.debug("Extension name length: {}", extension.getNameLength().getValue()); extension.setName( parseByteString(extension.getNameLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("Extension name: {}", backslashEscapeString(extension.getName().getValue())); + LOGGER.debug( + "Extension name: {}", () -> backslashEscapeString(extension.getName().getValue())); } protected abstract void parseExtensionValue(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpUnknownExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpUnknownExtensionParser.java index 05c952902..8b44c4314 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpUnknownExtensionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpUnknownExtensionParser.java @@ -36,6 +36,6 @@ protected void parseExtensionValue() { extension.setValue(parseArrayOrTillEnd(extension.getValueLength().getValue())); LOGGER.debug( "Extension value: {}", - ArrayConverter.bytesToRawHexString(extension.getValue().getValue())); + () -> ArrayConverter.bytesToRawHexString(extension.getValue().getValue())); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java index 8009ce72b..8d8e7efa2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java @@ -27,7 +27,7 @@ public SftpRequestOpenMessageSerializer(SftpRequestOpenMessage message) { public void serializeFilename() { LOGGER.debug("Filename length: {}", message.getFilenameLength().getValue()); appendInt(message.getFilenameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Filename: {}", backslashEscapeString(message.getFilename().getValue())); + LOGGER.debug("Filename: {}", () -> backslashEscapeString(message.getFilename().getValue())); appendString(message.getFilename().getValue(), StandardCharsets.UTF_8); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java index 1f3d1935f..22ae9cb70 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java @@ -23,7 +23,7 @@ public SftpUnknownMessageSerializer(SftpUnknownMessage message) { @Override public void serializeMessageSpecificContents() { - LOGGER.debug("Payload: {}", ArrayConverter.bytesToHexString(message.getPayload())); + LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToHexString(message.getPayload())); appendBytes(message.getPayload().getValue()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java index 3aaaff5f4..dc11b269a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java @@ -31,7 +31,7 @@ public SftpFileExtendedAttributeSerializer(SftpFileExtendedAttribute attribute) public void serializeType() { LOGGER.debug("Type length: {}", attribute.getTypeLength().getValue()); appendInt(attribute.getTypeLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Type: {}", backslashEscapeString(attribute.getType().getValue())); + LOGGER.debug("Type: {}", () -> backslashEscapeString(attribute.getType().getValue())); appendString(attribute.getType().getValue(), StandardCharsets.US_ASCII); } @@ -39,7 +39,8 @@ public void serializeData() { LOGGER.debug("Data length: {}", attribute.getDataLength().getValue()); appendInt(attribute.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Data: {}", ArrayConverter.bytesToRawHexString(attribute.getData().getValue())); + "Data: {}", + () -> ArrayConverter.bytesToRawHexString(attribute.getData().getValue())); appendBytes(attribute.getData().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java index e2a154d7a..81888da4e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java @@ -37,7 +37,8 @@ protected final void serializeBytes() { private void serializeExtensionName() { LOGGER.debug("Extension name length: {}", extension.getNameLength().getValue()); appendInt(extension.getNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Extension name: {}", backslashEscapeString(extension.getName().getValue())); + LOGGER.debug( + "Extension name: {}", () -> backslashEscapeString(extension.getName().getValue())); appendString(extension.getName().getValue(), StandardCharsets.US_ASCII); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java index 785d35307..4a02d1712 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java @@ -28,7 +28,7 @@ protected void serializeExtensionValue() { appendInt(extension.getValueLength().getValue(), DataFormatConstants.UINT32_SIZE); LOGGER.debug( "Extension value: {}", - ArrayConverter.bytesToRawHexString(extension.getValue().getValue())); + () -> ArrayConverter.bytesToRawHexString(extension.getValue().getValue())); appendBytes(extension.getValue().getValue()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java index 5ea91411f..dc1792a54 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java @@ -33,7 +33,7 @@ public StringDataMessage createMessage() { private void parseData() { message.setData(parseByteString(getBytesLeft(), StandardCharsets.UTF_8)); - LOGGER.debug("Data: {}", backslashEscapeString(message.getData().getValue())); + LOGGER.debug("Data: {}", () -> backslashEscapeString(message.getData().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java index 2e64198a0..8236670a5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java @@ -23,7 +23,7 @@ public StringDataMessageSerializer(StringDataMessage message) { } private void serializeData() { - LOGGER.debug("Data: {}", backslashEscapeString(message.getData().getValue())); + LOGGER.debug("Data: {}", () -> backslashEscapeString(message.getData().getValue())); appendString(message.getData().getValue(), StandardCharsets.UTF_8); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageHandler.java index 966a4f6e7..89374f459 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageHandler.java @@ -25,7 +25,7 @@ public UnknownDataMessageHandler(SshContext context, UnknownDataMessage message) public void adjustContext() { LOGGER.debug( "Received unknown data message:\n{}", - ArrayConverter.bytesToHexString(message.getPayload())); + () -> ArrayConverter.bytesToHexString(message.getPayload())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java index b30eb6b34..64b0a5cf0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java @@ -33,6 +33,7 @@ public UnknownDataMessage createMessage() { public void parseProtocolMessageContents() { message.setPayload(parseByteArrayField(getBytesLeft())); LOGGER.debug( - "Payload: {}", ArrayConverter.bytesToRawHexString(message.getPayload().getValue())); + "Payload: {}", + () -> ArrayConverter.bytesToRawHexString(message.getPayload().getValue())); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java index 1469fafae..74a22f6ee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java @@ -22,7 +22,7 @@ public UnknownDataMessageSerializer(UnknownDataMessage message) { @Override public final void serializeProtocolMessageContents() { - LOGGER.debug("Payload: {}", ArrayConverter.bytesToHexString(message.getPayload())); + LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToHexString(message.getPayload())); appendBytes(message.getPayload().getValue()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/parser/BinaryPacketParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/parser/BinaryPacketParser.java index afba3292f..4990bafd5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/parser/BinaryPacketParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/parser/BinaryPacketParser.java @@ -62,26 +62,33 @@ public BinaryPacket parse() { LOGGER.trace( "Complete packet bytes: {}", - ArrayConverter.bytesToHexString( - binaryPacket.getCompletePacketBytes().getValue())); + () -> + ArrayConverter.bytesToHexString( + binaryPacket.getCompletePacketBytes().getValue())); LOGGER.debug("Packet length: {}", binaryPacket.getLength().getValue()); if (activeDecryptCipher.getEncryptionAlgorithm() == EncryptionAlgorithm.NONE) { LOGGER.debug( "Packet bytes: {}", - ArrayConverter.bytesToHexString(binaryPacket.getCiphertext().getValue())); + () -> + ArrayConverter.bytesToHexString( + binaryPacket.getCiphertext().getValue())); } else { LOGGER.debug( "Encrypted packet bytes: {}", - ArrayConverter.bytesToHexString(binaryPacket.getCiphertext().getValue())); + () -> + ArrayConverter.bytesToHexString( + binaryPacket.getCiphertext().getValue())); } if (activeDecryptCipher.getEncryptionAlgorithm().getMode() == EncryptionMode.GCM) { LOGGER.debug( "Authentication tag: {}", - ArrayConverter.bytesToHexString(binaryPacket.getMac())); + () -> ArrayConverter.bytesToHexString(binaryPacket.getMac())); } else { if (binaryPacket.getMac().getValue().length > 0) { - LOGGER.debug("MAC: {}", ArrayConverter.bytesToHexString(binaryPacket.getMac())); + LOGGER.debug( + "MAC: {}", + () -> ArrayConverter.bytesToHexString(binaryPacket.getMac())); } else { LOGGER.debug("MAC: [empty]"); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/parser/BlobPacketParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/parser/BlobPacketParser.java index d01bbccd6..933b71076 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/parser/BlobPacketParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/parser/BlobPacketParser.java @@ -30,7 +30,7 @@ public BlobPacket parse() { LOGGER.debug( "Complete packet bytes: {}", - ArrayConverter.bytesToHexString(packet.getCompletePacketBytes().getValue())); + () -> ArrayConverter.bytesToHexString(packet.getCompletePacketBytes().getValue())); return packet; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BinaryPacketSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BinaryPacketSerializer.java index 625b4f0e6..a59e7bc2d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BinaryPacketSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BinaryPacketSerializer.java @@ -44,24 +44,26 @@ protected void serializeBytes() { appendBytes(binaryPacket.getCiphertext().getValue()); LOGGER.debug( "Ciphertext: {}", - ArrayConverter.bytesToHexString(binaryPacket.getCiphertext().getValue())); + () -> ArrayConverter.bytesToHexString(binaryPacket.getCiphertext().getValue())); if (!encryptedFields.contains(BinaryPacketField.PADDING)) { appendBytes(binaryPacket.getPadding().getValue()); LOGGER.debug( "Padding: {}", - ArrayConverter.bytesToHexString(binaryPacket.getPadding().getValue())); + () -> ArrayConverter.bytesToHexString(binaryPacket.getPadding().getValue())); } appendBytes(binaryPacket.getMac().getValue()); LOGGER.debug( "MAC / Authentication tag: {}", - ArrayConverter.bytesToHexString(binaryPacket.getMac().getValue())); + () -> ArrayConverter.bytesToHexString(binaryPacket.getMac().getValue())); binaryPacket.setCompletePacketBytes(getAlreadySerialized()); LOGGER.trace( "Complete payload bytes: {}", - ArrayConverter.bytesToHexString(binaryPacket.getPayload().getValue())); + () -> ArrayConverter.bytesToHexString(binaryPacket.getPayload().getValue())); LOGGER.trace( "Complete packet bytes: {}", - ArrayConverter.bytesToHexString(binaryPacket.getCompletePacketBytes().getValue())); + () -> + ArrayConverter.bytesToHexString( + binaryPacket.getCompletePacketBytes().getValue())); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BlobPacketSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BlobPacketSerializer.java index 23ad9fd23..36ed9714f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BlobPacketSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BlobPacketSerializer.java @@ -29,7 +29,7 @@ protected void serializeBytes() { appendBytes(packet.getCiphertext().getValue()); LOGGER.debug( "Ciphertext: {}", - ArrayConverter.bytesToHexString(packet.getCiphertext().getValue())); + () -> ArrayConverter.bytesToHexString(packet.getCiphertext().getValue())); packet.setCompletePacketBytes(getAlreadySerialized()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthHostbasedMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthHostbasedMessageParser.java index 16e577b50..228ad9d19 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthHostbasedMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthHostbasedMessageParser.java @@ -42,7 +42,7 @@ private void parsePubKeyAlgorithm() { message.setPubKeyAlgorithm(parseByteString(message.getPubKeyAlgorithmLength().getValue())); LOGGER.debug( "Public key algorithm: {}", - backslashEscapeString(message.getPubKeyAlgorithm().getValue())); + () -> backslashEscapeString(message.getPubKeyAlgorithm().getValue())); } private void parseHostKeyBytes() { @@ -51,14 +51,15 @@ private void parseHostKeyBytes() { message.setHostKeyBytes(parseByteArrayField(message.getHostKeyBytesLength().getValue())); LOGGER.debug( "Host key bytes: {}", - ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); } private void parseHostName() { message.setHostNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Host name length: {}", message.getHostNameLength().getValue()); message.setHostName(parseByteString(message.getHostNameLength().getValue())); - LOGGER.debug("Host name: {}", backslashEscapeString(message.getHostName().getValue())); + LOGGER.debug( + "Host name: {}", () -> backslashEscapeString(message.getHostName().getValue())); } private void parseClientUserName() { @@ -69,7 +70,7 @@ private void parseClientUserName() { message.getClientUserNameLength().getValue(), StandardCharsets.UTF_8)); LOGGER.debug( "Client user name: {}", - backslashEscapeString(message.getClientUserName().getValue())); + () -> backslashEscapeString(message.getClientUserName().getValue())); } private void parseSignature() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoRequestMessageParser.java index 6a7d304b7..99a744898 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoRequestMessageParser.java @@ -38,14 +38,17 @@ private void parseUserName() { message.setUserNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("User name length: {}", message.getUserNameLength().getValue()); message.setUserName(parseByteString(message.getUserNameLength().getValue())); - LOGGER.debug("User name: {}", backslashEscapeString(message.getUserName().getValue())); + LOGGER.debug( + "User name: {}", () -> backslashEscapeString(message.getUserName().getValue())); } private void parseInstruction() { message.setInstructionLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Instruction length: {}", message.getInstructionLength().getValue()); message.setInstruction(parseByteString(message.getInstructionLength().getValue())); - LOGGER.debug("Instruction: {}", backslashEscapeString(message.getInstruction().getValue())); + LOGGER.debug( + "Instruction: {}", + () -> backslashEscapeString(message.getInstruction().getValue())); } private void parseLanguageTag() { @@ -53,7 +56,8 @@ private void parseLanguageTag() { LOGGER.debug("Language tag length: {}", message.getLanguageTagLength().getValue()); message.setLanguageTag(parseByteString(message.getLanguageTagLength().getValue())); LOGGER.debug( - "Language tag: {}", backslashEscapeString(message.getLanguageTag().getValue())); + "Language tag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); } private void parsePromptEntries() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthKeyboardInteractiveMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthKeyboardInteractiveMessageParser.java index 60a039298..cc07be497 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthKeyboardInteractiveMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthKeyboardInteractiveMessageParser.java @@ -40,7 +40,8 @@ private void parseLanguageTag() { parseByteString( message.getLanguageTagLength().getValue(), StandardCharsets.US_ASCII)); LOGGER.debug( - "Language tag: {}", backslashEscapeString(message.getLanguageTag().getValue())); + "Language tag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); } private void parseSubMethods() { @@ -48,7 +49,8 @@ private void parseSubMethods() { LOGGER.debug("Sub methods length: {}", message.getSubMethodsLength().getValue()); message.setSubMethods( parseByteString(message.getSubMethodsLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("Sub methods: {}", backslashEscapeString(message.getSubMethods().getValue())); + LOGGER.debug( + "Sub methods: {}", () -> backslashEscapeString(message.getSubMethods().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPkOkMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPkOkMessageParser.java index 392daf704..6b6e05795 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPkOkMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPkOkMessageParser.java @@ -38,7 +38,7 @@ private void parsePubkey() { LOGGER.debug("Pubkey length: {}", message.getPubkeyLength().getValue()); message.setPubkey( parseByteString(message.getPubkeyLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("Pubkey: {}", backslashEscapeString(message.getPubkey().getValue())); + LOGGER.debug("Pubkey: {}", () -> backslashEscapeString(message.getPubkey().getValue())); } private void parsePubkeyAlgName() { @@ -50,7 +50,7 @@ private void parsePubkeyAlgName() { message.getPubkeyAlgNameLength().getValue(), StandardCharsets.US_ASCII)); LOGGER.debug( "Pubkey algorithm name: {}", - backslashEscapeString(message.getPubkeyAlgName().getValue())); + () -> backslashEscapeString(message.getPubkeyAlgName().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPubkeyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPubkeyMessageParser.java index 3c3f7e960..027568c44 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPubkeyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPubkeyMessageParser.java @@ -40,7 +40,8 @@ private void parsePubkey() { LOGGER.debug("Pubkey length: {}", message.getPubkeyLength().getValue()); message.setPubkey(parseByteArrayField(message.getPubkeyLength().getValue())); LOGGER.debug( - "Pubkey: {}", ArrayConverter.bytesToRawHexString(message.getPubkey().getValue())); + "Pubkey: {}", + () -> ArrayConverter.bytesToRawHexString(message.getPubkey().getValue())); } private void parsePubkeyAlgName() { @@ -52,7 +53,7 @@ private void parsePubkeyAlgName() { message.getPubkeyAlgNameLength().getValue(), StandardCharsets.US_ASCII)); LOGGER.debug( "Pubkey algorithm name: {}", - backslashEscapeString(message.getPubkeyAlgName().getValue())); + () -> backslashEscapeString(message.getPubkeyAlgName().getValue())); } private void parseUseSignature() { @@ -66,7 +67,7 @@ private void parseSignature() { message.setSignature(parseByteArrayField(message.getSignatureLength().getValue())); LOGGER.debug( "Signature: {}", - ArrayConverter.bytesToRawHexString(message.getSignature().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getSignature().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthRequestMessageParser.java index 36c405a46..4437a0dde 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthRequestMessageParser.java @@ -34,7 +34,7 @@ private void parseUserName() { LOGGER.debug("Username length: {}", message.getUserNameLength().getValue()); message.setUserName( parseByteString(message.getUserNameLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("Username: {}", backslashEscapeString(message.getUserName().getValue())); + LOGGER.debug("Username: {}", () -> backslashEscapeString(message.getUserName().getValue())); } private void parseServiceName() { @@ -43,7 +43,9 @@ private void parseServiceName() { message.setServiceName( parseByteString( message.getServiceNameLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("Servicename: {}", backslashEscapeString(message.getServiceName().getValue())); + LOGGER.debug( + "Servicename: {}", + () -> backslashEscapeString(message.getServiceName().getValue())); } private void parseMethodName() { @@ -52,7 +54,8 @@ private void parseMethodName() { message.setMethodName( parseByteString( message.getMethodNameLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("Methodname: {}", backslashEscapeString(message.getMethodName().getValue())); + LOGGER.debug( + "Methodname: {}", () -> backslashEscapeString(message.getMethodName().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthUnknownMessageParser.java index 1c842e7d1..3784df5dd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthUnknownMessageParser.java @@ -34,7 +34,9 @@ private void parseMethodSpecificFields() { message.setMethodSpecificFields(parseByteArrayField(getBytesLeft())); LOGGER.debug( "Method Specific Fields: {}", - ArrayConverter.bytesToHexString(message.getMethodSpecificFields().getValue())); + () -> + ArrayConverter.bytesToHexString( + message.getMethodSpecificFields().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthBannerMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthBannerMessageSerializer.java index 7e880118a..bf59660bd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthBannerMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthBannerMessageSerializer.java @@ -27,7 +27,7 @@ public UserAuthBannerMessageSerializer(UserAuthBannerMessage message) { private void serializeMessage() { LOGGER.debug("Message length: {}", message.getMessageLength().getValue()); appendInt(message.getMessageLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Message: {}", backslashEscapeString(message.getMessage().getValue())); + LOGGER.debug("Message: {}", () -> backslashEscapeString(message.getMessage().getValue())); appendString(message.getMessage().getValue(), StandardCharsets.UTF_8); } @@ -36,7 +36,8 @@ private void serializeLanguageTag() { appendInt( message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Language tag: {}", backslashEscapeString(message.getLanguageTag().getValue())); + "Language tag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); appendString(message.getLanguageTag().getValue(), StandardCharsets.US_ASCII); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthHostbasedMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthHostbasedMessageSerializer.java index 1c7db0742..d59fcf4d9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthHostbasedMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthHostbasedMessageSerializer.java @@ -42,14 +42,15 @@ private void serializeHostKeyBytes() { appendBytes(message.getHostKeyBytes().getValue()); LOGGER.debug( "Host key: {}", - ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); } private void serializeHostName() { appendInt(message.getHostNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug("Host name length: {}", message.getHostNameLength().getValue()); appendString(message.getHostName().getValue()); - LOGGER.debug("Host name: {}", backslashEscapeString(message.getHostName().getValue())); + LOGGER.debug( + "Host name: {}", () -> backslashEscapeString(message.getHostName().getValue())); } private void serializeClientUserName() { @@ -60,7 +61,7 @@ private void serializeClientUserName() { appendString(message.getClientUserName().getValue(), StandardCharsets.UTF_8); LOGGER.debug( "Client user name: {}", - backslashEscapeString(message.getClientUserName().getValue())); + () -> backslashEscapeString(message.getClientUserName().getValue())); } private void serializeSignature() { @@ -69,7 +70,7 @@ private void serializeSignature() { appendBytes(message.getSignature().getValue()); LOGGER.debug( "Signature: {}", - ArrayConverter.bytesToRawHexString(message.getSignature().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getSignature().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java index c2fbffa7e..d016e4fe6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java @@ -29,7 +29,8 @@ public UserAuthInfoRequestMessageSerializer(UserAuthInfoRequestMessage message) private void serializeUserName() { LOGGER.debug("User name length: {}", message.getUserNameLength().getValue()); appendInt(message.getUserNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("User name: {}", backslashEscapeString(message.getUserName().getValue())); + LOGGER.debug( + "User name: {}", () -> backslashEscapeString(message.getUserName().getValue())); appendString(message.getUserName().getValue()); } @@ -37,7 +38,9 @@ private void serializeInstruction() { LOGGER.debug("Instruction length: {}", message.getInstructionLength().getValue()); appendInt( message.getInstructionLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Instruction: {}", backslashEscapeString(message.getInstruction().getValue())); + LOGGER.debug( + "Instruction: {}", + () -> backslashEscapeString(message.getInstruction().getValue())); appendString(message.getInstruction().getValue()); } @@ -46,7 +49,8 @@ private void serializeLanguageTag() { appendInt( message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Language tag: {}", backslashEscapeString(message.getLanguageTag().getValue())); + "Language tag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); appendString(message.getLanguageTag().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthKeyboardInteractiveMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthKeyboardInteractiveMessageSerializer.java index 4cd00cec2..eafc92d21 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthKeyboardInteractiveMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthKeyboardInteractiveMessageSerializer.java @@ -30,14 +30,16 @@ private void serializeLanguageTag() { appendInt( message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Language tag: {}", backslashEscapeString(message.getLanguageTag().getValue())); + "Language tag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); appendString(message.getLanguageTag().getValue(), StandardCharsets.US_ASCII); } private void serializeSubMethods() { LOGGER.debug("Sub methods length: {}", message.getSubMethodsLength().getValue()); appendInt(message.getSubMethodsLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Sub methods: {}", backslashEscapeString(message.getSubMethods().getValue())); + LOGGER.debug( + "Sub methods: {}", () -> backslashEscapeString(message.getSubMethods().getValue())); appendString(message.getSubMethods().getValue(), StandardCharsets.UTF_8); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPubkeyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPubkeyMessageSerializer.java index a4d0534f3..d991d64f0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPubkeyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPubkeyMessageSerializer.java @@ -40,7 +40,7 @@ private void serializePubkeyAlgName() { DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Pubkey algorithm name: {}", - backslashEscapeString(message.getPubkeyAlgName().getValue())); + () -> backslashEscapeString(message.getPubkeyAlgName().getValue())); appendString(message.getPubkeyAlgName().getValue(), StandardCharsets.US_ASCII); } @@ -48,7 +48,8 @@ private void serializePubkey() { LOGGER.debug("Pubkey length: {}", message.getPubkeyLength().getValue()); appendInt(message.getPubkeyLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Pubkey: {}", ArrayConverter.bytesToRawHexString(message.getPubkey().getValue())); + "Pubkey: {}", + () -> ArrayConverter.bytesToRawHexString(message.getPubkey().getValue())); appendBytes(message.getPubkey().getValue()); } @@ -57,7 +58,7 @@ private void serializeSignature() { appendInt(message.getSignatureLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Signature: {}", - ArrayConverter.bytesToRawHexString(message.getSignature().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getSignature().getValue())); appendBytes(message.getSignature().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthRequestMessageSerializer.java index 93b372e7a..f9e127313 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthRequestMessageSerializer.java @@ -28,7 +28,8 @@ protected UserAuthRequestMessageSerializer(T message) { private void serializeUserName() { LOGGER.debug("User name length: {}", message.getUserNameLength().getValue()); appendInt(message.getUserNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("User name: {}", backslashEscapeString(message.getUserName().getValue())); + LOGGER.debug( + "User name: {}", () -> backslashEscapeString(message.getUserName().getValue())); appendString(message.getUserName().getValue(), StandardCharsets.UTF_8); } @@ -37,14 +38,16 @@ private void serializeServiceName() { appendInt( message.getServiceNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Service name: {}", backslashEscapeString(message.getServiceName().getValue())); + "Service name: {}", + () -> backslashEscapeString(message.getServiceName().getValue())); appendString(message.getServiceName().getValue(), StandardCharsets.US_ASCII); } private void serializeMethodName() { LOGGER.debug("Method name length: {}", message.getMethodNameLength().getValue()); appendInt(message.getMethodNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Method name: {}", backslashEscapeString(message.getMethodName().getValue())); + LOGGER.debug( + "Method name: {}", () -> backslashEscapeString(message.getMethodName().getValue())); appendString(message.getMethodName().getValue(), StandardCharsets.US_ASCII); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthUnknownMessageSerializer.java index e2fda6a34..f3bb80a2d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthUnknownMessageSerializer.java @@ -24,7 +24,9 @@ public UserAuthUnknownMessageSerializer(UserAuthUnknownMessage message) { private void serializeMethodSpecificFields() { LOGGER.debug( "Method Specific Fields: {}", - ArrayConverter.bytesToHexString(message.getMethodSpecificFields().getValue())); + () -> + ArrayConverter.bytesToHexString( + message.getMethodSpecificFields().getValue())); appendBytes(message.getMethodSpecificFields().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ProtocolMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ProtocolMessageParser.java index 162d83c45..eff3bb32b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ProtocolMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ProtocolMessageParser.java @@ -52,7 +52,9 @@ private void setCompleteResultingMessage() { message.setCompleteResultingMessage(getAlreadyParsed()); LOGGER.trace( "Complete message bytes parsed: {}", - ArrayConverter.bytesToHexString(message.getCompleteResultingMessage().getValue())); + () -> + ArrayConverter.bytesToHexString( + message.getCompleteResultingMessage().getValue())); } public static ProtocolMessage delegateParsing(AbstractPacket packet, SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java index 760893a2d..412f02d46 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java @@ -34,7 +34,8 @@ private void parseData() { message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Data length: {}", message.getDataLength().getValue()); message.setData(parseByteArrayField(message.getDataLength().getValue())); - LOGGER.debug("Data: {}", ArrayConverter.bytesToHexString(message.getData().getValue())); + LOGGER.debug( + "Data: {}", () -> ArrayConverter.bytesToHexString(message.getData().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelExtendedDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelExtendedDataMessageParser.java index 9ed07d929..20758ff79 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelExtendedDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelExtendedDataMessageParser.java @@ -44,7 +44,8 @@ private void parseData() { message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Data length: {}", message.getDataLength().getValue()); message.setData(parseByteArrayField(message.getDataLength().getValue())); - LOGGER.debug("Data: {}", ArrayConverter.bytesToRawHexString(message.getData().getValue())); + LOGGER.debug( + "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenFailureMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenFailureMessageParser.java index 140d91333..62d429c41 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenFailureMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenFailureMessageParser.java @@ -43,7 +43,7 @@ private void parseReason() { LOGGER.debug("Reason length: {}", message.getReasonLength()); message.setReason( parseByteString(message.getReasonLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("Reason: {}", backslashEscapeString(message.getReason().getValue())); + LOGGER.debug("Reason: {}", () -> backslashEscapeString(message.getReason().getValue())); } private void parseLanguageTag() { @@ -53,7 +53,8 @@ private void parseLanguageTag() { parseByteString( message.getLanguageTagLength().getValue(), StandardCharsets.US_ASCII)); LOGGER.debug( - "Language tag: {}", backslashEscapeString(message.getLanguageTag().getValue())); + "Language tag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenMessageParser.java index d27dc7bd8..90ff34838 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenMessageParser.java @@ -36,7 +36,8 @@ public void parseChannelType() { parseByteString( message.getChannelTypeLength().getValue(), StandardCharsets.US_ASCII)); LOGGER.debug( - "Channel type: {}", backslashEscapeString(message.getChannelType().getValue())); + "Channel type: {}", + () -> backslashEscapeString(message.getChannelType().getValue())); } public void parseSenderChannel() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenUnknownMessageParser.java index 889a6566e..17e7c04b9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenUnknownMessageParser.java @@ -33,7 +33,7 @@ public void parseTypeSpecificData() { message.setTypeSpecificData(parseByteArrayField(getBytesLeft())); LOGGER.debug( "Type specific data: {}", - ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); + () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestEnvMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestEnvMessageParser.java index 610a1f54a..30ad70126 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestEnvMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestEnvMessageParser.java @@ -37,7 +37,8 @@ public void parseVariableName() { LOGGER.debug("Variable name length: {}", message.getVariableNameLength().getValue()); message.setVariableName(parseByteString(message.getVariableNameLength().getValue())); LOGGER.debug( - "Variable name: {}", backslashEscapeString(message.getVariableName().getValue())); + "Variable name: {}", + () -> backslashEscapeString(message.getVariableName().getValue())); } public void parseVariableValue() { @@ -45,7 +46,8 @@ public void parseVariableValue() { LOGGER.debug("Variable value length: {}", message.getVariableValueLength().getValue()); message.setVariableValue(parseByteString(message.getVariableValueLength().getValue())); LOGGER.debug( - "Variable value: {}", backslashEscapeString(message.getVariableValue().getValue())); + "Variable value: {}", + () -> backslashEscapeString(message.getVariableValue().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitSignalMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitSignalMessageParser.java index 149552932..04e66d17f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitSignalMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitSignalMessageParser.java @@ -37,7 +37,8 @@ public void parseSignalName() { message.setSignalNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Signal name length: {}", message.getSignalNameLength().getValue()); message.setSignalName(parseByteString(message.getSignalNameLength().getValue())); - LOGGER.debug("Signal name: {}", backslashEscapeString(message.getSignalName().getValue())); + LOGGER.debug( + "Signal name: {}", () -> backslashEscapeString(message.getSignalName().getValue())); } public void parseCoreDump() { @@ -50,7 +51,8 @@ public void parseErrorMessage() { LOGGER.debug("Error message length: {}", message.getErrorMessageLength().getValue()); message.setErrorMessage(parseByteString(message.getErrorMessageLength().getValue())); LOGGER.debug( - "Error message: {}", backslashEscapeString(message.getErrorMessage().getValue())); + "Error message: {}", + () -> backslashEscapeString(message.getErrorMessage().getValue())); } private void parseLanguageTag() { @@ -60,7 +62,8 @@ private void parseLanguageTag() { parseByteString( message.getLanguageTagLength().getValue(), StandardCharsets.US_ASCII)); LOGGER.debug( - "Language tag: {}", backslashEscapeString(message.getLanguageTag().getValue())); + "Language tag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestPtyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestPtyMessageParser.java index 007b686bf..8339ccf27 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestPtyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestPtyMessageParser.java @@ -70,7 +70,9 @@ public void parseEncodedTerminalModes() { parseByteArrayField(message.getEncodedTerminalModesLength().getValue())); LOGGER.debug( "Encoded terminal modes: {}", - ArrayConverter.bytesToHexString(message.getEncodedTerminalModes().getValue())); + () -> + ArrayConverter.bytesToHexString( + message.getEncodedTerminalModes().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSignalMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSignalMessageParser.java index 7cbc0b579..60dcfa537 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSignalMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSignalMessageParser.java @@ -36,7 +36,8 @@ public void parseSignalName() { message.setSignalNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Signal name length: {}", message.getSignalNameLength().getValue()); message.setSignalName(parseByteString(message.getSignalNameLength().getValue())); - LOGGER.debug("Signal name: {}", backslashEscapeString(message.getSignalName().getValue())); + LOGGER.debug( + "Signal name: {}", () -> backslashEscapeString(message.getSignalName().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSubsystemMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSubsystemMessageParser.java index 5254eeca3..b7262926b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSubsystemMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSubsystemMessageParser.java @@ -39,7 +39,8 @@ public void parseSubsystemName() { parseByteString( message.getSubsystemNameLength().getValue(), StandardCharsets.UTF_8)); LOGGER.debug( - "Subsystem name: {}", backslashEscapeString(message.getSubsystemName().getValue())); + "Subsystem name: {}", + () -> backslashEscapeString(message.getSubsystemName().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestUnknownMessageParser.java index ff8b8f822..c1a4ac59a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestUnknownMessageParser.java @@ -33,7 +33,7 @@ public void parseTypeSpecificData() { message.setTypeSpecificData(parseByteArrayField(getBytesLeft())); LOGGER.debug( "Type specific data: {}", - ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); + () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestMessageParser.java index 89f3ec9f4..9ac4c7f38 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestMessageParser.java @@ -37,7 +37,8 @@ private void parseRequestName() { parseByteString( message.getRequestNameLength().getValue(), StandardCharsets.US_ASCII)); LOGGER.debug( - "Request name: {}", backslashEscapeString(message.getRequestName().getValue())); + "Request name: {}", + () -> backslashEscapeString(message.getRequestName().getValue())); } private void parseWantReply() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestOpenSshHostKeysMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestOpenSshHostKeysMessageParser.java index a15679f1c..40260492b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestOpenSshHostKeysMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestOpenSshHostKeysMessageParser.java @@ -29,7 +29,7 @@ private void parseHostKeys() { message.setHostKeys(parseByteArrayField(getBytesLeft())); LOGGER.debug( "Host keys blob: {}", - ArrayConverter.bytesToRawHexString(message.getHostKeys().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getHostKeys().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestSuccessMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestSuccessMessageParser.java index 0a116e618..9415359e1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestSuccessMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestSuccessMessageParser.java @@ -30,7 +30,9 @@ private void parseResponseSpecificData() { message.setResponseSpecificData(parseByteArrayField(getBytesLeft())); LOGGER.debug( "Response specific data blob: {}", - ArrayConverter.bytesToRawHexString(message.getResponseSpecificData().getValue())); + () -> + ArrayConverter.bytesToRawHexString( + message.getResponseSpecificData().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestUnknownMessageParser.java index ea2a240f1..501accac2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestUnknownMessageParser.java @@ -33,7 +33,7 @@ public void parseTypeSpecificData() { message.setTypeSpecificData(parseByteArrayField(getBytesLeft())); LOGGER.debug( "Type specific data: {}", - ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); + () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java index 71751aeee..619ed9946 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java @@ -24,7 +24,8 @@ public ChannelDataMessageSerializer(ChannelDataMessage message) { private void serializeData() { LOGGER.debug("Data length: {}", message.getDataLength().getValue()); appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Data: {}", ArrayConverter.bytesToHexString(message.getData().getValue())); + LOGGER.debug( + "Data: {}", () -> ArrayConverter.bytesToHexString(message.getData().getValue())); appendBytes(message.getData().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelExtendedDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelExtendedDataMessageSerializer.java index 4f83efb1f..d9c8c2a34 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelExtendedDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelExtendedDataMessageSerializer.java @@ -34,7 +34,8 @@ private void serializeDataTypeCode() { private void serializeData() { LOGGER.debug("Data length: {}", message.getDataLength().getValue()); appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Data: {}", ArrayConverter.bytesToRawHexString(message.getData().getValue())); + LOGGER.debug( + "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); appendBytes(message.getData().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenFailureMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenFailureMessageSerializer.java index e7ad3908f..7bf4c34a5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenFailureMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenFailureMessageSerializer.java @@ -32,7 +32,7 @@ private void serializeReasonCode() { private void serializeReason() { LOGGER.debug("Reason length: {}", message.getReasonLength().getValue()); appendInt(message.getReasonLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Reason: {}", backslashEscapeString(message.getReason().getValue())); + LOGGER.debug("Reason: {}", () -> backslashEscapeString(message.getReason().getValue())); appendString(message.getReason().getValue(), StandardCharsets.UTF_8); } @@ -41,7 +41,8 @@ private void serializeLanguageTag() { appendInt( message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Language tag: {}", backslashEscapeString(message.getLanguageTag().getValue())); + "Language tag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); appendString(message.getLanguageTag().getValue(), StandardCharsets.US_ASCII); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenUnknownMessageSerializer.java index a1dda90a2..99f6953db 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenUnknownMessageSerializer.java @@ -24,7 +24,7 @@ public ChannelOpenUnknownMessageSerializer(ChannelOpenUnknownMessage message) { public void serializeTypeSpecificData() { LOGGER.debug( "Type specific data: {}", - ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); + () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); appendBytes(message.getTypeSpecificData().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestEnvMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestEnvMessageSerializer.java index 29d98c6ee..48c90e3dc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestEnvMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestEnvMessageSerializer.java @@ -29,7 +29,8 @@ public void serializeVariableName() { appendInt( message.getVariableNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Variable name: {}", backslashEscapeString(message.getVariableName().getValue())); + "Variable name: {}", + () -> backslashEscapeString(message.getVariableName().getValue())); appendString(message.getVariableName().getValue(), StandardCharsets.UTF_8); } @@ -39,7 +40,8 @@ public void serializeVariableValue() { message.getVariableValueLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Variable value: {}", backslashEscapeString(message.getVariableValue().getValue())); + "Variable value: {}", + () -> backslashEscapeString(message.getVariableValue().getValue())); appendString(message.getVariableValue().getValue(), StandardCharsets.UTF_8); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExecMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExecMessageSerializer.java index 1ae7bf664..8d2d6bad9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExecMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExecMessageSerializer.java @@ -27,7 +27,7 @@ public ChannelRequestExecMessageSerializer(ChannelRequestExecMessage message) { private void serializeCommand() { LOGGER.debug("Command length: {}", message.getCommandLength().getValue()); appendInt(message.getCommandLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Command: {}", backslashEscapeString(message.getCommand().getValue())); + LOGGER.debug("Command: {}", () -> backslashEscapeString(message.getCommand().getValue())); appendString(message.getCommand().getValue(), StandardCharsets.UTF_8); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitSignalMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitSignalMessageSerializer.java index 41cbdca9a..95efed878 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitSignalMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitSignalMessageSerializer.java @@ -28,7 +28,8 @@ public ChannelRequestExitSignalMessageSerializer(ChannelRequestExitSignalMessage public void serializeSignalName() { LOGGER.debug("Signal name length: {}", message.getSignalNameLength().getValue()); appendInt(message.getSignalNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Signal name: {}", backslashEscapeString(message.getSignalName().getValue())); + LOGGER.debug( + "Signal name: {}", () -> backslashEscapeString(message.getSignalName().getValue())); appendString(message.getSignalName().getValue(), StandardCharsets.UTF_8); } @@ -42,7 +43,8 @@ public void serializeErrorMessage() { appendInt( message.getErrorMessageLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Error message: {}", backslashEscapeString(message.getErrorMessage().getValue())); + "Error message: {}", + () -> backslashEscapeString(message.getErrorMessage().getValue())); appendString(message.getErrorMessage().getValue(), StandardCharsets.UTF_8); } @@ -51,7 +53,8 @@ private void serializeLanguageTag() { appendInt( message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Language tag: {}", backslashEscapeString(message.getLanguageTag().getValue())); + "Language tag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); appendString(message.getLanguageTag().getValue(), StandardCharsets.US_ASCII); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestPtyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestPtyMessageSerializer.java index 2e19abaa8..6f192a629 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestPtyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestPtyMessageSerializer.java @@ -62,7 +62,9 @@ public void serializeEncodedTerminalModes() { DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Endcoded terminal modes: {}", - ArrayConverter.bytesToHexString(message.getEncodedTerminalModes().getValue())); + () -> + ArrayConverter.bytesToHexString( + message.getEncodedTerminalModes().getValue())); appendBytes(message.getEncodedTerminalModes().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSignalMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSignalMessageSerializer.java index e64bab4b5..393607a87 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSignalMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSignalMessageSerializer.java @@ -27,7 +27,8 @@ public ChannelRequestSignalMessageSerializer(ChannelRequestSignalMessage message public void serializeSignalName() { LOGGER.debug("Signal name length: {}", message.getSignalNameLength().getValue()); appendInt(message.getSignalNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Signal name: {}", backslashEscapeString(message.getSignalName().getValue())); + LOGGER.debug( + "Signal name: {}", () -> backslashEscapeString(message.getSignalName().getValue())); appendString(message.getSignalName().getValue(), StandardCharsets.UTF_8); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSubsystemMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSubsystemMessageSerializer.java index 944c6d861..b8f2a2715 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSubsystemMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSubsystemMessageSerializer.java @@ -30,7 +30,8 @@ public void serializeSubsystemName() { message.getSubsystemNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Subsytem name: {}", backslashEscapeString(message.getSubsystemName().getValue())); + "Subsytem name: {}", + () -> backslashEscapeString(message.getSubsystemName().getValue())); appendString(message.getSubsystemName().getValue(), StandardCharsets.UTF_8); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestUnknownMessageSerializer.java index a8fc29298..23868a1f6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestUnknownMessageSerializer.java @@ -23,7 +23,7 @@ public ChannelRequestUnknownMessageSerializer(ChannelRequestUnknownMessage messa public void serializeBreakLength() { LOGGER.debug( "Type specific data: {}", - ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); + () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); appendBytes(message.getTypeSpecificData().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestMessageSerializer.java index 72270c294..17907f623 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestMessageSerializer.java @@ -31,7 +31,8 @@ private void serializeRequestName() { appendInt( message.getRequestNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Request name: {}", backslashEscapeString(message.getRequestName().getValue())); + "Request name: {}", + () -> backslashEscapeString(message.getRequestName().getValue())); appendString(message.getRequestName().getValue(), StandardCharsets.US_ASCII); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestOpenSshHostKeysMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestOpenSshHostKeysMessageSerializer.java index e08771af3..d5a6ed5e1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestOpenSshHostKeysMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestOpenSshHostKeysMessageSerializer.java @@ -25,7 +25,7 @@ public GlobalRequestOpenSshHostKeysMessageSerializer( private void serializeHostKeys() { LOGGER.debug( "Host keys blob: {}", - ArrayConverter.bytesToRawHexString(message.getHostKeys().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getHostKeys().getValue())); appendBytes(message.getHostKeys().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java index bcde4d473..46545c290 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java @@ -26,8 +26,9 @@ private void serializeResponseSpecificData() { if (message.getResponseSpecificData() != null) { LOGGER.debug( "Response specific data blob: {}", - ArrayConverter.bytesToRawHexString( - message.getResponseSpecificData().getValue())); + () -> + ArrayConverter.bytesToRawHexString( + message.getResponseSpecificData().getValue())); appendBytes(message.getResponseSpecificData().getValue()); } else { LOGGER.debug("No response specific data blob set"); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestUnknownMessageSerializer.java index 8ac83c47a..528c3ed60 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestUnknownMessageSerializer.java @@ -23,7 +23,7 @@ public GlobalRequestUnknownMessageSerializer(GlobalRequestUnknownMessage message public void serializeBreakLength() { LOGGER.debug( "Type specific data: {}", - ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); + () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); appendBytes(message.getTypeSpecificData().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/AsciiMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/AsciiMessageHandler.java index 0acc9176a..9f9a28128 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/AsciiMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/AsciiMessageHandler.java @@ -29,7 +29,8 @@ public AsciiMessageHandler(SshContext context, AsciiMessage message) { @Override public void adjustContext() { LOGGER.debug( - "Received text message: {}", backslashEscapeString(message.getText().getValue())); + "Received text message: {}", + () -> backslashEscapeString(message.getText().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/HybridKeyExchangeReplyMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/HybridKeyExchangeReplyMessageHandler.java index a7f2992c0..c19f71eef 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/HybridKeyExchangeReplyMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/HybridKeyExchangeReplyMessageHandler.java @@ -57,14 +57,14 @@ private void setRemoteValues() { .setRemotePublicKey(message.getPublicKey().getValue()); LOGGER.info( "RemoteKey Agreement = {}", - ArrayConverter.bytesToRawHexString(message.getPublicKey().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getPublicKey().getValue())); context.getChooser() .getHybridKeyExchange() .getKeyEncapsulation() .setEncryptedSharedSecret(message.getCombinedKeyShare().getValue()); LOGGER.info( "Ciphertext Encapsulation = {}", - ArrayConverter.bytesToRawHexString(message.getCombinedKeyShare().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getCombinedKeyShare().getValue())); byte[] combined; switch (context.getChooser().getHybridKeyExchange().getCombiner()) { case CLASSICAL_CONCATENATE_POSTQUANTUM: diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/UnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/UnknownMessageHandler.java index f747def4c..644b87839 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/UnknownMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/UnknownMessageHandler.java @@ -33,7 +33,7 @@ public UnknownMessageHandler(SshContext context, UnknownMessage message) { public void adjustContext() { LOGGER.debug( "Received unknown message:\n{}", - ArrayConverter.bytesToHexString(message.getPayload())); + () -> ArrayConverter.bytesToHexString(message.getPayload())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DebugMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DebugMessageParser.java index be32e9431..5706deafd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DebugMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DebugMessageParser.java @@ -46,7 +46,7 @@ private void parseMessage() { LOGGER.debug("Message length: {}", message.getMessageLength().getValue()); message.setMessage( parseByteString(message.getMessageLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("Message: {}", backslashEscapeString(message.getMessage().getValue())); + LOGGER.debug("Message: {}", () -> backslashEscapeString(message.getMessage().getValue())); } private void parseLanguageTag() { @@ -56,7 +56,8 @@ private void parseLanguageTag() { parseByteString( message.getLanguageTagLength().getValue(), StandardCharsets.US_ASCII)); LOGGER.debug( - "Language tag: {}", backslashEscapeString(message.getLanguageTag().getValue())); + "Language tag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeGroupMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeGroupMessageParser.java index edfca2472..e7b1f66d7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeGroupMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeGroupMessageParser.java @@ -38,7 +38,7 @@ private void parseGroupModulus() { message.setGroupModulus(parseBigIntField(message.getGroupModulusLength().getValue())); LOGGER.debug( "Group modulus: {}", - ArrayConverter.bytesToRawHexString(message.getGroupModulus().getByteArray())); + () -> ArrayConverter.bytesToRawHexString(message.getGroupModulus().getByteArray())); } private void parseGroupGenerator() { @@ -47,7 +47,9 @@ private void parseGroupGenerator() { message.setGroupGenerator(parseBigIntField(message.getGroupGeneratorLength().getValue())); LOGGER.debug( "Group generator: {}", - ArrayConverter.bytesToRawHexString(message.getGroupGenerator().getByteArray())); + () -> + ArrayConverter.bytesToRawHexString( + message.getGroupGenerator().getByteArray())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeReplyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeReplyMessageParser.java index e7b15e126..ffc577fb8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeReplyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeReplyMessageParser.java @@ -37,7 +37,7 @@ private void parseHostKeyBytes() { message.setHostKeyBytes(parseByteArrayField(message.getHostKeyBytesLength().getValue())); LOGGER.debug( "Host key bytes: {}", - ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); } private void parseEphemeralPublicKey() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DisconnectMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DisconnectMessageParser.java index 69a1bcc28..0f10d180b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DisconnectMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DisconnectMessageParser.java @@ -51,7 +51,9 @@ private void parseDescription() { LOGGER.debug("Description length: {}", message.getDescriptionLength().getValue()); message.setDescription( parseByteString(message.getDescriptionLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("Description: {}", backslashEscapeString(message.getDescription().getValue())); + LOGGER.debug( + "Description: {}", + () -> backslashEscapeString(message.getDescription().getValue())); } private void parseLanguageTag() { @@ -61,7 +63,8 @@ private void parseLanguageTag() { parseByteString( message.getLanguageTagLength().getValue(), StandardCharsets.US_ASCII)); LOGGER.debug( - "Language tag: {}", backslashEscapeString(message.getLanguageTag().getValue())); + "Language tag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeInitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeInitMessageParser.java index 48da7d62f..6408a158c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeInitMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeInitMessageParser.java @@ -40,7 +40,9 @@ private void parseEphemeralPublicKey() { parseByteArrayField(message.getEphemeralPublicKeyLength().getValue())); LOGGER.debug( "Ephemeral public key (client): {}", - ArrayConverter.bytesToRawHexString(message.getEphemeralPublicKey().getValue())); + () -> + ArrayConverter.bytesToRawHexString( + message.getEphemeralPublicKey().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeReplyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeReplyMessageParser.java index de937da07..b03210920 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeReplyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeReplyMessageParser.java @@ -39,7 +39,7 @@ private void parseHostKeyBytes() { message.setHostKeyBytes(parseByteArrayField(message.getHostKeyBytesLength().getValue())); LOGGER.debug( "Host key bytes: {}", - ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); } private void parseEphemeralPublicKey() { @@ -51,7 +51,9 @@ private void parseEphemeralPublicKey() { parseByteArrayField(message.getEphemeralPublicKeyLength().getValue())); LOGGER.debug( "Ephemeral public key (server): {}", - ArrayConverter.bytesToRawHexString(message.getEphemeralPublicKey().getValue())); + () -> + ArrayConverter.bytesToRawHexString( + message.getEphemeralPublicKey().getValue())); } private void parseSignature() { @@ -60,7 +62,7 @@ private void parseSignature() { message.setSignature(parseByteArrayField(message.getSignatureLength().getValue())); LOGGER.debug( "Signature :{}", - ArrayConverter.bytesToRawHexString(message.getSignature().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getSignature().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java index 20115000e..82b635dee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java @@ -51,7 +51,7 @@ private void parseHostKeyBytes() { message.setHostKeyBytes(parseByteArrayField(message.getHostKeyBytesLength().getValue())); LOGGER.debug( "Host key bytes: {}", - ArrayConverter.bytesToHexString(message.getHostKeyBytes().getValue())); + () -> ArrayConverter.bytesToHexString(message.getHostKeyBytes().getValue())); } private void parseHybridKey() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/IgnoreMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/IgnoreMessageParser.java index d854dceb5..201f310ff 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/IgnoreMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/IgnoreMessageParser.java @@ -35,7 +35,8 @@ private void parseData() { message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Data length: {}", message.getDataLength().getValue()); message.setData(parseByteArrayField(message.getDataLength().getValue())); - LOGGER.debug("Data: {}", ArrayConverter.bytesToRawHexString(message.getData().getValue())); + LOGGER.debug( + "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/KeyExchangeInitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/KeyExchangeInitMessageParser.java index 11667005e..178277214 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/KeyExchangeInitMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/KeyExchangeInitMessageParser.java @@ -52,7 +52,7 @@ private void parseKeyExchangeAlgorithms() { StandardCharsets.US_ASCII)); LOGGER.debug( "Key exchange algorithms: {}", - backslashEscapeString(message.getKeyExchangeAlgorithms().getValue())); + () -> backslashEscapeString(message.getKeyExchangeAlgorithms().getValue())); } private void parseServerHostKeyAlgorithms() { @@ -67,7 +67,7 @@ private void parseServerHostKeyAlgorithms() { StandardCharsets.US_ASCII)); LOGGER.debug( "Server host key algorithms: {}", - backslashEscapeString(message.getServerHostKeyAlgorithms().getValue())); + () -> backslashEscapeString(message.getServerHostKeyAlgorithms().getValue())); } private void parseEncryptionAlgorithmsClientToServer() { @@ -82,7 +82,9 @@ private void parseEncryptionAlgorithmsClientToServer() { StandardCharsets.US_ASCII)); LOGGER.debug( "Encryption algorithms (client to server): {}", - backslashEscapeString(message.getEncryptionAlgorithmsClientToServer().getValue())); + () -> + backslashEscapeString( + message.getEncryptionAlgorithmsClientToServer().getValue())); } private void parseEncryptionAlgorithmsServerToClient() { @@ -97,7 +99,9 @@ private void parseEncryptionAlgorithmsServerToClient() { StandardCharsets.US_ASCII)); LOGGER.debug( "Encryption algorithms (server to client): {}", - backslashEscapeString(message.getEncryptionAlgorithmsServerToClient().getValue())); + () -> + backslashEscapeString( + message.getEncryptionAlgorithmsServerToClient().getValue())); } private void parseMacAlgorithmsClientToServer() { @@ -112,7 +116,7 @@ private void parseMacAlgorithmsClientToServer() { StandardCharsets.US_ASCII)); LOGGER.debug( "MAC algorithms (client to server): {}", - backslashEscapeString(message.getMacAlgorithmsClientToServer().getValue())); + () -> backslashEscapeString(message.getMacAlgorithmsClientToServer().getValue())); } private void parseMacAlgorithmsServerToClient() { @@ -127,7 +131,7 @@ private void parseMacAlgorithmsServerToClient() { StandardCharsets.US_ASCII)); LOGGER.debug( "MAC algorithms (server to client): {}", - backslashEscapeString(message.getMacAlgorithmsServerToClient().getValue())); + () -> backslashEscapeString(message.getMacAlgorithmsServerToClient().getValue())); } private void parseCompressionMethodsClientToServer() { @@ -142,7 +146,9 @@ private void parseCompressionMethodsClientToServer() { StandardCharsets.US_ASCII)); LOGGER.debug( "Compression algorithms (client to server): {}", - backslashEscapeString(message.getCompressionMethodsClientToServer().getValue())); + () -> + backslashEscapeString( + message.getCompressionMethodsClientToServer().getValue())); } private void parseCompressionMethodsServerToClient() { @@ -157,7 +163,9 @@ private void parseCompressionMethodsServerToClient() { StandardCharsets.US_ASCII)); LOGGER.debug( "Compression algorithms (server to client): {}", - backslashEscapeString(message.getCompressionMethodsServerToClient().getValue())); + () -> + backslashEscapeString( + message.getCompressionMethodsServerToClient().getValue())); } private void parseLanguagesClientToServer() { @@ -172,7 +180,7 @@ private void parseLanguagesClientToServer() { StandardCharsets.US_ASCII)); LOGGER.debug( "Languages (client to server): {}", - backslashEscapeString(message.getLanguagesClientToServer().getValue())); + () -> backslashEscapeString(message.getLanguagesClientToServer().getValue())); } private void parseLanguagesServerToClient() { @@ -187,7 +195,7 @@ private void parseLanguagesServerToClient() { StandardCharsets.US_ASCII)); LOGGER.debug( "Languages (server to client): {}", - backslashEscapeString(message.getLanguagesServerToClient().getValue())); + () -> backslashEscapeString(message.getLanguagesServerToClient().getValue())); } private void parseFirstKeyExchangePacketFollows() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PingMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PingMessageParser.java index a545b8f20..aab1a8425 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PingMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PingMessageParser.java @@ -36,6 +36,7 @@ protected void parseMessageSpecificContents() { message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Data length: {}", message.getDataLength().getValue()); message.setData(parseByteArrayField(message.getDataLength().getValue())); - LOGGER.debug("Data: {}", ArrayConverter.bytesToRawHexString(message.getData().getValue())); + LOGGER.debug( + "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PongMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PongMessageParser.java index be92b7b1d..ab124beb2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PongMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PongMessageParser.java @@ -36,6 +36,7 @@ protected void parseMessageSpecificContents() { message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Data length: {}", message.getDataLength().getValue()); message.setData(parseByteArrayField(message.getDataLength().getValue())); - LOGGER.debug("Data: {}", ArrayConverter.bytesToRawHexString(message.getData().getValue())); + LOGGER.debug( + "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/ServiceRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/ServiceRequestMessageParser.java index 0471bd6cf..04d505df0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/ServiceRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/ServiceRequestMessageParser.java @@ -35,7 +35,8 @@ private void parseServiceName() { parseByteString( message.getServiceNameLength().getValue(), StandardCharsets.US_ASCII)); LOGGER.debug( - "Service name: {}", backslashEscapeString(message.getServiceName().getValue())); + "Service name: {}", + () -> backslashEscapeString(message.getServiceName().getValue())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/UnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/UnknownMessageParser.java index 0606afdca..bd9793d36 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/UnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/UnknownMessageParser.java @@ -34,6 +34,7 @@ public UnknownMessage createMessage() { protected void parseMessageSpecificContents() { message.setPayload(parseArrayOrTillEnd(-1)); LOGGER.debug( - "Payload: {}", ArrayConverter.bytesToRawHexString(message.getPayload().getValue())); + "Payload: {}", + () -> ArrayConverter.bytesToRawHexString(message.getPayload().getValue())); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/VersionExchangeMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/VersionExchangeMessageParser.java index 5672d09e8..8478f6c54 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/VersionExchangeMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/VersionExchangeMessageParser.java @@ -44,10 +44,10 @@ private void parseVersion() { String[] parts = result.split(String.valueOf(CharConstants.VERSION_COMMENT_SEPARATOR), 2); message.setVersion(parts[0]); - LOGGER.debug("Version: {}", backslashEscapeString(parts[0])); + LOGGER.debug("Version: {}", () -> backslashEscapeString(parts[0])); if (parts.length == 2) { message.setComment(parts[1]); - LOGGER.debug("Comment: {}", backslashEscapeString(parts[1])); + LOGGER.debug("Comment: {}", () -> backslashEscapeString(parts[1])); } else { message.setComment(""); LOGGER.debug("Comment: [none]"); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/UnknownExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/UnknownExtensionParser.java index 3f9ae78dc..3a5e8f9cd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/UnknownExtensionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/UnknownExtensionParser.java @@ -36,6 +36,6 @@ protected void parseExtensionValue() { extension.setValue(parseArrayOrTillEnd(extension.getValueLength().getValue())); LOGGER.debug( "Extension value: {}", - ArrayConverter.bytesToRawHexString(extension.getValue().getValue())); + () -> ArrayConverter.bytesToRawHexString(extension.getValue().getValue())); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeInitMessagePreperator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeInitMessagePreperator.java index 278a0c530..83fd7b514 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeInitMessagePreperator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeInitMessagePreperator.java @@ -46,18 +46,22 @@ public void prepareMessageSpecificContents() { byte[] pubKencapsulation = encapsulation.getLocalKeyPair().getPublicKey().getEncoded(); LOGGER.info( - "PubKey Encapsulation = {}", ArrayConverter.bytesToRawHexString(pubKencapsulation)); + "PubKey Encapsulation = {}", + () -> ArrayConverter.bytesToRawHexString(pubKencapsulation)); LOGGER.info( "PrivKey Encpasulation = {}", - ArrayConverter.bytesToRawHexString( - encapsulation.getLocalKeyPair().getPrivateKey().getEncoded())); + () -> + ArrayConverter.bytesToRawHexString( + encapsulation.getLocalKeyPair().getPrivateKey().getEncoded())); byte[] pubKagreement = agreement.getLocalKeyPair().getPublicKey().getEncoded(); - LOGGER.info("PubKey Agreement = {}", ArrayConverter.bytesToRawHexString(pubKagreement)); + LOGGER.info( + "PubKey Agreement = {}", () -> ArrayConverter.bytesToRawHexString(pubKagreement)); LOGGER.info( "PrivKey Agreement = {}", - ArrayConverter.bytesToRawHexString( - agreement.getLocalKeyPair().getPrivateKey().getEncoded())); + () -> + ArrayConverter.bytesToRawHexString( + agreement.getLocalKeyPair().getPrivateKey().getEncoded())); ExchangeHashInputHolder inputHolder = chooser.getContext().getExchangeHashInputHolder(); switch (combiner) { case CLASSICAL_CONCATENATE_POSTQUANTUM: diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/AsciiMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/AsciiMessageSerializer.java index a6f64300c..0b90c2438 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/AsciiMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/AsciiMessageSerializer.java @@ -28,7 +28,7 @@ private void serializeText() { if (text.isEmpty()) { LOGGER.debug("Text: [none]"); } else { - LOGGER.debug("Text: {}", backslashEscapeString(text)); + LOGGER.debug("Text: {}", () -> backslashEscapeString(text)); appendString(text, StandardCharsets.US_ASCII); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DebugMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DebugMessageSerializer.java index 3a82d04ed..2e387e47e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DebugMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DebugMessageSerializer.java @@ -35,7 +35,7 @@ private void serializeAlwaysDisplayed() { private void serializeMessage() { LOGGER.debug("Message length: {}", message.getMessageLength().getValue()); appendInt(message.getMessageLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Message: {}", backslashEscapeString(message.getMessage().getValue())); + LOGGER.debug("Message: {}", () -> backslashEscapeString(message.getMessage().getValue())); appendString(message.getMessage().getValue(), StandardCharsets.UTF_8); } @@ -44,7 +44,8 @@ private void serializeLanguageTag() { appendInt( message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Language tag: {}", backslashEscapeString(message.getLanguageTag().getValue())); + "Language tag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); appendString(message.getLanguageTag().getValue(), StandardCharsets.US_ASCII); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeGroupMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeGroupMessageSerializer.java index c2b569ca9..47f2595a5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeGroupMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeGroupMessageSerializer.java @@ -30,8 +30,9 @@ private void serializeGroupModulus() { appendBytes(message.getGroupModulus().getValue().toByteArray()); LOGGER.debug( "Group modulus: {}", - ArrayConverter.bytesToRawHexString( - message.getGroupModulus().getValue().toByteArray())); + () -> + ArrayConverter.bytesToRawHexString( + message.getGroupModulus().getValue().toByteArray())); } private void serializeGroupGenerator() { @@ -42,8 +43,9 @@ private void serializeGroupGenerator() { appendBytes(message.getGroupGenerator().getValue().toByteArray()); LOGGER.debug( "Group generator: {}", - ArrayConverter.bytesToRawHexString( - message.getGroupGenerator().getValue().toByteArray())); + () -> + ArrayConverter.bytesToRawHexString( + message.getGroupGenerator().getValue().toByteArray())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeReplyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeReplyMessageSerializer.java index 4743df4c9..24c14396b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeReplyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeReplyMessageSerializer.java @@ -30,7 +30,7 @@ private void serializeHostKeyBytes() { appendBytes(message.getHostKeyBytes().getValue()); LOGGER.debug( "Host key bytes: {}", - ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); } private void serializeEphemeralPublicKey() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeReplyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeReplyMessageSerializer.java index 7d8a974ae..3e715f8b4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeReplyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeReplyMessageSerializer.java @@ -30,7 +30,7 @@ private void serializeHostKeyBytes() { appendBytes(message.getHostKeyBytes().getValue()); LOGGER.debug( "Host key: {}", - ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); } private void serializeEphemeralPublicKey() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DisconnectMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DisconnectMessageSerializer.java index 9a3b472e1..755a0ea3e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DisconnectMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DisconnectMessageSerializer.java @@ -46,7 +46,8 @@ private void serializeLanguageTag() { appendInt( message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( - "Language tag: {}", backslashEscapeString(message.getLanguageTag().getValue())); + "Language tag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); appendString(message.getLanguageTag().getValue(), StandardCharsets.US_ASCII); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeInitMessageSerializer.java index d5c387cd3..1e145083a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeInitMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeInitMessageSerializer.java @@ -32,7 +32,9 @@ private void serializeEphemeralPublicKey() { DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Ephemeral public key (client): {}", - ArrayConverter.bytesToRawHexString(message.getEphemeralPublicKey().getValue())); + () -> + ArrayConverter.bytesToRawHexString( + message.getEphemeralPublicKey().getValue())); appendBytes(message.getEphemeralPublicKey().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeReplyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeReplyMessageSerializer.java index fb0d09114..3a91f74ef 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeReplyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeReplyMessageSerializer.java @@ -29,7 +29,7 @@ private void serializeHostKeyBytes(EcdhKeyExchangeReplyMessage msg) { appendBytes(msg.getHostKeyBytes().getValue()); LOGGER.debug( "Host key bytes: {}", - ArrayConverter.bytesToRawHexString(msg.getHostKeyBytes().getValue())); + () -> ArrayConverter.bytesToRawHexString(msg.getHostKeyBytes().getValue())); } private void serializeEphemeralPublicKey(EcdhKeyExchangeReplyMessage msg) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeInitMessageSerializer.java index 498382d6f..08b7b282d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeInitMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeInitMessageSerializer.java @@ -57,6 +57,7 @@ public void serializeMessageSpecificContents() { appendBytes(keys); LOGGER.debug("HybridKeyLength: {}", length); - LOGGER.debug("HybridKeyBytes: {}", ArrayConverter.bytesToHexString(keys)); + byte[] finalKeys = keys; + LOGGER.debug("HybridKeyBytes: {}", () -> ArrayConverter.bytesToHexString(finalKeys)); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java index 18092ea14..1e6f5d490 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java @@ -44,7 +44,7 @@ private void serializeHostKeyBytes() { appendBytes(message.getHostKeyBytes().getValue()); LOGGER.debug( "Host key bytes: {}", - ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); + () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); } private void serializeHybridKey() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/IgnoreMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/IgnoreMessageSerializer.java index 827def8e7..d1327ceac 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/IgnoreMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/IgnoreMessageSerializer.java @@ -25,7 +25,8 @@ public IgnoreMessageSerializer(IgnoreMessage message) { private void serializeData() { LOGGER.debug("Data length: {}", message.getDataLength().getValue()); appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Data: {}", ArrayConverter.bytesToRawHexString(message.getData().getValue())); + LOGGER.debug( + "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); appendBytes(message.getData().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/KeyExchangeInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/KeyExchangeInitMessageSerializer.java index 69e7752e1..31a37855b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/KeyExchangeInitMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/KeyExchangeInitMessageSerializer.java @@ -38,7 +38,7 @@ private void serializeKeyExchangeAlgorithms() { DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Key exchange algorithms: {}", - backslashEscapeString(message.getKeyExchangeAlgorithms().getValue())); + () -> backslashEscapeString(message.getKeyExchangeAlgorithms().getValue())); appendString(message.getKeyExchangeAlgorithms().getValue(), StandardCharsets.US_ASCII); } @@ -51,7 +51,7 @@ private void serializeServerHostKeyAlgorithms() { DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Server host key algorithms: {}", - backslashEscapeString(message.getServerHostKeyAlgorithms().getValue())); + () -> backslashEscapeString(message.getServerHostKeyAlgorithms().getValue())); appendString(message.getServerHostKeyAlgorithms().getValue(), StandardCharsets.US_ASCII); } @@ -64,7 +64,9 @@ private void serializeEncryptionAlgorithmsClientToServer() { DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Encryption algorithms (client to server): {}", - backslashEscapeString(message.getEncryptionAlgorithmsClientToServer().getValue())); + () -> + backslashEscapeString( + message.getEncryptionAlgorithmsClientToServer().getValue())); appendString( message.getEncryptionAlgorithmsClientToServer().getValue(), StandardCharsets.US_ASCII); @@ -79,7 +81,9 @@ private void serializeEncryptionAlgorithmsServerToClient() { DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Encryption algorithms (server to client): {}", - backslashEscapeString(message.getEncryptionAlgorithmsServerToClient().getValue())); + () -> + backslashEscapeString( + message.getEncryptionAlgorithmsServerToClient().getValue())); appendString( message.getEncryptionAlgorithmsServerToClient().getValue(), StandardCharsets.US_ASCII); @@ -94,7 +98,7 @@ private void serializeMacAlgorithmsClientToServer() { DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "MAC algorithms (client to server): {}", - backslashEscapeString(message.getMacAlgorithmsClientToServer().getValue())); + () -> backslashEscapeString(message.getMacAlgorithmsClientToServer().getValue())); appendString( message.getMacAlgorithmsClientToServer().getValue(), StandardCharsets.US_ASCII); } @@ -108,7 +112,7 @@ private void serializeMacAlgorithmsServerToClient() { DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "MAC algorithms (server to client): {}", - backslashEscapeString(message.getMacAlgorithmsServerToClient().getValue())); + () -> backslashEscapeString(message.getMacAlgorithmsServerToClient().getValue())); appendString( message.getMacAlgorithmsServerToClient().getValue(), StandardCharsets.US_ASCII); } @@ -122,7 +126,9 @@ private void serializeCompressionMethodsClientToServer() { DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Compression algorithms (client to server): {}", - backslashEscapeString(message.getCompressionMethodsClientToServer().getValue())); + () -> + backslashEscapeString( + message.getCompressionMethodsClientToServer().getValue())); appendString( message.getCompressionMethodsClientToServer().getValue(), StandardCharsets.US_ASCII); @@ -137,7 +143,9 @@ private void serializeCompressionMethodsServerToClient() { DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Compression algorithms (server to client): {}", - backslashEscapeString(message.getCompressionMethodsServerToClient().getValue())); + () -> + backslashEscapeString( + message.getCompressionMethodsServerToClient().getValue())); appendString( message.getCompressionMethodsServerToClient().getValue(), StandardCharsets.US_ASCII); @@ -152,7 +160,7 @@ private void serializeLanguagesClientToServer() { DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Languages (client to server): {}", - backslashEscapeString(message.getLanguagesClientToServer().getValue())); + () -> backslashEscapeString(message.getLanguagesClientToServer().getValue())); appendString(message.getLanguagesClientToServer().getValue(), StandardCharsets.US_ASCII); } @@ -165,7 +173,7 @@ private void serializeLanguagesServerToClient() { DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Languages (server to client): {}", - backslashEscapeString(message.getLanguagesServerToClient().getValue())); + () -> backslashEscapeString(message.getLanguagesServerToClient().getValue())); appendString(message.getLanguagesServerToClient().getValue(), StandardCharsets.US_ASCII); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PingMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PingMessageSerializer.java index 43e1361d1..c112e993a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PingMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PingMessageSerializer.java @@ -26,7 +26,8 @@ public PingMessageSerializer(PingMessage message) { public void serializeMessageSpecificContents() { LOGGER.debug("Data length: {}", message.getDataLength().getValue()); appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Data: {}", ArrayConverter.bytesToRawHexString(message.getData().getValue())); + LOGGER.debug( + "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); appendBytes(message.getData().getValue()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PongMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PongMessageSerializer.java index 9e68114a5..f30342a03 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PongMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PongMessageSerializer.java @@ -26,7 +26,8 @@ public PongMessageSerializer(PongMessage message) { public void serializeMessageSpecificContents() { LOGGER.debug("Data length: {}", message.getDataLength().getValue()); appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Data: {}", ArrayConverter.bytesToRawHexString(message.getData().getValue())); + LOGGER.debug( + "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); appendBytes(message.getData().getValue()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceAcceptMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceAcceptMessageSerializer.java index 6b70a4a07..bf9d555dd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceAcceptMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceAcceptMessageSerializer.java @@ -28,7 +28,8 @@ private void serializeServiceName() { LOGGER.debug("Service name length: {}", message.getServiceNameLength().getValue()); appendInt(message.getServiceNameLength().getValue(), DataFormatConstants.UINT32_SIZE); LOGGER.debug( - "Service name: {}", backslashEscapeString(message.getServiceName().getValue())); + "Service name: {}", + () -> backslashEscapeString(message.getServiceName().getValue())); appendString(message.getServiceName().getValue(), StandardCharsets.US_ASCII); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceRequestMessageSerializer.java index 32491a2aa..f624c46e1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceRequestMessageSerializer.java @@ -28,7 +28,8 @@ private void serializeServiceName() { LOGGER.debug("Service name length: {}", message.getServiceNameLength().getValue()); appendInt(message.getServiceNameLength().getValue(), DataFormatConstants.UINT32_SIZE); LOGGER.debug( - "Service name: {}", backslashEscapeString(message.getServiceName().getValue())); + "Service name: {}", + () -> backslashEscapeString(message.getServiceName().getValue())); appendString(message.getServiceName().getValue(), StandardCharsets.US_ASCII); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnknownMessageSerializer.java index 4a4479cbb..4ec44c7e8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnknownMessageSerializer.java @@ -23,7 +23,7 @@ public UnknownMessageSerializer(UnknownMessage message) { @Override public void serializeMessageSpecificContents() { - LOGGER.debug("Payload: {}", ArrayConverter.bytesToHexString(message.getPayload())); + LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToHexString(message.getPayload())); appendBytes(message.getPayload().getValue()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/UnknownExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/UnknownExtensionSerializer.java index 37c9e00a5..40e198082 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/UnknownExtensionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/UnknownExtensionSerializer.java @@ -25,7 +25,8 @@ public UnknownExtensionSerializer(UnknownExtension extension) { protected void serializeExtensionValue() { LOGGER.debug("Extension value length: {}", extension.getValueLength().getValue()); appendInt(extension.getValueLength().getValue(), DataFormatConstants.UINT32_SIZE); - LOGGER.debug("Extension value: {}", ArrayConverter.bytesToHexString(extension.getValue())); + LOGGER.debug( + "Extension value: {}", () -> ArrayConverter.bytesToHexString(extension.getValue())); appendBytes(extension.getValue().getValue()); } } From faced740c539a79b6d8cf7efb5917de4e56b0ebe Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 31 Oct 2024 10:01:20 +0100 Subject: [PATCH 025/203] Added SFTP: Close, Read, Remove, Rename, Write Messages Implemented Abstraction for Requests with Handler and Path. This provides less verbosity in variable name of the path / filename. But provides better abstraction, so changes made to serialization or parsing of path / handler are made in a single place. --- .../SfptRequestCloseMessageHandler.java | 51 ++++++++++++ .../SfptRequestReadMessageHandler.java | 51 ++++++++++++ .../SfptRequestRemoveMessageHandler.java | 51 ++++++++++++ .../SfptRequestRenameMessageHandler.java | 51 ++++++++++++ .../SfptRequestWriteMessageHandler.java | 51 ++++++++++++ .../sftp/message/SfptRequestCloseMessage.java | 19 +++++ .../sftp/message/SfptRequestReadMessage.java | 49 ++++++++++++ .../message/SfptRequestRemoveMessage.java | 21 +++++ .../message/SfptRequestRenameMessage.java | 67 ++++++++++++++++ .../sftp/message/SfptRequestWriteMessage.java | 77 +++++++++++++++++++ .../sftp/message/SftpRequestOpenMessage.java | 47 +---------- .../message/SftpRequestWithHandleMessage.java | 58 ++++++++++++++ .../message/SftpRequestWithPathMessage.java | 58 ++++++++++++++ .../parser/SfptRequestCloseMessageParser.java | 30 ++++++++ .../parser/SfptRequestReadMessageParser.java | 48 ++++++++++++ .../SfptRequestRemoveMessageParser.java | 30 ++++++++ .../SfptRequestRenameMessageParser.java | 48 ++++++++++++ .../parser/SfptRequestWriteMessageParser.java | 53 +++++++++++++ .../parser/SftpRequestOpenMessageParser.java | 17 +--- .../SftpRequestWithHandleMessageParser.java | 44 +++++++++++ .../SftpRequestWithPathMessageParser.java | 45 +++++++++++ .../SfptRequestCloseMessagePreparator.java | 30 ++++++++ .../SfptRequestReadMessagePreparator.java | 38 +++++++++ .../SfptRequestRemoveMessagePreparator.java | 29 +++++++ .../SfptRequestRenameMessagePreparator.java | 36 +++++++++ .../SfptRequestWriteMessagePreparator.java | 41 ++++++++++ .../SftpRequestOpenMessagePreparator.java | 9 ++- .../SfptRequestCloseMessageSerializer.java | 21 +++++ .../SfptRequestReadMessageSerializer.java | 39 ++++++++++ .../SfptRequestRemoveMessageSerializer.java | 21 +++++ .../SfptRequestRenameMessageSerializer.java | 38 +++++++++ .../SfptRequestWriteMessageSerializer.java | 43 +++++++++++ .../SftpRequestOpenMessageSerializer.java | 15 +--- ...ftpRequestWithHandleMessageSerializer.java | 41 ++++++++++ .../SftpRequestWithPathMessageSerializer.java | 40 ++++++++++ 35 files changed, 1332 insertions(+), 75 deletions(-) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestCloseMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestReadMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRemoveMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRenameMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestWriteMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestCloseMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestReadMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestRemoveMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestRenameMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestWriteMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWithHandleMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWithPathMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestCloseMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestReadMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestRemoveMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestRenameMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestWriteMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithPathMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestCloseMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestReadMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestRemoveMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestRenameMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestWriteMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestCloseMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestReadMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestRemoveMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestRenameMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestWriteMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithHandleMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithPathMessageSerializer.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestCloseMessageHandler.java new file mode 100644 index 000000000..bb63423a0 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestCloseMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestCloseMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SfptRequestCloseMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SfptRequestCloseMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SfptRequestCloseMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SfptRequestCloseMessageHandler extends SftpMessageHandler { + + public SfptRequestCloseMessageHandler(SshContext context) { + super(context); + } + + public SfptRequestCloseMessageHandler(SshContext context, SfptRequestCloseMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SfptRequestCloseMessage + } + + @Override + public SfptRequestCloseMessageParser getParser(byte[] array) { + return new SfptRequestCloseMessageParser(array); + } + + @Override + public SfptRequestCloseMessageParser getParser(byte[] array, int startPosition) { + return new SfptRequestCloseMessageParser(array, startPosition); + } + + @Override + public SfptRequestCloseMessagePreparator getPreparator() { + return new SfptRequestCloseMessagePreparator(context.getChooser(), message); + } + + @Override + public SfptRequestCloseMessageSerializer getSerializer() { + return new SfptRequestCloseMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestReadMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestReadMessageHandler.java new file mode 100644 index 000000000..fc88154c5 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestReadMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestReadMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SfptRequestReadMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SfptRequestReadMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SfptRequestReadMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SfptRequestReadMessageHandler extends SftpMessageHandler { + + public SfptRequestReadMessageHandler(SshContext context) { + super(context); + } + + public SfptRequestReadMessageHandler(SshContext context, SfptRequestReadMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SfptRequestReadMessage + } + + @Override + public SfptRequestReadMessageParser getParser(byte[] array) { + return new SfptRequestReadMessageParser(array); + } + + @Override + public SfptRequestReadMessageParser getParser(byte[] array, int startPosition) { + return new SfptRequestReadMessageParser(array, startPosition); + } + + @Override + public SfptRequestReadMessagePreparator getPreparator() { + return new SfptRequestReadMessagePreparator(context.getChooser(), message); + } + + @Override + public SfptRequestReadMessageSerializer getSerializer() { + return new SfptRequestReadMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRemoveMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRemoveMessageHandler.java new file mode 100644 index 000000000..dbbe22fc8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRemoveMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRemoveMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SfptRequestRemoveMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SfptRequestRemoveMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SfptRequestRemoveMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SfptRequestRemoveMessageHandler extends SftpMessageHandler { + + public SfptRequestRemoveMessageHandler(SshContext context) { + super(context); + } + + public SfptRequestRemoveMessageHandler(SshContext context, SfptRequestRemoveMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SfptRequestRemoveMessage + } + + @Override + public SfptRequestRemoveMessageParser getParser(byte[] array) { + return new SfptRequestRemoveMessageParser(array); + } + + @Override + public SfptRequestRemoveMessageParser getParser(byte[] array, int startPosition) { + return new SfptRequestRemoveMessageParser(array, startPosition); + } + + @Override + public SfptRequestRemoveMessagePreparator getPreparator() { + return new SfptRequestRemoveMessagePreparator(context.getChooser(), message); + } + + @Override + public SfptRequestRemoveMessageSerializer getSerializer() { + return new SfptRequestRemoveMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRenameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRenameMessageHandler.java new file mode 100644 index 000000000..3f7e39e78 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRenameMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SfptRequestRenameMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SfptRequestRenameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SfptRequestRenameMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SfptRequestRenameMessageHandler extends SftpMessageHandler { + + public SfptRequestRenameMessageHandler(SshContext context) { + super(context); + } + + public SfptRequestRenameMessageHandler(SshContext context, SfptRequestRenameMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SfptRequestRenameMessage + } + + @Override + public SfptRequestRenameMessageParser getParser(byte[] array) { + return new SfptRequestRenameMessageParser(array); + } + + @Override + public SfptRequestRenameMessageParser getParser(byte[] array, int startPosition) { + return new SfptRequestRenameMessageParser(array, startPosition); + } + + @Override + public SfptRequestRenameMessagePreparator getPreparator() { + return new SfptRequestRenameMessagePreparator(context.getChooser(), message); + } + + @Override + public SfptRequestRenameMessageSerializer getSerializer() { + return new SfptRequestRenameMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestWriteMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestWriteMessageHandler.java new file mode 100644 index 000000000..e2054563c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestWriteMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestWriteMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SfptRequestWriteMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SfptRequestWriteMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SfptRequestWriteMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SfptRequestWriteMessageHandler extends SftpMessageHandler { + + public SfptRequestWriteMessageHandler(SshContext context) { + super(context); + } + + public SfptRequestWriteMessageHandler(SshContext context, SfptRequestWriteMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SfptRequestWriteMessage + } + + @Override + public SfptRequestWriteMessageParser getParser(byte[] array) { + return new SfptRequestWriteMessageParser(array); + } + + @Override + public SfptRequestWriteMessageParser getParser(byte[] array, int startPosition) { + return new SfptRequestWriteMessageParser(array, startPosition); + } + + @Override + public SfptRequestWriteMessagePreparator getPreparator() { + return new SfptRequestWriteMessagePreparator(context.getChooser(), message); + } + + @Override + public SfptRequestWriteMessageSerializer getSerializer() { + return new SfptRequestWriteMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestCloseMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestCloseMessage.java new file mode 100644 index 000000000..9a3088dc8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestCloseMessage.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.sshattacker.core.data.sftp.handler.SfptRequestCloseMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SfptRequestCloseMessage extends SftpRequestWithHandleMessage { + + @Override + public SfptRequestCloseMessageHandler getHandler(SshContext context) { + return new SfptRequestCloseMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestReadMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestReadMessage.java new file mode 100644 index 000000000..7307bd9c8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestReadMessage.java @@ -0,0 +1,49 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.sshattacker.core.data.sftp.handler.SfptRequestReadMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SfptRequestReadMessage extends SftpRequestWithHandleMessage { + + private ModifiableLong offset; + private ModifiableInteger length; + + public ModifiableLong getOffset() { + return offset; + } + + public void setOffset(ModifiableLong offset) { + this.offset = offset; + } + + public void setOffset(long offset) { + this.offset = ModifiableVariableFactory.safelySetValue(this.offset, offset); + } + + public ModifiableInteger getLength() { + return length; + } + + public void setLength(ModifiableInteger length) { + this.length = length; + } + + public void setLength(int length) { + this.length = ModifiableVariableFactory.safelySetValue(this.length, length); + } + + @Override + public SfptRequestReadMessageHandler getHandler(SshContext context) { + return new SfptRequestReadMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestRemoveMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestRemoveMessage.java new file mode 100644 index 000000000..199fa7f08 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestRemoveMessage.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.sshattacker.core.data.sftp.handler.SfptRequestRemoveMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SfptRequestRemoveMessage extends SftpRequestWithPathMessage { + + // path is the filename + + @Override + public SfptRequestRemoveMessageHandler getHandler(SshContext context) { + return new SfptRequestRemoveMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestRenameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestRenameMessage.java new file mode 100644 index 000000000..d76e4268b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestRenameMessage.java @@ -0,0 +1,67 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.handler.SfptRequestRenameMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; + +public class SfptRequestRenameMessage extends SftpRequestWithPathMessage { + + // path is the old ath + + private ModifiableInteger newPathLength; + private ModifiableString newPath; + + public ModifiableInteger getNewPathLength() { + return newPathLength; + } + + public void setNewPathLength(ModifiableInteger newPathLength) { + this.newPathLength = newPathLength; + } + + public void setNewPathLength(int newPathLength) { + this.newPathLength = + ModifiableVariableFactory.safelySetValue(this.newPathLength, newPathLength); + } + + public ModifiableString getNewPath() { + return newPath; + } + + public void setNewPath(ModifiableString newPath) { + setNewPath(newPath, false); + } + + public void setNewPath(String newPath) { + setNewPath(newPath, false); + } + + public void setNewPath(ModifiableString newPath, boolean adjustLengthField) { + if (adjustLengthField) { + setNewPathLength(newPath.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.newPath = newPath; + } + + public void setNewPath(String newPath, boolean adjustLengthField) { + if (adjustLengthField) { + setNewPathLength(newPath.getBytes(StandardCharsets.UTF_8).length); + } + this.newPath = ModifiableVariableFactory.safelySetValue(this.newPath, newPath); + } + + @Override + public SfptRequestRenameMessageHandler getHandler(SshContext context) { + return new SfptRequestRenameMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestWriteMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestWriteMessage.java new file mode 100644 index 000000000..5921bb41f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestWriteMessage.java @@ -0,0 +1,77 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.sshattacker.core.data.sftp.handler.SfptRequestWriteMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SfptRequestWriteMessage extends SftpRequestWithHandleMessage { + + private ModifiableLong offset; + private ModifiableInteger dataLength; + private ModifiableByteArray data; + + public ModifiableLong getOffset() { + return offset; + } + + public void setOffset(ModifiableLong offset) { + this.offset = offset; + } + + public void setOffset(long offset) { + this.offset = ModifiableVariableFactory.safelySetValue(this.offset, offset); + } + + public ModifiableInteger getDataLength() { + return dataLength; + } + + public void setDataLength(ModifiableInteger dataLength) { + this.dataLength = dataLength; + } + + public void setDataLength(int dataLength) { + this.dataLength = ModifiableVariableFactory.safelySetValue(this.dataLength, dataLength); + } + + public ModifiableByteArray getData() { + return data; + } + + public void setData(ModifiableByteArray data) { + setData(data, false); + } + + public void setData(byte[] data) { + setData(data, false); + } + + public void setData(ModifiableByteArray data, boolean adjustLengthField) { + this.data = data; + if (adjustLengthField) { + setDataLength(this.data.getValue().length); + } + } + + public void setData(byte[] data, boolean adjustLengthField) { + this.data = ModifiableVariableFactory.safelySetValue(this.data, data); + if (adjustLengthField) { + setDataLength(this.data.getValue().length); + } + } + + @Override + public SfptRequestWriteMessageHandler getHandler(SshContext context) { + return new SfptRequestWriteMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java index c694bd20a..36d31cb63 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java @@ -9,61 +9,20 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestOpenMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; -import java.nio.charset.StandardCharsets; import java.util.List; -public class SftpRequestOpenMessage extends SftpRequestMessage { +public class SftpRequestOpenMessage extends SftpRequestWithPathMessage { + + // path is the filename - private ModifiableInteger filenameLength; - private ModifiableString filename; private ModifiableInteger pFlags; private SftpFileAttributes attributes; - public ModifiableInteger getFilenameLength() { - return filenameLength; - } - - public void setFilenameLength(ModifiableInteger filenameLength) { - this.filenameLength = filenameLength; - } - - public void setFilenameLength(int filenameLength) { - this.filenameLength = - ModifiableVariableFactory.safelySetValue(this.filenameLength, filenameLength); - } - - public ModifiableString getFilename() { - return filename; - } - - public void setFilename(ModifiableString filename) { - setFilename(filename, false); - } - - public void setFilename(String filename) { - setFilename(filename, false); - } - - public void setFilename(ModifiableString filename, boolean adjustLengthField) { - if (adjustLengthField) { - setFilenameLength(filename.getValue().getBytes(StandardCharsets.UTF_8).length); - } - this.filename = filename; - } - - public void setFilename(String filename, boolean adjustLengthField) { - if (adjustLengthField) { - setFilenameLength(filename.getBytes(StandardCharsets.UTF_8).length); - } - this.filename = ModifiableVariableFactory.safelySetValue(this.filename, filename); - } - public ModifiableInteger getPFlags() { return pFlags; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWithHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWithHandleMessage.java new file mode 100644 index 000000000..c3f9f2189 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWithHandleMessage.java @@ -0,0 +1,58 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; + +public abstract class SftpRequestWithHandleMessage> + extends SftpRequestMessage { + + private ModifiableByteArray handle; + private ModifiableInteger handleLength; + + public ModifiableInteger getHandleLength() { + return handleLength; + } + + public void setHandleLength(ModifiableInteger handleLength) { + this.handleLength = handleLength; + } + + public void setHandleLength(int handleLength) { + this.handleLength = + ModifiableVariableFactory.safelySetValue(this.handleLength, handleLength); + } + + public ModifiableByteArray getHandle() { + return handle; + } + + public void setHandle(ModifiableByteArray handle) { + setHandle(handle, false); + } + + public void setHandle(byte[] handle) { + setHandle(handle, false); + } + + public void setHandle(ModifiableByteArray handle, boolean adjustLengthField) { + this.handle = handle; + if (adjustLengthField) { + setHandleLength(this.handle.getValue().length); + } + } + + public void setHandle(byte[] handle, boolean adjustLengthField) { + this.handle = ModifiableVariableFactory.safelySetValue(this.handle, handle); + if (adjustLengthField) { + setHandleLength(this.handle.getValue().length); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWithPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWithPathMessage.java new file mode 100644 index 000000000..a8a626bae --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWithPathMessage.java @@ -0,0 +1,58 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import java.nio.charset.StandardCharsets; + +public abstract class SftpRequestWithPathMessage> + extends SftpRequestMessage { + + private ModifiableString path; + private ModifiableInteger pathLength; + + public ModifiableInteger getPathLength() { + return pathLength; + } + + public void setPathLength(ModifiableInteger pathLength) { + this.pathLength = pathLength; + } + + public void setPathLength(int pathLength) { + this.pathLength = ModifiableVariableFactory.safelySetValue(this.pathLength, pathLength); + } + + public ModifiableString getPath() { + return path; + } + + public void setPath(ModifiableString path) { + setPath(path, false); + } + + public void setPath(String path) { + setPath(path, false); + } + + public void setPath(ModifiableString path, boolean adjustLengthField) { + if (adjustLengthField) { + setPathLength(path.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.path = path; + } + + public void setPath(String path, boolean adjustLengthField) { + if (adjustLengthField) { + setPathLength(path.getBytes(StandardCharsets.UTF_8).length); + } + this.path = ModifiableVariableFactory.safelySetValue(this.path, path); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestCloseMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestCloseMessageParser.java new file mode 100644 index 000000000..d497bd51c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestCloseMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestCloseMessage; + +public class SfptRequestCloseMessageParser + extends SftpRequestWithHandleMessageParser { + + public SfptRequestCloseMessageParser(byte[] array) { + super(array); + } + + public SfptRequestCloseMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SfptRequestCloseMessage createMessage() { + return new SfptRequestCloseMessage(); + } + + @Override + protected void parseRequestWithHandleSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestReadMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestReadMessageParser.java new file mode 100644 index 000000000..8f6072aab --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestReadMessageParser.java @@ -0,0 +1,48 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestReadMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SfptRequestReadMessageParser + extends SftpRequestWithHandleMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SfptRequestReadMessageParser(byte[] array) { + super(array); + } + + public SfptRequestReadMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SfptRequestReadMessage createMessage() { + return new SfptRequestReadMessage(); + } + + private void parseOffset() { + message.setOffset(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("Offset: {}", message.getOffset().getValue()); + } + + private void parseLength() { + message.setLength(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("Length: {}", message.getLength().getValue()); + } + + @Override + protected void parseRequestWithHandleSpecificContents() { + parseOffset(); + parseLength(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestRemoveMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestRemoveMessageParser.java new file mode 100644 index 000000000..6fd045aa9 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestRemoveMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRemoveMessage; + +public class SfptRequestRemoveMessageParser + extends SftpRequestWithPathMessageParser { + + public SfptRequestRemoveMessageParser(byte[] array) { + super(array); + } + + public SfptRequestRemoveMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SfptRequestRemoveMessage createMessage() { + return new SfptRequestRemoveMessage(); + } + + @Override + protected void parseRequestWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestRenameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestRenameMessageParser.java new file mode 100644 index 000000000..d176265a8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestRenameMessageParser.java @@ -0,0 +1,48 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRenameMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SfptRequestRenameMessageParser + extends SftpRequestWithPathMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SfptRequestRenameMessageParser(byte[] array) { + super(array); + } + + public SfptRequestRenameMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SfptRequestRenameMessage createMessage() { + return new SfptRequestRenameMessage(); + } + + private void parseNewPath() { + message.setNewPathLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("NewPath length: {}", message.getNewPathLength().getValue()); + message.setNewPath( + parseByteString(message.getNewPathLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug("NewPath: {}", () -> backslashEscapeString(message.getNewPath().getValue())); + } + + @Override + protected void parseRequestWithPathSpecificContents() { + parseNewPath(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestWriteMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestWriteMessageParser.java new file mode 100644 index 000000000..5377a13b9 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestWriteMessageParser.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.BinaryPacketConstants; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestWriteMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SfptRequestWriteMessageParser + extends SftpRequestWithHandleMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SfptRequestWriteMessageParser(byte[] array) { + super(array); + } + + public SfptRequestWriteMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SfptRequestWriteMessage createMessage() { + return new SfptRequestWriteMessage(); + } + + private void parseOffset() { + message.setOffset(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("Offset: {}", message.getOffset().getValue()); + } + + private void parseData() { + message.setDataLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); + LOGGER.debug("Data length: {}", message.getDataLength().getValue()); + message.setData(parseByteArrayField(message.getDataLength().getValue())); + LOGGER.debug( + "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); + } + + @Override + protected void parseRequestWithHandleSpecificContents() { + parseOffset(); + parseData(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java index 939437d0a..4c6c24325 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java @@ -7,16 +7,14 @@ */ package de.rub.nds.sshattacker.core.data.sftp.parser; -import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; - import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; -import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SftpRequestOpenMessageParser extends SftpRequestMessageParser { +public class SftpRequestOpenMessageParser + extends SftpRequestWithPathMessageParser { private static final Logger LOGGER = LogManager.getLogger(); @@ -33,14 +31,6 @@ public SftpRequestOpenMessage createMessage() { return new SftpRequestOpenMessage(); } - private void parseFilename() { - message.setFilenameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Filename length: {}", message.getFilenameLength().getValue()); - message.setFilename( - parseByteString(message.getFilenameLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("Filename: {}", () -> backslashEscapeString(message.getFilename().getValue())); - } - private void parsePFlags() { message.setPFlags(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("PFlags: {}", message.getPFlags().getValue()); @@ -54,8 +44,7 @@ private void parseAttributes() { } @Override - protected void parseRequestSpecificContents() { - parseFilename(); + protected void parseRequestWithPathSpecificContents() { parsePFlags(); parseAttributes(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java new file mode 100644 index 000000000..7308cfa52 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java @@ -0,0 +1,44 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.BinaryPacketConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWithHandleMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpRequestWithHandleMessageParser> + extends SftpRequestMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpRequestWithHandleMessageParser(byte[] array) { + super(array); + } + + protected SftpRequestWithHandleMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseHandle() { + message.setHandleLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); + LOGGER.debug("Handle length: {}", message.getHandleLength().getValue()); + message.setHandle(parseByteArrayField(message.getHandleLength().getValue())); + LOGGER.debug( + "Handle: {}", + () -> ArrayConverter.bytesToRawHexString(message.getHandle().getValue())); + } + + public void parseRequestSpecificContents() { + parseHandle(); + parseRequestWithHandleSpecificContents(); + } + + protected abstract void parseRequestWithHandleSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithPathMessageParser.java new file mode 100644 index 000000000..c8480ad03 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithPathMessageParser.java @@ -0,0 +1,45 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWithPathMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpRequestWithPathMessageParser> + extends SftpRequestMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpRequestWithPathMessageParser(byte[] array) { + super(array); + } + + protected SftpRequestWithPathMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parsePath() { + message.setPathLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("Path length: {}", message.getPathLength().getValue()); + message.setPath( + parseByteString(message.getPathLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug("Path: {}", () -> backslashEscapeString(message.getPath().getValue())); + } + + public void parseRequestSpecificContents() { + parsePath(); + parseRequestWithPathSpecificContents(); + } + + protected abstract void parseRequestWithPathSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestCloseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestCloseMessagePreparator.java new file mode 100644 index 000000000..d9ff14398 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestCloseMessagePreparator.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestCloseMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SfptRequestCloseMessagePreparator + extends SftpRequestMessagePreparator { + + public SfptRequestCloseMessagePreparator(Chooser chooser, SfptRequestCloseMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_CLOSE); + } + + public void prepareRequestSpecificContents() { + if (getObject().getHandle() == null) { + // TODO Set valid handler + getObject().setHandle(new byte[100], true); + } + if (getObject().getHandleLength() == null) { + getObject().setHandleLength(getObject().getHandle().getValue().length); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestReadMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestReadMessagePreparator.java new file mode 100644 index 000000000..72f56c33b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestReadMessagePreparator.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestReadMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SfptRequestReadMessagePreparator + extends SftpRequestMessagePreparator { + + public SfptRequestReadMessagePreparator(Chooser chooser, SfptRequestReadMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_READ); + } + + public void prepareRequestSpecificContents() { + if (getObject().getHandle() == null) { + // TODO Set valid handler + getObject().setHandle(new byte[100], true); + } + if (getObject().getHandleLength() == null) { + getObject().setHandleLength(getObject().getHandle().getValue().length); + } + + if (getObject().getOffset() == null) { + getObject().setOffset(0); + } + + if (getObject().getLength() == null) { + getObject().setLength(0); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestRemoveMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestRemoveMessagePreparator.java new file mode 100644 index 000000000..43512d591 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestRemoveMessagePreparator.java @@ -0,0 +1,29 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRemoveMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SfptRequestRemoveMessagePreparator + extends SftpRequestMessagePreparator { + + public SfptRequestRemoveMessagePreparator(Chooser chooser, SfptRequestRemoveMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_REMOVE); + } + + public void prepareRequestSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/etc/passwd", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestRenameMessagePreparator.java new file mode 100644 index 000000000..4d2265f3f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestRenameMessagePreparator.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRenameMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SfptRequestRenameMessagePreparator + extends SftpRequestMessagePreparator { + + public SfptRequestRenameMessagePreparator(Chooser chooser, SfptRequestRenameMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_RENAME); + } + + public void prepareRequestSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/etc/passwd", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + + if (getObject().getNewPath() == null) { + getObject().setNewPath("/tmp/passwd-win", true); + } + if (getObject().getNewPathLength() == null) { + getObject().setNewPathLength(getObject().getNewPath().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestWriteMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestWriteMessagePreparator.java new file mode 100644 index 000000000..4d4b2f52c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestWriteMessagePreparator.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestWriteMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SfptRequestWriteMessagePreparator + extends SftpRequestMessagePreparator { + + public SfptRequestWriteMessagePreparator(Chooser chooser, SfptRequestWriteMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_WRITE); + } + + public void prepareRequestSpecificContents() { + if (getObject().getHandle() == null) { + // TODO Set valid handler + getObject().setHandle(new byte[100], true); + } + if (getObject().getHandleLength() == null) { + getObject().setHandleLength(getObject().getHandle().getValue().length); + } + + if (getObject().getOffset() == null) { + getObject().setOffset(0); + } + + if (getObject().getData() == null) { + getObject().setData(new byte[100], true); + } + if (getObject().getDataLength() == null) { + getObject().setDataLength(getObject().getData().getValue().length); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java index 70455817f..00f8e957b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java @@ -21,12 +21,13 @@ public SftpRequestOpenMessagePreparator(Chooser chooser, SftpRequestOpenMessage } public void prepareRequestSpecificContents() { - if (getObject().getFilename() == null) { - getObject().setFilename("/etc/passwd", true); + if (getObject().getPath() == null) { + getObject().setPath("/etc/passwd", true); } - if (getObject().getFilenameLength() == null) { - getObject().setFilenameLength(getObject().getFilename().getValue().length()); + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); } + if (getObject().getPFlags() == null) { getObject().setPFlags(SftpFileOpenFlag.SSH_FXF_READ); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestCloseMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestCloseMessageSerializer.java new file mode 100644 index 000000000..e243931f1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestCloseMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestCloseMessage; + +public class SfptRequestCloseMessageSerializer + extends SftpRequestWithHandleMessageSerializer { + + public SfptRequestCloseMessageSerializer(SfptRequestCloseMessage message) { + super(message); + } + + @Override + protected void serializeRequestWithHandleSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestReadMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestReadMessageSerializer.java new file mode 100644 index 000000000..5bdf55125 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestReadMessageSerializer.java @@ -0,0 +1,39 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestReadMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SfptRequestReadMessageSerializer + extends SftpRequestWithHandleMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SfptRequestReadMessageSerializer(SfptRequestReadMessage message) { + super(message); + } + + private void serializeOffset() { + LOGGER.debug("Offset: {}", message.getOffset().getValue()); + appendLong(message.getOffset().getValue(), DataFormatConstants.UINT64_SIZE); + } + + private void serializeLength() { + LOGGER.debug("Length: {}", message.getLength().getValue()); + appendInt(message.getLength().getValue(), DataFormatConstants.UINT32_SIZE); + } + + @Override + protected void serializeRequestWithHandleSpecificContents() { + serializeOffset(); + serializeLength(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestRemoveMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestRemoveMessageSerializer.java new file mode 100644 index 000000000..e9bceb888 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestRemoveMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRemoveMessage; + +public class SfptRequestRemoveMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + public SfptRequestRemoveMessageSerializer(SfptRequestRemoveMessage message) { + super(message); + } + + @Override + protected void serializeRequestWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestRenameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestRenameMessageSerializer.java new file mode 100644 index 000000000..23046e0fc --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestRenameMessageSerializer.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRenameMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SfptRequestRenameMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SfptRequestRenameMessageSerializer(SfptRequestRenameMessage message) { + super(message); + } + + public void serializeNewPath() { + LOGGER.debug("NewPath length: {}", message.getNewPathLength().getValue()); + appendInt(message.getNewPathLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("NewPath: {}", () -> backslashEscapeString(message.getNewPath().getValue())); + appendString(message.getNewPath().getValue(), StandardCharsets.UTF_8); + } + + @Override + protected void serializeRequestWithPathSpecificContents() { + serializeNewPath(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestWriteMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestWriteMessageSerializer.java new file mode 100644 index 000000000..7f2f9d8e2 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestWriteMessageSerializer.java @@ -0,0 +1,43 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestWriteMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SfptRequestWriteMessageSerializer + extends SftpRequestWithHandleMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SfptRequestWriteMessageSerializer(SfptRequestWriteMessage message) { + super(message); + } + + private void serializeOffset() { + LOGGER.debug("Offset: {}", message.getOffset().getValue()); + appendLong(message.getOffset().getValue(), DataFormatConstants.UINT64_SIZE); + } + + public void serializeData() { + LOGGER.debug("Data length: {}", message.getDataLength().getValue()); + appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); + appendBytes(message.getData().getValue()); + } + + @Override + protected void serializeRequestWithHandleSpecificContents() { + serializeOffset(); + serializeData(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java index 8d8e7efa2..fe28ec0fd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java @@ -7,16 +7,13 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer; -import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; - import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenMessage; -import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class SftpRequestOpenMessageSerializer - extends SftpRequestMessageSerializer { + extends SftpRequestWithPathMessageSerializer { private static final Logger LOGGER = LogManager.getLogger(); @@ -24,13 +21,6 @@ public SftpRequestOpenMessageSerializer(SftpRequestOpenMessage message) { super(message); } - public void serializeFilename() { - LOGGER.debug("Filename length: {}", message.getFilenameLength().getValue()); - appendInt(message.getFilenameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Filename: {}", () -> backslashEscapeString(message.getFilename().getValue())); - appendString(message.getFilename().getValue(), StandardCharsets.UTF_8); - } - private void serializePFlags() { LOGGER.debug("PFlags: {}", message.getPFlags().getValue()); appendInt(message.getPFlags().getValue(), DataFormatConstants.UINT32_SIZE); @@ -41,8 +31,7 @@ private void serializeAttributes() { } @Override - public void serializeRequestSpecificContents() { - serializeFilename(); + protected void serializeRequestWithPathSpecificContents() { serializePFlags(); serializeAttributes(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithHandleMessageSerializer.java new file mode 100644 index 000000000..b4119f6f8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithHandleMessageSerializer.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWithHandleMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpRequestWithHandleMessageSerializer< + T extends SftpRequestWithHandleMessage> + extends SftpRequestMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpRequestWithHandleMessageSerializer(T message) { + super(message); + } + + public void serializeHandle() { + LOGGER.debug("Handle length: {}", message.getHandleLength().getValue()); + appendInt(message.getHandleLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "Handle: {}", + () -> ArrayConverter.bytesToRawHexString(message.getHandle().getValue())); + appendBytes(message.getHandle().getValue()); + } + + public void serializeRequestSpecificContents() { + serializeHandle(); + serializeRequestWithHandleSpecificContents(); + } + + protected abstract void serializeRequestWithHandleSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithPathMessageSerializer.java new file mode 100644 index 000000000..355d82079 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithPathMessageSerializer.java @@ -0,0 +1,40 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWithPathMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpRequestWithPathMessageSerializer> + extends SftpRequestMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpRequestWithPathMessageSerializer(T message) { + super(message); + } + + public void serializePath() { + LOGGER.debug("Path length: {}", message.getPathLength().getValue()); + appendInt(message.getPathLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("Path: {}", () -> backslashEscapeString(message.getPath().getValue())); + appendString(message.getPath().getValue(), StandardCharsets.UTF_8); + } + + public void serializeRequestSpecificContents() { + serializePath(); + serializeRequestWithPathSpecificContents(); + } + + protected abstract void serializeRequestWithPathSpecificContents(); +} From 5ebb34941b4eac9f613ad5e6b77e1c501f1c2ed9 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 31 Oct 2024 11:41:33 +0100 Subject: [PATCH 026/203] Fix typo Sfpt to Sftp Added SFTP Opendir, Mkdir and Rmdir Messages --- .../SfptRequestCloseMessageHandler.java | 51 ------------------ .../SfptRequestReadMessageHandler.java | 51 ------------------ .../SfptRequestRemoveMessageHandler.java | 51 ------------------ .../SfptRequestRenameMessageHandler.java | 51 ------------------ .../SfptRequestWriteMessageHandler.java | 51 ------------------ .../SftpRequestCloseMessageHandler.java | 51 ++++++++++++++++++ .../SftpRequestMkdirMessageHandler.java | 51 ++++++++++++++++++ .../SftpRequestOpendirMessageHandler.java | 52 +++++++++++++++++++ .../SftpRequestReadMessageHandler.java | 51 ++++++++++++++++++ .../SftpRequestRemoveMessageHandler.java | 51 ++++++++++++++++++ .../SftpRequestRenameMessageHandler.java | 51 ++++++++++++++++++ .../SftpRequestRmdirMessageHandler.java | 51 ++++++++++++++++++ .../SftpRequestWriteMessageHandler.java | 51 ++++++++++++++++++ ...sage.java => SftpRequestCloseMessage.java} | 8 +-- .../sftp/message/SftpRequestMkdirMessage.java | 39 ++++++++++++++ .../message/SftpRequestOpendirMessage.java | 22 ++++++++ ...ssage.java => SftpRequestReadMessage.java} | 8 +-- ...age.java => SftpRequestRemoveMessage.java} | 8 +-- ...age.java => SftpRequestRenameMessage.java} | 10 ++-- .../sftp/message/SftpRequestRmdirMessage.java | 21 ++++++++ ...sage.java => SftpRequestWriteMessage.java} | 8 +-- ...ava => SftpRequestCloseMessageParser.java} | 14 ++--- .../parser/SftpRequestMkdirMessageParser.java | 44 ++++++++++++++++ .../SftpRequestOpendirMessageParser.java | 36 +++++++++++++ ...java => SftpRequestReadMessageParser.java} | 14 ++--- ...va => SftpRequestRemoveMessageParser.java} | 14 ++--- ...va => SftpRequestRenameMessageParser.java} | 14 ++--- .../parser/SftpRequestRmdirMessageParser.java | 36 +++++++++++++ ...ava => SftpRequestWriteMessageParser.java} | 14 ++--- ...=> SftpRequestCloseMessagePreparator.java} | 8 +-- .../SftpRequestMkdirMessagePreparator.java | 35 +++++++++++++ .../SftpRequestOpendirMessagePreparator.java | 29 +++++++++++ ... => SftpRequestReadMessagePreparator.java} | 8 +-- ...> SftpRequestRemoveMessagePreparator.java} | 8 +-- ...> SftpRequestRenameMessagePreparator.java} | 8 +-- .../SftpRequestRmdirMessagePreparator.java | 30 +++++++++++ ...=> SftpRequestWriteMessagePreparator.java} | 8 +-- ...=> SftpRequestCloseMessageSerializer.java} | 8 +-- .../SftpRequestMkdirMessageSerializer.java | 27 ++++++++++ .../SftpRequestOpendirMessageSerializer.java | 21 ++++++++ ... => SftpRequestReadMessageSerializer.java} | 8 +-- ...> SftpRequestRemoveMessageSerializer.java} | 8 +-- ...> SftpRequestRenameMessageSerializer.java} | 8 +-- .../SftpRequestRmdirMessageSerializer.java | 21 ++++++++ ...=> SftpRequestWriteMessageSerializer.java} | 8 +-- 45 files changed, 866 insertions(+), 351 deletions(-) delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestCloseMessageHandler.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestReadMessageHandler.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRemoveMessageHandler.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRenameMessageHandler.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestWriteMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestCloseMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMkdirMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpendirMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRemoveMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRenameMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRmdirMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestWriteMessageHandler.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{SfptRequestCloseMessage.java => SftpRequestCloseMessage.java} (58%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMkdirMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpendirMessage.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{SfptRequestReadMessage.java => SftpRequestReadMessage.java} (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{SfptRequestRemoveMessage.java => SftpRequestRemoveMessage.java} (60%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{SfptRequestRenameMessage.java => SftpRequestRenameMessage.java} (85%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRmdirMessage.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{SfptRequestWriteMessage.java => SftpRequestWriteMessage.java} (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{SfptRequestCloseMessageParser.java => SftpRequestCloseMessageParser.java} (56%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMkdirMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpendirMessageParser.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{SfptRequestReadMessageParser.java => SftpRequestReadMessageParser.java} (74%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{SfptRequestRemoveMessageParser.java => SftpRequestRemoveMessageParser.java} (56%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{SfptRequestRenameMessageParser.java => SftpRequestRenameMessageParser.java} (77%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRmdirMessageParser.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{SfptRequestWriteMessageParser.java => SftpRequestWriteMessageParser.java} (79%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{SfptRequestCloseMessagePreparator.java => SftpRequestCloseMessagePreparator.java} (76%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMkdirMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpendirMessagePreparator.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{SfptRequestReadMessagePreparator.java => SftpRequestReadMessagePreparator.java} (80%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{SfptRequestRemoveMessagePreparator.java => SftpRequestRemoveMessagePreparator.java} (75%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{SfptRequestRenameMessagePreparator.java => SftpRequestRenameMessagePreparator.java} (80%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRmdirMessagePreparator.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{SfptRequestWriteMessagePreparator.java => SftpRequestWriteMessagePreparator.java} (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{SfptRequestCloseMessageSerializer.java => SftpRequestCloseMessageSerializer.java} (66%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMkdirMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpendirMessageSerializer.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{SfptRequestReadMessageSerializer.java => SftpRequestReadMessageSerializer.java} (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{SfptRequestRemoveMessageSerializer.java => SftpRequestRemoveMessageSerializer.java} (66%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{SfptRequestRenameMessageSerializer.java => SftpRequestRenameMessageSerializer.java} (83%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRmdirMessageSerializer.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{SfptRequestWriteMessageSerializer.java => SftpRequestWriteMessageSerializer.java} (85%) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestCloseMessageHandler.java deleted file mode 100644 index bb63423a0..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestCloseMessageHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.handler; - -import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestCloseMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SfptRequestCloseMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SfptRequestCloseMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SfptRequestCloseMessageSerializer; -import de.rub.nds.sshattacker.core.state.SshContext; - -public class SfptRequestCloseMessageHandler extends SftpMessageHandler { - - public SfptRequestCloseMessageHandler(SshContext context) { - super(context); - } - - public SfptRequestCloseMessageHandler(SshContext context, SfptRequestCloseMessage message) { - super(context, message); - } - - @Override - public void adjustContext() { - // TODO: Handle SfptRequestCloseMessage - } - - @Override - public SfptRequestCloseMessageParser getParser(byte[] array) { - return new SfptRequestCloseMessageParser(array); - } - - @Override - public SfptRequestCloseMessageParser getParser(byte[] array, int startPosition) { - return new SfptRequestCloseMessageParser(array, startPosition); - } - - @Override - public SfptRequestCloseMessagePreparator getPreparator() { - return new SfptRequestCloseMessagePreparator(context.getChooser(), message); - } - - @Override - public SfptRequestCloseMessageSerializer getSerializer() { - return new SfptRequestCloseMessageSerializer(message); - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestReadMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestReadMessageHandler.java deleted file mode 100644 index fc88154c5..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestReadMessageHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.handler; - -import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestReadMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SfptRequestReadMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SfptRequestReadMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SfptRequestReadMessageSerializer; -import de.rub.nds.sshattacker.core.state.SshContext; - -public class SfptRequestReadMessageHandler extends SftpMessageHandler { - - public SfptRequestReadMessageHandler(SshContext context) { - super(context); - } - - public SfptRequestReadMessageHandler(SshContext context, SfptRequestReadMessage message) { - super(context, message); - } - - @Override - public void adjustContext() { - // TODO: Handle SfptRequestReadMessage - } - - @Override - public SfptRequestReadMessageParser getParser(byte[] array) { - return new SfptRequestReadMessageParser(array); - } - - @Override - public SfptRequestReadMessageParser getParser(byte[] array, int startPosition) { - return new SfptRequestReadMessageParser(array, startPosition); - } - - @Override - public SfptRequestReadMessagePreparator getPreparator() { - return new SfptRequestReadMessagePreparator(context.getChooser(), message); - } - - @Override - public SfptRequestReadMessageSerializer getSerializer() { - return new SfptRequestReadMessageSerializer(message); - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRemoveMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRemoveMessageHandler.java deleted file mode 100644 index dbbe22fc8..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRemoveMessageHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.handler; - -import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRemoveMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SfptRequestRemoveMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SfptRequestRemoveMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SfptRequestRemoveMessageSerializer; -import de.rub.nds.sshattacker.core.state.SshContext; - -public class SfptRequestRemoveMessageHandler extends SftpMessageHandler { - - public SfptRequestRemoveMessageHandler(SshContext context) { - super(context); - } - - public SfptRequestRemoveMessageHandler(SshContext context, SfptRequestRemoveMessage message) { - super(context, message); - } - - @Override - public void adjustContext() { - // TODO: Handle SfptRequestRemoveMessage - } - - @Override - public SfptRequestRemoveMessageParser getParser(byte[] array) { - return new SfptRequestRemoveMessageParser(array); - } - - @Override - public SfptRequestRemoveMessageParser getParser(byte[] array, int startPosition) { - return new SfptRequestRemoveMessageParser(array, startPosition); - } - - @Override - public SfptRequestRemoveMessagePreparator getPreparator() { - return new SfptRequestRemoveMessagePreparator(context.getChooser(), message); - } - - @Override - public SfptRequestRemoveMessageSerializer getSerializer() { - return new SfptRequestRemoveMessageSerializer(message); - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRenameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRenameMessageHandler.java deleted file mode 100644 index 3f7e39e78..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestRenameMessageHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.handler; - -import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRenameMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SfptRequestRenameMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SfptRequestRenameMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SfptRequestRenameMessageSerializer; -import de.rub.nds.sshattacker.core.state.SshContext; - -public class SfptRequestRenameMessageHandler extends SftpMessageHandler { - - public SfptRequestRenameMessageHandler(SshContext context) { - super(context); - } - - public SfptRequestRenameMessageHandler(SshContext context, SfptRequestRenameMessage message) { - super(context, message); - } - - @Override - public void adjustContext() { - // TODO: Handle SfptRequestRenameMessage - } - - @Override - public SfptRequestRenameMessageParser getParser(byte[] array) { - return new SfptRequestRenameMessageParser(array); - } - - @Override - public SfptRequestRenameMessageParser getParser(byte[] array, int startPosition) { - return new SfptRequestRenameMessageParser(array, startPosition); - } - - @Override - public SfptRequestRenameMessagePreparator getPreparator() { - return new SfptRequestRenameMessagePreparator(context.getChooser(), message); - } - - @Override - public SfptRequestRenameMessageSerializer getSerializer() { - return new SfptRequestRenameMessageSerializer(message); - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestWriteMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestWriteMessageHandler.java deleted file mode 100644 index e2054563c..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SfptRequestWriteMessageHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.handler; - -import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestWriteMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SfptRequestWriteMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SfptRequestWriteMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SfptRequestWriteMessageSerializer; -import de.rub.nds.sshattacker.core.state.SshContext; - -public class SfptRequestWriteMessageHandler extends SftpMessageHandler { - - public SfptRequestWriteMessageHandler(SshContext context) { - super(context); - } - - public SfptRequestWriteMessageHandler(SshContext context, SfptRequestWriteMessage message) { - super(context, message); - } - - @Override - public void adjustContext() { - // TODO: Handle SfptRequestWriteMessage - } - - @Override - public SfptRequestWriteMessageParser getParser(byte[] array) { - return new SfptRequestWriteMessageParser(array); - } - - @Override - public SfptRequestWriteMessageParser getParser(byte[] array, int startPosition) { - return new SfptRequestWriteMessageParser(array, startPosition); - } - - @Override - public SfptRequestWriteMessagePreparator getPreparator() { - return new SfptRequestWriteMessagePreparator(context.getChooser(), message); - } - - @Override - public SfptRequestWriteMessageSerializer getSerializer() { - return new SfptRequestWriteMessageSerializer(message); - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestCloseMessageHandler.java new file mode 100644 index 000000000..7a091ce1d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestCloseMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestCloseMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestCloseMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestCloseMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestCloseMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestCloseMessageHandler extends SftpMessageHandler { + + public SftpRequestCloseMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestCloseMessageHandler(SshContext context, SftpRequestCloseMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestCloseMessage + } + + @Override + public SftpRequestCloseMessageParser getParser(byte[] array) { + return new SftpRequestCloseMessageParser(array); + } + + @Override + public SftpRequestCloseMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestCloseMessageParser(array, startPosition); + } + + @Override + public SftpRequestCloseMessagePreparator getPreparator() { + return new SftpRequestCloseMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestCloseMessageSerializer getSerializer() { + return new SftpRequestCloseMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMkdirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMkdirMessageHandler.java new file mode 100644 index 000000000..cf14919d8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMkdirMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMkdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestMkdirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestMkdirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestMkdirMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestMkdirMessageHandler extends SftpMessageHandler { + + public SftpRequestMkdirMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestMkdirMessageHandler(SshContext context, SftpRequestMkdirMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestMkdirMessage + } + + @Override + public SftpRequestMkdirMessageParser getParser(byte[] array) { + return new SftpRequestMkdirMessageParser(array); + } + + @Override + public SftpRequestMkdirMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestMkdirMessageParser(array, startPosition); + } + + @Override + public SftpRequestMkdirMessagePreparator getPreparator() { + return new SftpRequestMkdirMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestMkdirMessageSerializer getSerializer() { + return new SftpRequestMkdirMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpendirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpendirMessageHandler.java new file mode 100644 index 000000000..bb08ece7d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpendirMessageHandler.java @@ -0,0 +1,52 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpendirMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestOpendirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestOpendirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestOpendirMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestOpendirMessageHandler + extends SftpMessageHandler { + + public SftpRequestOpendirMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestOpendirMessageHandler(SshContext context, SftpRequestOpendirMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestOpendirMessage + } + + @Override + public SftpRequestOpendirMessageParser getParser(byte[] array) { + return new SftpRequestOpendirMessageParser(array); + } + + @Override + public SftpRequestOpendirMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestOpendirMessageParser(array, startPosition); + } + + @Override + public SftpRequestOpendirMessagePreparator getPreparator() { + return new SftpRequestOpendirMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestOpendirMessageSerializer getSerializer() { + return new SftpRequestOpendirMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadMessageHandler.java new file mode 100644 index 000000000..61adff264 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestReadMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestReadMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestReadMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestReadMessageHandler extends SftpMessageHandler { + + public SftpRequestReadMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestReadMessageHandler(SshContext context, SftpRequestReadMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestReadMessage + } + + @Override + public SftpRequestReadMessageParser getParser(byte[] array) { + return new SftpRequestReadMessageParser(array); + } + + @Override + public SftpRequestReadMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestReadMessageParser(array, startPosition); + } + + @Override + public SftpRequestReadMessagePreparator getPreparator() { + return new SftpRequestReadMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestReadMessageSerializer getSerializer() { + return new SftpRequestReadMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRemoveMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRemoveMessageHandler.java new file mode 100644 index 000000000..745a4b25f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRemoveMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRemoveMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestRemoveMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestRemoveMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestRemoveMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestRemoveMessageHandler extends SftpMessageHandler { + + public SftpRequestRemoveMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestRemoveMessageHandler(SshContext context, SftpRequestRemoveMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestRemoveMessage + } + + @Override + public SftpRequestRemoveMessageParser getParser(byte[] array) { + return new SftpRequestRemoveMessageParser(array); + } + + @Override + public SftpRequestRemoveMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestRemoveMessageParser(array, startPosition); + } + + @Override + public SftpRequestRemoveMessagePreparator getPreparator() { + return new SftpRequestRemoveMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestRemoveMessageSerializer getSerializer() { + return new SftpRequestRemoveMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRenameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRenameMessageHandler.java new file mode 100644 index 000000000..8c1fb9d60 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRenameMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestRenameMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestRenameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestRenameMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestRenameMessageHandler extends SftpMessageHandler { + + public SftpRequestRenameMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestRenameMessageHandler(SshContext context, SftpRequestRenameMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestRenameMessage + } + + @Override + public SftpRequestRenameMessageParser getParser(byte[] array) { + return new SftpRequestRenameMessageParser(array); + } + + @Override + public SftpRequestRenameMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestRenameMessageParser(array, startPosition); + } + + @Override + public SftpRequestRenameMessagePreparator getPreparator() { + return new SftpRequestRenameMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestRenameMessageSerializer getSerializer() { + return new SftpRequestRenameMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRmdirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRmdirMessageHandler.java new file mode 100644 index 000000000..04fb18aed --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRmdirMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRmdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestRmdirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestRmdirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestRmdirMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestRmdirMessageHandler extends SftpMessageHandler { + + public SftpRequestRmdirMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestRmdirMessageHandler(SshContext context, SftpRequestRmdirMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestRmdirMessage + } + + @Override + public SftpRequestRmdirMessageParser getParser(byte[] array) { + return new SftpRequestRmdirMessageParser(array); + } + + @Override + public SftpRequestRmdirMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestRmdirMessageParser(array, startPosition); + } + + @Override + public SftpRequestRmdirMessagePreparator getPreparator() { + return new SftpRequestRmdirMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestRmdirMessageSerializer getSerializer() { + return new SftpRequestRmdirMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestWriteMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestWriteMessageHandler.java new file mode 100644 index 000000000..a48df9cf1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestWriteMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWriteMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestWriteMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestWriteMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestWriteMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestWriteMessageHandler extends SftpMessageHandler { + + public SftpRequestWriteMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestWriteMessageHandler(SshContext context, SftpRequestWriteMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestWriteMessage + } + + @Override + public SftpRequestWriteMessageParser getParser(byte[] array) { + return new SftpRequestWriteMessageParser(array); + } + + @Override + public SftpRequestWriteMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestWriteMessageParser(array, startPosition); + } + + @Override + public SftpRequestWriteMessagePreparator getPreparator() { + return new SftpRequestWriteMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestWriteMessageSerializer getSerializer() { + return new SftpRequestWriteMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestCloseMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestCloseMessage.java similarity index 58% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestCloseMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestCloseMessage.java index 9a3088dc8..3448846b9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestCloseMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestCloseMessage.java @@ -7,13 +7,13 @@ */ package de.rub.nds.sshattacker.core.data.sftp.message; -import de.rub.nds.sshattacker.core.data.sftp.handler.SfptRequestCloseMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestCloseMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; -public class SfptRequestCloseMessage extends SftpRequestWithHandleMessage { +public class SftpRequestCloseMessage extends SftpRequestWithHandleMessage { @Override - public SfptRequestCloseMessageHandler getHandler(SshContext context) { - return new SfptRequestCloseMessageHandler(context, this); + public SftpRequestCloseMessageHandler getHandler(SshContext context) { + return new SftpRequestCloseMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMkdirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMkdirMessage.java new file mode 100644 index 000000000..3b1a5920e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMkdirMessage.java @@ -0,0 +1,39 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestMkdirMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.util.List; + +public class SftpRequestMkdirMessage extends SftpRequestWithPathMessage { + + private SftpFileAttributes attributes; + + public SftpFileAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SftpFileAttributes attributes) { + this.attributes = attributes; + } + + @Override + public SftpRequestMkdirMessageHandler getHandler(SshContext context) { + return new SftpRequestMkdirMessageHandler(context, this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + holders.addAll(attributes.getAllModifiableVariableHolders()); + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpendirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpendirMessage.java new file mode 100644 index 000000000..013a1520a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpendirMessage.java @@ -0,0 +1,22 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestOpendirMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestOpendirMessage + extends SftpRequestWithPathMessage { + + // path is the + + @Override + public SftpRequestOpendirMessageHandler getHandler(SshContext context) { + return new SftpRequestOpendirMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestReadMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadMessage.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestReadMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadMessage.java index 7307bd9c8..ad29a3eda 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestReadMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadMessage.java @@ -10,10 +10,10 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; -import de.rub.nds.sshattacker.core.data.sftp.handler.SfptRequestReadMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestReadMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; -public class SfptRequestReadMessage extends SftpRequestWithHandleMessage { +public class SftpRequestReadMessage extends SftpRequestWithHandleMessage { private ModifiableLong offset; private ModifiableInteger length; @@ -43,7 +43,7 @@ public void setLength(int length) { } @Override - public SfptRequestReadMessageHandler getHandler(SshContext context) { - return new SfptRequestReadMessageHandler(context, this); + public SftpRequestReadMessageHandler getHandler(SshContext context) { + return new SftpRequestReadMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestRemoveMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRemoveMessage.java similarity index 60% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestRemoveMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRemoveMessage.java index 199fa7f08..7d72dbd2b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestRemoveMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRemoveMessage.java @@ -7,15 +7,15 @@ */ package de.rub.nds.sshattacker.core.data.sftp.message; -import de.rub.nds.sshattacker.core.data.sftp.handler.SfptRequestRemoveMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestRemoveMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; -public class SfptRequestRemoveMessage extends SftpRequestWithPathMessage { +public class SftpRequestRemoveMessage extends SftpRequestWithPathMessage { // path is the filename @Override - public SfptRequestRemoveMessageHandler getHandler(SshContext context) { - return new SfptRequestRemoveMessageHandler(context, this); + public SftpRequestRemoveMessageHandler getHandler(SshContext context) { + return new SftpRequestRemoveMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestRenameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRenameMessage.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestRenameMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRenameMessage.java index d76e4268b..2148ba393 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestRenameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRenameMessage.java @@ -10,13 +10,13 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.SfptRequestRenameMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestRenameMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; -public class SfptRequestRenameMessage extends SftpRequestWithPathMessage { +public class SftpRequestRenameMessage extends SftpRequestWithPathMessage { - // path is the old ath + // path is the old path private ModifiableInteger newPathLength; private ModifiableString newPath; @@ -61,7 +61,7 @@ public void setNewPath(String newPath, boolean adjustLengthField) { } @Override - public SfptRequestRenameMessageHandler getHandler(SshContext context) { - return new SfptRequestRenameMessageHandler(context, this); + public SftpRequestRenameMessageHandler getHandler(SshContext context) { + return new SftpRequestRenameMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRmdirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRmdirMessage.java new file mode 100644 index 000000000..c7f8e4e0f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRmdirMessage.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestRmdirMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestRmdirMessage extends SftpRequestWithPathMessage { + + // path is the + + @Override + public SftpRequestRmdirMessageHandler getHandler(SshContext context) { + return new SftpRequestRmdirMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestWriteMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWriteMessage.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestWriteMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWriteMessage.java index 5921bb41f..8a2111d17 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SfptRequestWriteMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWriteMessage.java @@ -11,10 +11,10 @@ import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; -import de.rub.nds.sshattacker.core.data.sftp.handler.SfptRequestWriteMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestWriteMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; -public class SfptRequestWriteMessage extends SftpRequestWithHandleMessage { +public class SftpRequestWriteMessage extends SftpRequestWithHandleMessage { private ModifiableLong offset; private ModifiableInteger dataLength; @@ -71,7 +71,7 @@ public void setData(byte[] data, boolean adjustLengthField) { } @Override - public SfptRequestWriteMessageHandler getHandler(SshContext context) { - return new SfptRequestWriteMessageHandler(context, this); + public SftpRequestWriteMessageHandler getHandler(SshContext context) { + return new SftpRequestWriteMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestCloseMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestCloseMessageParser.java similarity index 56% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestCloseMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestCloseMessageParser.java index d497bd51c..b52462dc9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestCloseMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestCloseMessageParser.java @@ -7,22 +7,22 @@ */ package de.rub.nds.sshattacker.core.data.sftp.parser; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestCloseMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestCloseMessage; -public class SfptRequestCloseMessageParser - extends SftpRequestWithHandleMessageParser { +public class SftpRequestCloseMessageParser + extends SftpRequestWithHandleMessageParser { - public SfptRequestCloseMessageParser(byte[] array) { + public SftpRequestCloseMessageParser(byte[] array) { super(array); } - public SfptRequestCloseMessageParser(byte[] array, int startPosition) { + public SftpRequestCloseMessageParser(byte[] array, int startPosition) { super(array, startPosition); } @Override - public SfptRequestCloseMessage createMessage() { - return new SfptRequestCloseMessage(); + public SftpRequestCloseMessage createMessage() { + return new SftpRequestCloseMessage(); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMkdirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMkdirMessageParser.java new file mode 100644 index 000000000..e70caec6e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMkdirMessageParser.java @@ -0,0 +1,44 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMkdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestMkdirMessageParser + extends SftpRequestWithPathMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestMkdirMessageParser(byte[] array) { + super(array); + } + + public SftpRequestMkdirMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestMkdirMessage createMessage() { + return new SftpRequestMkdirMessage(); + } + + private void parseAttributes() { + SftpFileAttributesParser attributesParser = + new SftpFileAttributesParser(getArray(), getPointer()); + message.setAttributes(attributesParser.parse()); + setPointer(attributesParser.getPointer()); + } + + @Override + protected void parseRequestWithPathSpecificContents() { + parseAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpendirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpendirMessageParser.java new file mode 100644 index 000000000..6d9b446d6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpendirMessageParser.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpendirMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestOpendirMessageParser + extends SftpRequestWithPathMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestOpendirMessageParser(byte[] array) { + super(array); + } + + public SftpRequestOpendirMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestOpendirMessage createMessage() { + return new SftpRequestOpendirMessage(); + } + + @Override + protected void parseRequestWithPathSpecificContents() { + // TODO parserSftpRequestOpendirMessage(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestReadMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadMessageParser.java similarity index 74% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestReadMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadMessageParser.java index 8f6072aab..340fa2ab6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestReadMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadMessageParser.java @@ -8,26 +8,26 @@ package de.rub.nds.sshattacker.core.data.sftp.parser; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestReadMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SfptRequestReadMessageParser - extends SftpRequestWithHandleMessageParser { +public class SftpRequestReadMessageParser + extends SftpRequestWithHandleMessageParser { private static final Logger LOGGER = LogManager.getLogger(); - public SfptRequestReadMessageParser(byte[] array) { + public SftpRequestReadMessageParser(byte[] array) { super(array); } - public SfptRequestReadMessageParser(byte[] array, int startPosition) { + public SftpRequestReadMessageParser(byte[] array, int startPosition) { super(array, startPosition); } @Override - public SfptRequestReadMessage createMessage() { - return new SfptRequestReadMessage(); + public SftpRequestReadMessage createMessage() { + return new SftpRequestReadMessage(); } private void parseOffset() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestRemoveMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveMessageParser.java similarity index 56% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestRemoveMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveMessageParser.java index 6fd045aa9..143625096 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestRemoveMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveMessageParser.java @@ -7,22 +7,22 @@ */ package de.rub.nds.sshattacker.core.data.sftp.parser; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRemoveMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRemoveMessage; -public class SfptRequestRemoveMessageParser - extends SftpRequestWithPathMessageParser { +public class SftpRequestRemoveMessageParser + extends SftpRequestWithPathMessageParser { - public SfptRequestRemoveMessageParser(byte[] array) { + public SftpRequestRemoveMessageParser(byte[] array) { super(array); } - public SfptRequestRemoveMessageParser(byte[] array, int startPosition) { + public SftpRequestRemoveMessageParser(byte[] array, int startPosition) { super(array, startPosition); } @Override - public SfptRequestRemoveMessage createMessage() { - return new SfptRequestRemoveMessage(); + public SftpRequestRemoveMessage createMessage() { + return new SftpRequestRemoveMessage(); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestRenameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRenameMessageParser.java similarity index 77% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestRenameMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRenameMessageParser.java index d176265a8..03cfcf908 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestRenameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRenameMessageParser.java @@ -10,27 +10,27 @@ import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRenameMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SfptRequestRenameMessageParser - extends SftpRequestWithPathMessageParser { +public class SftpRequestRenameMessageParser + extends SftpRequestWithPathMessageParser { private static final Logger LOGGER = LogManager.getLogger(); - public SfptRequestRenameMessageParser(byte[] array) { + public SftpRequestRenameMessageParser(byte[] array) { super(array); } - public SfptRequestRenameMessageParser(byte[] array, int startPosition) { + public SftpRequestRenameMessageParser(byte[] array, int startPosition) { super(array, startPosition); } @Override - public SfptRequestRenameMessage createMessage() { - return new SfptRequestRenameMessage(); + public SftpRequestRenameMessage createMessage() { + return new SftpRequestRenameMessage(); } private void parseNewPath() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRmdirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRmdirMessageParser.java new file mode 100644 index 000000000..2df86ef76 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRmdirMessageParser.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRmdirMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestRmdirMessageParser + extends SftpRequestWithPathMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestRmdirMessageParser(byte[] array) { + super(array); + } + + public SftpRequestRmdirMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestRmdirMessage createMessage() { + return new SftpRequestRmdirMessage(); + } + + @Override + protected void parseRequestWithPathSpecificContents() { + // TODO parserSftpRequestRmdirMessage(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestWriteMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWriteMessageParser.java similarity index 79% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestWriteMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWriteMessageParser.java index 5377a13b9..1c231ee1c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SfptRequestWriteMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWriteMessageParser.java @@ -10,26 +10,26 @@ import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.BinaryPacketConstants; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestWriteMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWriteMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SfptRequestWriteMessageParser - extends SftpRequestWithHandleMessageParser { +public class SftpRequestWriteMessageParser + extends SftpRequestWithHandleMessageParser { private static final Logger LOGGER = LogManager.getLogger(); - public SfptRequestWriteMessageParser(byte[] array) { + public SftpRequestWriteMessageParser(byte[] array) { super(array); } - public SfptRequestWriteMessageParser(byte[] array, int startPosition) { + public SftpRequestWriteMessageParser(byte[] array, int startPosition) { super(array, startPosition); } @Override - public SfptRequestWriteMessage createMessage() { - return new SfptRequestWriteMessage(); + public SftpRequestWriteMessage createMessage() { + return new SftpRequestWriteMessage(); } private void parseOffset() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestCloseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestCloseMessagePreparator.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestCloseMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestCloseMessagePreparator.java index d9ff14398..e088e1fa2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestCloseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestCloseMessagePreparator.java @@ -8,13 +8,13 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestCloseMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestCloseMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -public class SfptRequestCloseMessagePreparator - extends SftpRequestMessagePreparator { +public class SftpRequestCloseMessagePreparator + extends SftpRequestMessagePreparator { - public SfptRequestCloseMessagePreparator(Chooser chooser, SfptRequestCloseMessage message) { + public SftpRequestCloseMessagePreparator(Chooser chooser, SftpRequestCloseMessage message) { super(chooser, message, SftpPacketTypeConstant.SSH_FXP_CLOSE); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMkdirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMkdirMessagePreparator.java new file mode 100644 index 000000000..fb628047d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMkdirMessagePreparator.java @@ -0,0 +1,35 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMkdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestMkdirMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpRequestMkdirMessagePreparator(Chooser chooser, SftpRequestMkdirMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_MKDIR); + } + + public void prepareRequestSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/tmp/ssh-attacker/", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + + if (getObject().getAttributes() == null) { + getObject().setAttributes(new SftpFileAttributes()); + } + getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpendirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpendirMessagePreparator.java new file mode 100644 index 000000000..56c0500f5 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpendirMessagePreparator.java @@ -0,0 +1,29 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpendirMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestOpendirMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpRequestOpendirMessagePreparator(Chooser chooser, SftpRequestOpendirMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_OPENDIR); + } + + public void prepareRequestSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/tmp/", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestReadMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadMessagePreparator.java similarity index 80% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestReadMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadMessagePreparator.java index 72f56c33b..90c1db727 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestReadMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadMessagePreparator.java @@ -8,13 +8,13 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestReadMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -public class SfptRequestReadMessagePreparator - extends SftpRequestMessagePreparator { +public class SftpRequestReadMessagePreparator + extends SftpRequestMessagePreparator { - public SfptRequestReadMessagePreparator(Chooser chooser, SfptRequestReadMessage message) { + public SftpRequestReadMessagePreparator(Chooser chooser, SftpRequestReadMessage message) { super(chooser, message, SftpPacketTypeConstant.SSH_FXP_READ); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestRemoveMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveMessagePreparator.java similarity index 75% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestRemoveMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveMessagePreparator.java index 43512d591..4a9e94ade 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestRemoveMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveMessagePreparator.java @@ -8,13 +8,13 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRemoveMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRemoveMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -public class SfptRequestRemoveMessagePreparator - extends SftpRequestMessagePreparator { +public class SftpRequestRemoveMessagePreparator + extends SftpRequestMessagePreparator { - public SfptRequestRemoveMessagePreparator(Chooser chooser, SfptRequestRemoveMessage message) { + public SftpRequestRemoveMessagePreparator(Chooser chooser, SftpRequestRemoveMessage message) { super(chooser, message, SftpPacketTypeConstant.SSH_FXP_REMOVE); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRenameMessagePreparator.java similarity index 80% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestRenameMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRenameMessagePreparator.java index 4d2265f3f..5e403fedf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRenameMessagePreparator.java @@ -8,13 +8,13 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRenameMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -public class SfptRequestRenameMessagePreparator - extends SftpRequestMessagePreparator { +public class SftpRequestRenameMessagePreparator + extends SftpRequestMessagePreparator { - public SfptRequestRenameMessagePreparator(Chooser chooser, SfptRequestRenameMessage message) { + public SftpRequestRenameMessagePreparator(Chooser chooser, SftpRequestRenameMessage message) { super(chooser, message, SftpPacketTypeConstant.SSH_FXP_RENAME); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRmdirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRmdirMessagePreparator.java new file mode 100644 index 000000000..3bc94f7af --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRmdirMessagePreparator.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRmdirMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestRmdirMessagePreparator + extends SftpMessagePreparator { + + public SftpRequestRmdirMessagePreparator(Chooser chooser, SftpRequestRmdirMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_RMDIR); + } + + public void prepareMessageSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/tmp/ssh-attacker", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestWriteMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestWriteMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestWriteMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestWriteMessagePreparator.java index 4d4b2f52c..424211bba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SfptRequestWriteMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestWriteMessagePreparator.java @@ -8,13 +8,13 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestWriteMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWriteMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -public class SfptRequestWriteMessagePreparator - extends SftpRequestMessagePreparator { +public class SftpRequestWriteMessagePreparator + extends SftpRequestMessagePreparator { - public SfptRequestWriteMessagePreparator(Chooser chooser, SfptRequestWriteMessage message) { + public SftpRequestWriteMessagePreparator(Chooser chooser, SftpRequestWriteMessage message) { super(chooser, message, SftpPacketTypeConstant.SSH_FXP_WRITE); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestCloseMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestCloseMessageSerializer.java similarity index 66% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestCloseMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestCloseMessageSerializer.java index e243931f1..dcdc69848 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestCloseMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestCloseMessageSerializer.java @@ -7,12 +7,12 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestCloseMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestCloseMessage; -public class SfptRequestCloseMessageSerializer - extends SftpRequestWithHandleMessageSerializer { +public class SftpRequestCloseMessageSerializer + extends SftpRequestWithHandleMessageSerializer { - public SfptRequestCloseMessageSerializer(SfptRequestCloseMessage message) { + public SftpRequestCloseMessageSerializer(SftpRequestCloseMessage message) { super(message); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMkdirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMkdirMessageSerializer.java new file mode 100644 index 000000000..81ea2c0b8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMkdirMessageSerializer.java @@ -0,0 +1,27 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMkdirMessage; + +public class SftpRequestMkdirMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + public SftpRequestMkdirMessageSerializer(SftpRequestMkdirMessage message) { + super(message); + } + + private void serializeAttributes() { + appendBytes(message.getAttributes().getHandler(null).getSerializer().serialize()); + } + + @Override + protected void serializeRequestWithPathSpecificContents() { + serializeAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpendirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpendirMessageSerializer.java new file mode 100644 index 000000000..f237b0949 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpendirMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpendirMessage; + +public class SftpRequestOpendirMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + public SftpRequestOpendirMessageSerializer(SftpRequestOpendirMessage message) { + super(message); + } + + @Override + protected void serializeRequestWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestReadMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadMessageSerializer.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestReadMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadMessageSerializer.java index 5bdf55125..722b32c9d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestReadMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadMessageSerializer.java @@ -8,16 +8,16 @@ package de.rub.nds.sshattacker.core.data.sftp.serializer; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestReadMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SfptRequestReadMessageSerializer - extends SftpRequestWithHandleMessageSerializer { +public class SftpRequestReadMessageSerializer + extends SftpRequestWithHandleMessageSerializer { private static final Logger LOGGER = LogManager.getLogger(); - public SfptRequestReadMessageSerializer(SfptRequestReadMessage message) { + public SftpRequestReadMessageSerializer(SftpRequestReadMessage message) { super(message); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestRemoveMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRemoveMessageSerializer.java similarity index 66% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestRemoveMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRemoveMessageSerializer.java index e9bceb888..c75ec057e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestRemoveMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRemoveMessageSerializer.java @@ -7,12 +7,12 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRemoveMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRemoveMessage; -public class SfptRequestRemoveMessageSerializer - extends SftpRequestWithPathMessageSerializer { +public class SftpRequestRemoveMessageSerializer + extends SftpRequestWithPathMessageSerializer { - public SfptRequestRemoveMessageSerializer(SfptRequestRemoveMessage message) { + public SftpRequestRemoveMessageSerializer(SftpRequestRemoveMessage message) { super(message); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestRenameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRenameMessageSerializer.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestRenameMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRenameMessageSerializer.java index 23046e0fc..63be3d651 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestRenameMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRenameMessageSerializer.java @@ -10,17 +10,17 @@ import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRenameMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SfptRequestRenameMessageSerializer - extends SftpRequestWithPathMessageSerializer { +public class SftpRequestRenameMessageSerializer + extends SftpRequestWithPathMessageSerializer { private static final Logger LOGGER = LogManager.getLogger(); - public SfptRequestRenameMessageSerializer(SfptRequestRenameMessage message) { + public SftpRequestRenameMessageSerializer(SftpRequestRenameMessage message) { super(message); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRmdirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRmdirMessageSerializer.java new file mode 100644 index 000000000..ff2eec7ce --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRmdirMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRmdirMessage; + +public class SftpRequestRmdirMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + public SftpRequestRmdirMessageSerializer(SftpRequestRmdirMessage message) { + super(message); + } + + @Override + protected void serializeRequestWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestWriteMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWriteMessageSerializer.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestWriteMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWriteMessageSerializer.java index 7f2f9d8e2..c89074d4c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SfptRequestWriteMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWriteMessageSerializer.java @@ -9,16 +9,16 @@ import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SfptRequestWriteMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWriteMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SfptRequestWriteMessageSerializer - extends SftpRequestWithHandleMessageSerializer { +public class SftpRequestWriteMessageSerializer + extends SftpRequestWithHandleMessageSerializer { private static final Logger LOGGER = LogManager.getLogger(); - public SfptRequestWriteMessageSerializer(SfptRequestWriteMessage message) { + public SftpRequestWriteMessageSerializer(SftpRequestWriteMessage message) { super(message); } From 965cc4f441c7426958702db73325297eebd50efb Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 31 Oct 2024 11:51:32 +0100 Subject: [PATCH 027/203] Added SFTP ReadDir Message Renamed mkdir. rmdir and opendir --- .../SftpRequestMakeDirMessageHandler.java | 51 ++++++++++++++++++ .../SftpRequestMkdirMessageHandler.java | 51 ------------------ ... => SftpRequestOpenDirMessageHandler.java} | 34 ++++++------ .../SftpRequestReadDirMessageHandler.java | 52 +++++++++++++++++++ .../SftpRequestRemoveDirMessageHandler.java | 52 +++++++++++++++++++ .../SftpRequestRmdirMessageHandler.java | 51 ------------------ ...ge.java => SftpRequestMakeDirMessage.java} | 8 +-- ...ge.java => SftpRequestOpenDirMessage.java} | 12 ++--- .../message/SftpRequestReadDirMessage.java | 20 +++++++ .../sftp/message/SftpRequestRmdirMessage.java | 8 ++- ...a => SftpRequestMakeDirMessageParser.java} | 14 ++--- ...a => SftpRequestOpenDirMessageParser.java} | 16 +++--- .../SftpRequestReadDirMessageParser.java | 30 +++++++++++ ...=> SftpRequestRemoveDirMessageParser.java} | 6 +-- ... SftpRequestMakeDirMessagePreparator.java} | 8 +-- ... SftpRequestOpenDirMessagePreparator.java} | 8 +-- .../SftpRequestReadDirMessagePreparator.java | 30 +++++++++++ ...ftpRequestRemoveDirMessagePreparator.java} | 4 +- ... SftpRequestMakeDirMessageSerializer.java} | 8 +-- ... SftpRequestOpenDirMessageSerializer.java} | 8 +-- .../SftpRequestReadDirMessageSerializer.java | 21 ++++++++ ...ftpRequestRemoveDirMessageSerializer.java} | 4 +- 22 files changed, 323 insertions(+), 173 deletions(-) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMakeDirMessageHandler.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMkdirMessageHandler.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{SftpRequestOpendirMessageHandler.java => SftpRequestOpenDirMessageHandler.java} (50%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadDirMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRemoveDirMessageHandler.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRmdirMessageHandler.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{SftpRequestMkdirMessage.java => SftpRequestMakeDirMessage.java} (80%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{SftpRequestOpendirMessage.java => SftpRequestOpenDirMessage.java} (63%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadDirMessage.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{SftpRequestMkdirMessageParser.java => SftpRequestMakeDirMessageParser.java} (74%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{SftpRequestOpendirMessageParser.java => SftpRequestOpenDirMessageParser.java} (68%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadDirMessageParser.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{SftpRequestRmdirMessageParser.java => SftpRequestRemoveDirMessageParser.java} (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{SftpRequestMkdirMessagePreparator.java => SftpRequestMakeDirMessagePreparator.java} (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{SftpRequestOpendirMessagePreparator.java => SftpRequestOpenDirMessagePreparator.java} (79%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadDirMessagePreparator.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{SftpRequestRmdirMessagePreparator.java => SftpRequestRemoveDirMessagePreparator.java} (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{SftpRequestMkdirMessageSerializer.java => SftpRequestMakeDirMessageSerializer.java} (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{SftpRequestOpendirMessageSerializer.java => SftpRequestOpenDirMessageSerializer.java} (79%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadDirMessageSerializer.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{SftpRequestRmdirMessageSerializer.java => SftpRequestRemoveDirMessageSerializer.java} (81%) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMakeDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMakeDirMessageHandler.java new file mode 100644 index 000000000..90c49904e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMakeDirMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMakeDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestMakeDirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestMakeDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestMakeDirMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestMakeDirMessageHandler extends SftpMessageHandler { + + public SftpRequestMakeDirMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestMakeDirMessageHandler(SshContext context, SftpRequestMakeDirMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestMakeDirMessage + } + + @Override + public SftpRequestMakeDirMessageParser getParser(byte[] array) { + return new SftpRequestMakeDirMessageParser(array); + } + + @Override + public SftpRequestMakeDirMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestMakeDirMessageParser(array, startPosition); + } + + @Override + public SftpRequestMakeDirMessagePreparator getPreparator() { + return new SftpRequestMakeDirMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestMakeDirMessageSerializer getSerializer() { + return new SftpRequestMakeDirMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMkdirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMkdirMessageHandler.java deleted file mode 100644 index cf14919d8..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMkdirMessageHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.handler; - -import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMkdirMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestMkdirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestMkdirMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestMkdirMessageSerializer; -import de.rub.nds.sshattacker.core.state.SshContext; - -public class SftpRequestMkdirMessageHandler extends SftpMessageHandler { - - public SftpRequestMkdirMessageHandler(SshContext context) { - super(context); - } - - public SftpRequestMkdirMessageHandler(SshContext context, SftpRequestMkdirMessage message) { - super(context, message); - } - - @Override - public void adjustContext() { - // TODO: Handle SftpRequestMkdirMessage - } - - @Override - public SftpRequestMkdirMessageParser getParser(byte[] array) { - return new SftpRequestMkdirMessageParser(array); - } - - @Override - public SftpRequestMkdirMessageParser getParser(byte[] array, int startPosition) { - return new SftpRequestMkdirMessageParser(array, startPosition); - } - - @Override - public SftpRequestMkdirMessagePreparator getPreparator() { - return new SftpRequestMkdirMessagePreparator(context.getChooser(), message); - } - - @Override - public SftpRequestMkdirMessageSerializer getSerializer() { - return new SftpRequestMkdirMessageSerializer(message); - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpendirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpenDirMessageHandler.java similarity index 50% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpendirMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpenDirMessageHandler.java index bb08ece7d..7d65a151e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpendirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpenDirMessageHandler.java @@ -8,45 +8,45 @@ package de.rub.nds.sshattacker.core.data.sftp.handler; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpendirMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestOpendirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestOpendirMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestOpendirMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestOpenDirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestOpenDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestOpenDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpRequestOpendirMessageHandler - extends SftpMessageHandler { +public class SftpRequestOpenDirMessageHandler + extends SftpMessageHandler { - public SftpRequestOpendirMessageHandler(SshContext context) { + public SftpRequestOpenDirMessageHandler(SshContext context) { super(context); } - public SftpRequestOpendirMessageHandler(SshContext context, SftpRequestOpendirMessage message) { + public SftpRequestOpenDirMessageHandler(SshContext context, SftpRequestOpenDirMessage message) { super(context, message); } @Override public void adjustContext() { - // TODO: Handle SftpRequestOpendirMessage + // TODO: Handle SftpRequestOpenDirMessage } @Override - public SftpRequestOpendirMessageParser getParser(byte[] array) { - return new SftpRequestOpendirMessageParser(array); + public SftpRequestOpenDirMessageParser getParser(byte[] array) { + return new SftpRequestOpenDirMessageParser(array); } @Override - public SftpRequestOpendirMessageParser getParser(byte[] array, int startPosition) { - return new SftpRequestOpendirMessageParser(array, startPosition); + public SftpRequestOpenDirMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestOpenDirMessageParser(array, startPosition); } @Override - public SftpRequestOpendirMessagePreparator getPreparator() { - return new SftpRequestOpendirMessagePreparator(context.getChooser(), message); + public SftpRequestOpenDirMessagePreparator getPreparator() { + return new SftpRequestOpenDirMessagePreparator(context.getChooser(), message); } @Override - public SftpRequestOpendirMessageSerializer getSerializer() { - return new SftpRequestOpendirMessageSerializer(message); + public SftpRequestOpenDirMessageSerializer getSerializer() { + return new SftpRequestOpenDirMessageSerializer(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadDirMessageHandler.java new file mode 100644 index 000000000..ef85accbc --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadDirMessageHandler.java @@ -0,0 +1,52 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestReadDirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestReadDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestReadDirMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestReadDirMessageHandler + extends SftpMessageHandler { + + public SftpRequestReadDirMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestReadDirMessageHandler(SshContext context, SftpRequestReadDirMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestReadDirMessage + } + + @Override + public SftpRequestReadDirMessageParser getParser(byte[] array) { + return new SftpRequestReadDirMessageParser(array); + } + + @Override + public SftpRequestReadDirMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestReadDirMessageParser(array, startPosition); + } + + @Override + public SftpRequestReadDirMessagePreparator getPreparator() { + return new SftpRequestReadDirMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestReadDirMessageSerializer getSerializer() { + return new SftpRequestReadDirMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRemoveDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRemoveDirMessageHandler.java new file mode 100644 index 000000000..581d99287 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRemoveDirMessageHandler.java @@ -0,0 +1,52 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRmdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestRemoveDirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestRemoveDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestRemoveDirMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestRemoveDirMessageHandler + extends SftpMessageHandler { + + public SftpRequestRemoveDirMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestRemoveDirMessageHandler(SshContext context, SftpRequestRmdirMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestRmdirMessage + } + + @Override + public SftpRequestRemoveDirMessageParser getParser(byte[] array) { + return new SftpRequestRemoveDirMessageParser(array); + } + + @Override + public SftpRequestRemoveDirMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestRemoveDirMessageParser(array, startPosition); + } + + @Override + public SftpRequestRemoveDirMessagePreparator getPreparator() { + return new SftpRequestRemoveDirMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestRemoveDirMessageSerializer getSerializer() { + return new SftpRequestRemoveDirMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRmdirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRmdirMessageHandler.java deleted file mode 100644 index 04fb18aed..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRmdirMessageHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.handler; - -import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRmdirMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestRmdirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestRmdirMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestRmdirMessageSerializer; -import de.rub.nds.sshattacker.core.state.SshContext; - -public class SftpRequestRmdirMessageHandler extends SftpMessageHandler { - - public SftpRequestRmdirMessageHandler(SshContext context) { - super(context); - } - - public SftpRequestRmdirMessageHandler(SshContext context, SftpRequestRmdirMessage message) { - super(context, message); - } - - @Override - public void adjustContext() { - // TODO: Handle SftpRequestRmdirMessage - } - - @Override - public SftpRequestRmdirMessageParser getParser(byte[] array) { - return new SftpRequestRmdirMessageParser(array); - } - - @Override - public SftpRequestRmdirMessageParser getParser(byte[] array, int startPosition) { - return new SftpRequestRmdirMessageParser(array, startPosition); - } - - @Override - public SftpRequestRmdirMessagePreparator getPreparator() { - return new SftpRequestRmdirMessagePreparator(context.getChooser(), message); - } - - @Override - public SftpRequestRmdirMessageSerializer getSerializer() { - return new SftpRequestRmdirMessageSerializer(message); - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMkdirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMakeDirMessage.java similarity index 80% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMkdirMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMakeDirMessage.java index 3b1a5920e..84df13db9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMkdirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMakeDirMessage.java @@ -7,13 +7,13 @@ */ package de.rub.nds.sshattacker.core.data.sftp.message; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestMkdirMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestMakeDirMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import java.util.List; -public class SftpRequestMkdirMessage extends SftpRequestWithPathMessage { +public class SftpRequestMakeDirMessage extends SftpRequestWithPathMessage { private SftpFileAttributes attributes; @@ -26,8 +26,8 @@ public void setAttributes(SftpFileAttributes attributes) { } @Override - public SftpRequestMkdirMessageHandler getHandler(SshContext context) { - return new SftpRequestMkdirMessageHandler(context, this); + public SftpRequestMakeDirMessageHandler getHandler(SshContext context) { + return new SftpRequestMakeDirMessageHandler(context, this); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpendirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenDirMessage.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpendirMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenDirMessage.java index 013a1520a..04a071bf7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpendirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenDirMessage.java @@ -7,16 +7,14 @@ */ package de.rub.nds.sshattacker.core.data.sftp.message; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestOpendirMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestOpenDirMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpRequestOpendirMessage - extends SftpRequestWithPathMessage { - - // path is the +public class SftpRequestOpenDirMessage + extends SftpRequestWithPathMessage { @Override - public SftpRequestOpendirMessageHandler getHandler(SshContext context) { - return new SftpRequestOpendirMessageHandler(context, this); + public SftpRequestOpenDirMessageHandler getHandler(SshContext context) { + return new SftpRequestOpenDirMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadDirMessage.java new file mode 100644 index 000000000..38dabff71 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadDirMessage.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestReadDirMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestReadDirMessage + extends SftpRequestWithHandleMessage { + + @Override + public SftpRequestReadDirMessageHandler getHandler(SshContext context) { + return new SftpRequestReadDirMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRmdirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRmdirMessage.java index c7f8e4e0f..306dd1a04 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRmdirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRmdirMessage.java @@ -7,15 +7,13 @@ */ package de.rub.nds.sshattacker.core.data.sftp.message; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestRmdirMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestRemoveDirMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRmdirMessage extends SftpRequestWithPathMessage { - // path is the - @Override - public SftpRequestRmdirMessageHandler getHandler(SshContext context) { - return new SftpRequestRmdirMessageHandler(context, this); + public SftpRequestRemoveDirMessageHandler getHandler(SshContext context) { + return new SftpRequestRemoveDirMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMkdirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMakeDirMessageParser.java similarity index 74% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMkdirMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMakeDirMessageParser.java index e70caec6e..a8004f7f3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMkdirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMakeDirMessageParser.java @@ -7,27 +7,27 @@ */ package de.rub.nds.sshattacker.core.data.sftp.parser; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMkdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMakeDirMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SftpRequestMkdirMessageParser - extends SftpRequestWithPathMessageParser { +public class SftpRequestMakeDirMessageParser + extends SftpRequestWithPathMessageParser { private static final Logger LOGGER = LogManager.getLogger(); - public SftpRequestMkdirMessageParser(byte[] array) { + public SftpRequestMakeDirMessageParser(byte[] array) { super(array); } - public SftpRequestMkdirMessageParser(byte[] array, int startPosition) { + public SftpRequestMakeDirMessageParser(byte[] array, int startPosition) { super(array, startPosition); } @Override - public SftpRequestMkdirMessage createMessage() { - return new SftpRequestMkdirMessage(); + public SftpRequestMakeDirMessage createMessage() { + return new SftpRequestMakeDirMessage(); } private void parseAttributes() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpendirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenDirMessageParser.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpendirMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenDirMessageParser.java index 6d9b446d6..fcef9f73f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpendirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenDirMessageParser.java @@ -7,30 +7,30 @@ */ package de.rub.nds.sshattacker.core.data.sftp.parser; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpendirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenDirMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SftpRequestOpendirMessageParser - extends SftpRequestWithPathMessageParser { +public class SftpRequestOpenDirMessageParser + extends SftpRequestWithPathMessageParser { private static final Logger LOGGER = LogManager.getLogger(); - public SftpRequestOpendirMessageParser(byte[] array) { + public SftpRequestOpenDirMessageParser(byte[] array) { super(array); } - public SftpRequestOpendirMessageParser(byte[] array, int startPosition) { + public SftpRequestOpenDirMessageParser(byte[] array, int startPosition) { super(array, startPosition); } @Override - public SftpRequestOpendirMessage createMessage() { - return new SftpRequestOpendirMessage(); + public SftpRequestOpenDirMessage createMessage() { + return new SftpRequestOpenDirMessage(); } @Override protected void parseRequestWithPathSpecificContents() { - // TODO parserSftpRequestOpendirMessage(); + // TODO parserSftpRequestOpenDirMessage(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadDirMessageParser.java new file mode 100644 index 000000000..036d4bc99 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadDirMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadDirMessage; + +public class SftpRequestReadDirMessageParser + extends SftpRequestWithHandleMessageParser { + + public SftpRequestReadDirMessageParser(byte[] array) { + super(array); + } + + public SftpRequestReadDirMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestReadDirMessage createMessage() { + return new SftpRequestReadDirMessage(); + } + + @Override + protected void parseRequestWithHandleSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRmdirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveDirMessageParser.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRmdirMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveDirMessageParser.java index 2df86ef76..8a9005029 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRmdirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveDirMessageParser.java @@ -11,16 +11,16 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SftpRequestRmdirMessageParser +public class SftpRequestRemoveDirMessageParser extends SftpRequestWithPathMessageParser { private static final Logger LOGGER = LogManager.getLogger(); - public SftpRequestRmdirMessageParser(byte[] array) { + public SftpRequestRemoveDirMessageParser(byte[] array) { super(array); } - public SftpRequestRmdirMessageParser(byte[] array, int startPosition) { + public SftpRequestRemoveDirMessageParser(byte[] array, int startPosition) { super(array, startPosition); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMkdirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMakeDirMessagePreparator.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMkdirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMakeDirMessagePreparator.java index fb628047d..62b1ddcf0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMkdirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMakeDirMessagePreparator.java @@ -8,14 +8,14 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMkdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMakeDirMessage; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -public class SftpRequestMkdirMessagePreparator - extends SftpRequestMessagePreparator { +public class SftpRequestMakeDirMessagePreparator + extends SftpRequestMessagePreparator { - public SftpRequestMkdirMessagePreparator(Chooser chooser, SftpRequestMkdirMessage message) { + public SftpRequestMakeDirMessagePreparator(Chooser chooser, SftpRequestMakeDirMessage message) { super(chooser, message, SftpPacketTypeConstant.SSH_FXP_MKDIR); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpendirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenDirMessagePreparator.java similarity index 79% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpendirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenDirMessagePreparator.java index 56c0500f5..4d4f1d517 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpendirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenDirMessagePreparator.java @@ -8,13 +8,13 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpendirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenDirMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -public class SftpRequestOpendirMessagePreparator - extends SftpRequestMessagePreparator { +public class SftpRequestOpenDirMessagePreparator + extends SftpRequestMessagePreparator { - public SftpRequestOpendirMessagePreparator(Chooser chooser, SftpRequestOpendirMessage message) { + public SftpRequestOpenDirMessagePreparator(Chooser chooser, SftpRequestOpenDirMessage message) { super(chooser, message, SftpPacketTypeConstant.SSH_FXP_OPENDIR); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadDirMessagePreparator.java new file mode 100644 index 000000000..f7aa36dab --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadDirMessagePreparator.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadDirMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestReadDirMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpRequestReadDirMessagePreparator(Chooser chooser, SftpRequestReadDirMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_WRITE); + } + + public void prepareRequestSpecificContents() { + if (getObject().getHandle() == null) { + // TODO Set valid handler + getObject().setHandle(new byte[100], true); + } + if (getObject().getHandleLength() == null) { + getObject().setHandleLength(getObject().getHandle().getValue().length); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRmdirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveDirMessagePreparator.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRmdirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveDirMessagePreparator.java index 3bc94f7af..5b1389aef 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRmdirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveDirMessagePreparator.java @@ -12,10 +12,10 @@ import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRmdirMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -public class SftpRequestRmdirMessagePreparator +public class SftpRequestRemoveDirMessagePreparator extends SftpMessagePreparator { - public SftpRequestRmdirMessagePreparator(Chooser chooser, SftpRequestRmdirMessage message) { + public SftpRequestRemoveDirMessagePreparator(Chooser chooser, SftpRequestRmdirMessage message) { super(chooser, message, SftpPacketTypeConstant.SSH_FXP_RMDIR); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMkdirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMakeDirMessageSerializer.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMkdirMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMakeDirMessageSerializer.java index 81ea2c0b8..0738c84d2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMkdirMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMakeDirMessageSerializer.java @@ -7,12 +7,12 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMkdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMakeDirMessage; -public class SftpRequestMkdirMessageSerializer - extends SftpRequestWithPathMessageSerializer { +public class SftpRequestMakeDirMessageSerializer + extends SftpRequestWithPathMessageSerializer { - public SftpRequestMkdirMessageSerializer(SftpRequestMkdirMessage message) { + public SftpRequestMakeDirMessageSerializer(SftpRequestMakeDirMessage message) { super(message); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpendirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenDirMessageSerializer.java similarity index 79% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpendirMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenDirMessageSerializer.java index f237b0949..5bb4b3e7d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpendirMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenDirMessageSerializer.java @@ -7,12 +7,12 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpendirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenDirMessage; -public class SftpRequestOpendirMessageSerializer - extends SftpRequestWithPathMessageSerializer { +public class SftpRequestOpenDirMessageSerializer + extends SftpRequestWithPathMessageSerializer { - public SftpRequestOpendirMessageSerializer(SftpRequestOpendirMessage message) { + public SftpRequestOpenDirMessageSerializer(SftpRequestOpenDirMessage message) { super(message); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadDirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadDirMessageSerializer.java new file mode 100644 index 000000000..d28e24205 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadDirMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadDirMessage; + +public class SftpRequestReadDirMessageSerializer + extends SftpRequestWithHandleMessageSerializer { + + public SftpRequestReadDirMessageSerializer(SftpRequestReadDirMessage message) { + super(message); + } + + @Override + protected void serializeRequestWithHandleSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRmdirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRemoveDirMessageSerializer.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRmdirMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRemoveDirMessageSerializer.java index ff2eec7ce..faf44d888 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRmdirMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRemoveDirMessageSerializer.java @@ -9,10 +9,10 @@ import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRmdirMessage; -public class SftpRequestRmdirMessageSerializer +public class SftpRequestRemoveDirMessageSerializer extends SftpRequestWithPathMessageSerializer { - public SftpRequestRmdirMessageSerializer(SftpRequestRmdirMessage message) { + public SftpRequestRemoveDirMessageSerializer(SftpRequestRmdirMessage message) { super(message); } From 5d232fe84f7009f6cc9fc9c09af339b02a79e7de Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 31 Oct 2024 15:41:56 +0100 Subject: [PATCH 028/203] Fix some method visibility -> Make perare methods public, so someone could actually only prepare parts of a message, instead of preparing the complete message -> Make parse and serialize methods protected, since there is no real usecase to be able to parse and serialize only parts of a message Make private methods of Perperators / Parsers actually private Add some missing @Override annotations --- .../core/constants/SftpPacketTypeConstant.java | 10 +++++----- .../core/data/sftp/SftpMessageSerializer.java | 2 +- .../handler/SftpRequestMakeDirMessageHandler.java | 3 ++- .../sftp/message/SftpRequestMakeDirMessage.java | 3 ++- .../sftp/parser/SftpHandshakeMessageParser.java | 3 ++- .../parser/SftpRequestMakeDirMessageParser.java | 4 ---- .../data/sftp/parser/SftpRequestMessageParser.java | 3 ++- .../parser/SftpRequestOpenDirMessageParser.java | 4 ---- .../parser/SftpRequestRemoveDirMessageParser.java | 4 ---- .../parser/SftpRequestWithHandleMessageParser.java | 3 ++- .../parser/SftpRequestWithPathMessageParser.java | 3 ++- .../sftp/parser/SftpResponseMessageParser.java | 7 ++++--- .../SftpRequestCloseMessagePreparator.java | 1 + .../SftpRequestMakeDirMessagePreparator.java | 1 + .../preperator/SftpRequestMessagePreparator.java | 1 + .../SftpRequestOpenDirMessagePreparator.java | 1 + .../SftpRequestOpenMessagePreparator.java | 1 + .../SftpRequestReadDirMessagePreparator.java | 3 ++- .../SftpRequestReadMessagePreparator.java | 1 + .../SftpRequestRemoveMessagePreparator.java | 1 + .../SftpRequestRenameMessagePreparator.java | 1 + .../SftpRequestWriteMessagePreparator.java | 1 + .../extension/SftpUnknownExtensionPreparator.java | 2 +- .../serializer/SftpHandshakeMessageSerializer.java | 2 +- .../serializer/SftpRequestMessageSerializer.java | 3 ++- .../SftpRequestRenameMessageSerializer.java | 2 +- .../SftpRequestWithHandleMessageSerializer.java | 5 +++-- .../SftpRequestWithPathMessageSerializer.java | 5 +++-- .../SftpRequestWriteMessageSerializer.java | 2 +- .../serializer/SftpResponseMessageSerializer.java | 2 +- .../serializer/SftpUnknownMessageSerializer.java | 2 +- .../SftpFileExtendedAttributeSerializer.java | 4 ++-- .../core/data/string/StringDataMessageParser.java | 2 +- .../data/unknown/UnknownDataMessageParser.java | 2 +- .../UserAuthBannerMessageSerializer.java | 2 +- .../UserAuthFailureMessageSerializer.java | 2 +- .../UserAuthHostbasedMessageSerializer.java | 2 +- .../UserAuthInfoRequestMessageSerializer.java | 2 +- .../UserAuthInfoResponseMessageSerializer.java | 2 +- ...erAuthKeyboardInteractiveMessageSerializer.java | 2 +- .../UserAuthPasswordMessageSerializer.java | 2 +- .../UserAuthPubkeyMessageSerializer.java | 2 +- .../UserAuthRequestMessageSerializer.java | 2 +- .../UserAuthSuccessMessageSerializer.java | 2 +- .../UserAuthUnknownMessageSerializer.java | 2 +- .../core/protocol/common/SshMessageParser.java | 8 ++++---- .../core/protocol/common/SshMessageSerializer.java | 2 +- .../parser/ChannelOpenMessageParser.java | 8 ++++---- .../parser/ChannelOpenUnknownMessageParser.java | 2 +- .../parser/ChannelRequestBreakMessageParser.java | 2 +- .../parser/ChannelRequestEnvMessageParser.java | 4 ++-- .../parser/ChannelRequestExecMessageParser.java | 2 +- .../ChannelRequestExitSignalMessageParser.java | 6 +++--- .../ChannelRequestExitStatusMessageParser.java | 5 +++-- .../parser/ChannelRequestPtyMessageParser.java | 12 ++++++------ .../parser/ChannelRequestSignalMessageParser.java | 2 +- .../ChannelRequestSubsystemMessageParser.java | 2 +- .../parser/ChannelRequestUnknownMessageParser.java | 2 +- .../ChannelRequestWindowChangeMessageParser.java | 8 ++++---- .../parser/ChannelRequestX11MessageParser.java | 8 ++++---- .../parser/GlobalRequestUnknownMessageParser.java | 2 +- .../preparator/ChannelCloseMessagePreparator.java | 2 +- .../preparator/ChannelDataMessagePreparator.java | 2 +- .../preparator/ChannelEofMessagePreparator.java | 2 +- .../ChannelExtendedDataMessagePreparator.java | 2 +- .../ChannelFailureMessagePreparator.java | 2 +- .../ChannelOpenSessionMessagePreperator.java | 2 +- .../ChannelOpenUnknownMessagePreparator.java | 2 +- ...equestCancelTcpIpForwardlMessagePreparator.java | 2 +- ...obalRequestNoMoreSessionsMessagePreparator.java | 2 +- ...balRequestOpenSshHostKeysMessagePreparator.java | 2 +- ...GlobalRequestTcpIpForwardMessagePreparator.java | 2 +- .../GlobalRequestUnknownMessagePreparator.java | 2 +- .../serializer/ChannelDataMessageSerializer.java | 2 +- .../ChannelExtendedDataMessageSerializer.java | 2 +- .../serializer/ChannelMessageSerializer.java | 2 +- .../ChannelOpenConfirmationMessageSerializer.java | 2 +- .../ChannelOpenFailureMessageSerializer.java | 2 +- .../serializer/ChannelOpenMessageSerializer.java | 2 +- .../ChannelOpenUnknownMessageSerializer.java | 4 ++-- .../ChannelRequestBreakMessageSerializer.java | 4 ++-- .../ChannelRequestEnvMessageSerializer.java | 6 +++--- .../ChannelRequestExecMessageSerializer.java | 2 +- .../ChannelRequestExitSignalMessageSerializer.java | 8 ++++---- .../ChannelRequestExitStatusMessageSerializer.java | 4 ++-- .../ChannelRequestMessageSerializer.java | 2 +- .../ChannelRequestPtyMessageSerializer.java | 14 +++++++------- .../ChannelRequestSignalMessageSerializer.java | 4 ++-- .../ChannelRequestSubsystemMessageSerializer.java | 4 ++-- .../ChannelRequestUnknownMessageSerializer.java | 4 ++-- ...hannelRequestWindowChangeMessageSerializer.java | 10 +++++----- .../ChannelRequestX11MessageSerializer.java | 10 +++++----- .../ChannelRequestXonXoffMessageSerializer.java | 2 +- .../ChannelWindowAdjustMessageSerializer.java | 2 +- ...equestCancelTcpIpForwardlMessageSerializer.java | 2 +- .../GlobalRequestFailureMessageSerializer.java | 2 +- .../serializer/GlobalRequestMessageSerializer.java | 2 +- ...balRequestOpenSshHostKeysMessageSerializer.java | 2 +- .../GlobalRequestSuccessMessageSerializer.java | 2 +- ...GlobalRequestTcpIpForwardMessageSerializer.java | 2 +- .../GlobalRequestUnknownMessageSerializer.java | 4 ++-- .../transport/parser/AsciiMessageParser.java | 2 +- .../parser/DhGexKeyExchangeInitMessageParser.java | 2 +- .../DhGexKeyExchangeOldRequestMessageParser.java | 2 +- .../DhGexKeyExchangeRequestMessageParser.java | 6 +++--- .../parser/DhKeyExchangeInitMessageParser.java | 2 +- .../parser/EcdhKeyExchangeInitMessageParser.java | 2 +- .../parser/EcdhKeyExchangeReplyMessageParser.java | 2 +- .../parser/KeyExchangeInitMessageParser.java | 2 +- .../parser/VersionExchangeMessageParser.java | 2 +- .../DelayCompressionExtensionPreparator.java | 2 +- .../extension/PingExtensionPreparator.java | 2 +- .../ServerSigAlgsExtensionPreparator.java | 2 +- .../serializer/DebugMessageSerializer.java | 2 +- .../DhGexKeyExchangeGroupMessageSerializer.java | 2 +- .../DhGexKeyExchangeInitMessageSerializer.java | 2 +- ...hGexKeyExchangeOldRequestMessageSerializer.java | 2 +- .../DhGexKeyExchangeReplyMessageSerializer.java | 2 +- .../DhGexKeyExchangeRequestMessageSerializer.java | 2 +- .../DhKeyExchangeInitMessageSerializer.java | 2 +- .../DhKeyExchangeReplyMessageSerializer.java | 2 +- .../serializer/DisconnectMessageSerializer.java | 2 +- .../EcdhKeyExchangeInitMessageSerializer.java | 2 +- .../EcdhKeyExchangeReplyMessageSerializer.java | 2 +- .../serializer/ExtensionInfoMessageSerializer.java | 2 +- .../HybridKeyExchangeInitMessageSerializer.java | 2 +- .../HybridKeyExchangeReplyMessageSerializer.java | 2 +- .../serializer/IgnoreMessageSerializer.java | 2 +- .../KeyExchangeInitMessageSerializer.java | 2 +- .../serializer/NewCompressMessageSerializer.java | 2 +- .../serializer/NewKeysMessageSerializer.java | 2 +- .../serializer/PingMessageSerializer.java | 2 +- .../serializer/PongMessageSerializer.java | 2 +- .../RsaKeyExchangeDoneMessageSerializer.java | 2 +- .../RsaKeyExchangePubkeyMessageSerializer.java | 6 +++--- .../RsaKeyExchangeSecretMessageSerializer.java | 2 +- .../serializer/ServiceAcceptMessageSerializer.java | 2 +- .../ServiceRequestMessageSerializer.java | 2 +- .../serializer/UnimplementedMessageSerializer.java | 2 +- .../serializer/UnknownMessageSerializer.java | 2 +- 140 files changed, 209 insertions(+), 200 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpPacketTypeConstant.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpPacketTypeConstant.java index a40742662..c875d4c42 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpPacketTypeConstant.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpPacketTypeConstant.java @@ -34,9 +34,9 @@ public enum SftpPacketTypeConstant { SSH_FXP_RMDIR((byte) 15), SSH_FXP_REALPATH((byte) 16), SSH_FXP_STAT((byte) 17), - SSH_FXP_RENAME((byte) 18), - SSH_FXP_READLINK((byte) 19), - SSH_FXP_SYMLINK((byte) 20), + SSH_FXP_RENAME((byte) 18), // First added in version 2 + SSH_FXP_READLINK((byte) 19), // First added in version 3 + SSH_FXP_SYMLINK((byte) 20), // First added in version 3 // 100 - 105 responses from the server to the client SSH_FXP_STATUS((byte) 101), SSH_FXP_HANDLE((byte) 102), @@ -44,8 +44,8 @@ public enum SftpPacketTypeConstant { SSH_FXP_NAME((byte) 104), SSH_FXP_ATTRS((byte) 105), // 200 - 201 vendor specific extensions - SSH_FXP_EXTENDED((byte) 200), - SSH_FXP_EXTENDED_REPLY((byte) 201), + SSH_FXP_EXTENDED((byte) 200), // First added in version 3 + SSH_FXP_EXTENDED_REPLY((byte) 201), // First added in version 3 // [ Only version 6 ] SSH_FXP_LINK((byte) 21), SSH_FXP_BLOCK((byte) 22), diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageSerializer.java index a416c2995..09d4ad39b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageSerializer.java @@ -22,5 +22,5 @@ protected final void serializeProtocolMessageContents() { serializeMessageSpecificContents(); } - public abstract void serializeMessageSpecificContents(); + protected abstract void serializeMessageSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMakeDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMakeDirMessageHandler.java index 90c49904e..2bae7f063 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMakeDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMakeDirMessageHandler.java @@ -14,7 +14,8 @@ import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestMakeDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpRequestMakeDirMessageHandler extends SftpMessageHandler { +public class SftpRequestMakeDirMessageHandler + extends SftpMessageHandler { public SftpRequestMakeDirMessageHandler(SshContext context) { super(context); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMakeDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMakeDirMessage.java index 84df13db9..faad99d04 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMakeDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMakeDirMessage.java @@ -13,7 +13,8 @@ import de.rub.nds.sshattacker.core.state.SshContext; import java.util.List; -public class SftpRequestMakeDirMessage extends SftpRequestWithPathMessage { +public class SftpRequestMakeDirMessage + extends SftpRequestWithPathMessage { private SftpFileAttributes attributes; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java index 751b5e56b..d68f0d779 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java @@ -62,7 +62,8 @@ private void parseExtensions() { } } - public void parseMessageSpecificContents() { + @Override + protected void parseMessageSpecificContents() { parseVersion(); parseExtensions(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMakeDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMakeDirMessageParser.java index a8004f7f3..d2e023f96 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMakeDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMakeDirMessageParser.java @@ -9,14 +9,10 @@ import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMakeDirMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; public class SftpRequestMakeDirMessageParser extends SftpRequestWithPathMessageParser { - private static final Logger LOGGER = LogManager.getLogger(); - public SftpRequestMakeDirMessageParser(byte[] array) { super(array); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMessageParser.java index 17497dbb3..adc997ada 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMessageParser.java @@ -31,7 +31,8 @@ private void parseRequestId() { LOGGER.debug("RequestId: {}", message.getRequestId().getValue()); } - public void parseMessageSpecificContents() { + @Override + protected void parseMessageSpecificContents() { parseRequestId(); parseRequestSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenDirMessageParser.java index fcef9f73f..42c09d5eb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenDirMessageParser.java @@ -8,14 +8,10 @@ package de.rub.nds.sshattacker.core.data.sftp.parser; import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenDirMessage; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; public class SftpRequestOpenDirMessageParser extends SftpRequestWithPathMessageParser { - private static final Logger LOGGER = LogManager.getLogger(); - public SftpRequestOpenDirMessageParser(byte[] array) { super(array); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveDirMessageParser.java index 8a9005029..968a87269 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveDirMessageParser.java @@ -8,14 +8,10 @@ package de.rub.nds.sshattacker.core.data.sftp.parser; import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRmdirMessage; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; public class SftpRequestRemoveDirMessageParser extends SftpRequestWithPathMessageParser { - private static final Logger LOGGER = LogManager.getLogger(); - public SftpRequestRemoveDirMessageParser(byte[] array) { super(array); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java index 7308cfa52..50da44e23 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java @@ -35,7 +35,8 @@ private void parseHandle() { () -> ArrayConverter.bytesToRawHexString(message.getHandle().getValue())); } - public void parseRequestSpecificContents() { + @Override + protected void parseRequestSpecificContents() { parseHandle(); parseRequestWithHandleSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithPathMessageParser.java index c8480ad03..d132889f7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithPathMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithPathMessageParser.java @@ -36,7 +36,8 @@ private void parsePath() { LOGGER.debug("Path: {}", () -> backslashEscapeString(message.getPath().getValue())); } - public void parseRequestSpecificContents() { + @Override + protected void parseRequestSpecificContents() { parsePath(); parseRequestWithPathSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseMessageParser.java index 27d67ec01..66405b9f6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseMessageParser.java @@ -9,11 +9,11 @@ import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public abstract class SftpResponseMessageParser> +public abstract class SftpResponseMessageParser> extends SftpMessageParser { private static final Logger LOGGER = LogManager.getLogger(); @@ -31,7 +31,8 @@ private void parseRequestId() { LOGGER.debug("RequestId: {}", message.getRequestId().getValue()); } - public void parseMessageSpecificContents() { + @Override + protected void parseMessageSpecificContents() { parseRequestId(); parseResponseSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestCloseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestCloseMessagePreparator.java index e088e1fa2..ab6d2a2d3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestCloseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestCloseMessagePreparator.java @@ -18,6 +18,7 @@ public SftpRequestCloseMessagePreparator(Chooser chooser, SftpRequestCloseMessag super(chooser, message, SftpPacketTypeConstant.SSH_FXP_CLOSE); } + @Override public void prepareRequestSpecificContents() { if (getObject().getHandle() == null) { // TODO Set valid handler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMakeDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMakeDirMessagePreparator.java index 62b1ddcf0..3b0d358fb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMakeDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMakeDirMessagePreparator.java @@ -19,6 +19,7 @@ public SftpRequestMakeDirMessagePreparator(Chooser chooser, SftpRequestMakeDirMe super(chooser, message, SftpPacketTypeConstant.SSH_FXP_MKDIR); } + @Override public void prepareRequestSpecificContents() { if (getObject().getPath() == null) { getObject().setPath("/tmp/ssh-attacker/", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMessagePreparator.java index 9d8594315..88165318a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMessagePreparator.java @@ -20,6 +20,7 @@ protected SftpRequestMessagePreparator( super(chooser, message, packetType); } + @Override public void prepareMessageSpecificContents() { // TODO: Get valid request ID getObject().setRequestId(0); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenDirMessagePreparator.java index 4d4f1d517..bc451dd7e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenDirMessagePreparator.java @@ -18,6 +18,7 @@ public SftpRequestOpenDirMessagePreparator(Chooser chooser, SftpRequestOpenDirMe super(chooser, message, SftpPacketTypeConstant.SSH_FXP_OPENDIR); } + @Override public void prepareRequestSpecificContents() { if (getObject().getPath() == null) { getObject().setPath("/tmp/", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java index 00f8e957b..b8772df6d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java @@ -20,6 +20,7 @@ public SftpRequestOpenMessagePreparator(Chooser chooser, SftpRequestOpenMessage super(chooser, message, SftpPacketTypeConstant.SSH_FXP_OPEN); } + @Override public void prepareRequestSpecificContents() { if (getObject().getPath() == null) { getObject().setPath("/etc/passwd", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadDirMessagePreparator.java index f7aa36dab..931561480 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadDirMessagePreparator.java @@ -15,9 +15,10 @@ public class SftpRequestReadDirMessagePreparator extends SftpRequestMessagePreparator { public SftpRequestReadDirMessagePreparator(Chooser chooser, SftpRequestReadDirMessage message) { - super(chooser, message, SftpPacketTypeConstant.SSH_FXP_WRITE); + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_READDIR); } + @Override public void prepareRequestSpecificContents() { if (getObject().getHandle() == null) { // TODO Set valid handler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadMessagePreparator.java index 90c1db727..88e53cf27 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadMessagePreparator.java @@ -18,6 +18,7 @@ public SftpRequestReadMessagePreparator(Chooser chooser, SftpRequestReadMessage super(chooser, message, SftpPacketTypeConstant.SSH_FXP_READ); } + @Override public void prepareRequestSpecificContents() { if (getObject().getHandle() == null) { // TODO Set valid handler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveMessagePreparator.java index 4a9e94ade..20f83db7e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveMessagePreparator.java @@ -18,6 +18,7 @@ public SftpRequestRemoveMessagePreparator(Chooser chooser, SftpRequestRemoveMess super(chooser, message, SftpPacketTypeConstant.SSH_FXP_REMOVE); } + @Override public void prepareRequestSpecificContents() { if (getObject().getPath() == null) { getObject().setPath("/etc/passwd", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRenameMessagePreparator.java index 5e403fedf..8bf986f62 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRenameMessagePreparator.java @@ -18,6 +18,7 @@ public SftpRequestRenameMessagePreparator(Chooser chooser, SftpRequestRenameMess super(chooser, message, SftpPacketTypeConstant.SSH_FXP_RENAME); } + @Override public void prepareRequestSpecificContents() { if (getObject().getPath() == null) { getObject().setPath("/etc/passwd", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestWriteMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestWriteMessagePreparator.java index 424211bba..d58cec524 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestWriteMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestWriteMessagePreparator.java @@ -18,6 +18,7 @@ public SftpRequestWriteMessagePreparator(Chooser chooser, SftpRequestWriteMessag super(chooser, message, SftpPacketTypeConstant.SSH_FXP_WRITE); } + @Override public void prepareRequestSpecificContents() { if (getObject().getHandle() == null) { // TODO Set valid handler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java index 38393880b..eddc6aad5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java @@ -18,7 +18,7 @@ public SftpUnknownExtensionPreparator(Chooser chooser, SftpUnknownExtension exte } @Override - protected void prepareExtensionSpecificContents() { + public void prepareExtensionSpecificContents() { if (getObject().getName() == null) { getObject().setName("hello-from@ssh-attacker", true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java index 5013ae6a9..8c03d8a5a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java @@ -35,7 +35,7 @@ private void serializeExtensions() { extension.getHandler(null).getSerializer().serialize())); } - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeVersion(); serializeExtensions(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java index 29c2fc6b6..d784286fd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java @@ -27,7 +27,8 @@ private void serializeRequestId() { appendInt(message.getRequestId().getValue(), DataFormatConstants.UINT32_SIZE); } - public void serializeMessageSpecificContents() { + @Override + protected void serializeMessageSpecificContents() { serializeRequestId(); serializeRequestSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRenameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRenameMessageSerializer.java index 63be3d651..59116760b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRenameMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRenameMessageSerializer.java @@ -24,7 +24,7 @@ public SftpRequestRenameMessageSerializer(SftpRequestRenameMessage message) { super(message); } - public void serializeNewPath() { + private void serializeNewPath() { LOGGER.debug("NewPath length: {}", message.getNewPathLength().getValue()); appendInt(message.getNewPathLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug("NewPath: {}", () -> backslashEscapeString(message.getNewPath().getValue())); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithHandleMessageSerializer.java index b4119f6f8..b3c734db5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithHandleMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithHandleMessageSerializer.java @@ -23,7 +23,7 @@ protected SftpRequestWithHandleMessageSerializer(T message) { super(message); } - public void serializeHandle() { + private void serializeHandle() { LOGGER.debug("Handle length: {}", message.getHandleLength().getValue()); appendInt(message.getHandleLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( @@ -32,7 +32,8 @@ public void serializeHandle() { appendBytes(message.getHandle().getValue()); } - public void serializeRequestSpecificContents() { + @Override + protected void serializeRequestSpecificContents() { serializeHandle(); serializeRequestWithHandleSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithPathMessageSerializer.java index 355d82079..4dcd2bb11 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithPathMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithPathMessageSerializer.java @@ -24,14 +24,15 @@ protected SftpRequestWithPathMessageSerializer(T message) { super(message); } - public void serializePath() { + private void serializePath() { LOGGER.debug("Path length: {}", message.getPathLength().getValue()); appendInt(message.getPathLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug("Path: {}", () -> backslashEscapeString(message.getPath().getValue())); appendString(message.getPath().getValue(), StandardCharsets.UTF_8); } - public void serializeRequestSpecificContents() { + @Override + protected void serializeRequestSpecificContents() { serializePath(); serializeRequestWithPathSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWriteMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWriteMessageSerializer.java index c89074d4c..4acb0c489 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWriteMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWriteMessageSerializer.java @@ -27,7 +27,7 @@ private void serializeOffset() { appendLong(message.getOffset().getValue(), DataFormatConstants.UINT64_SIZE); } - public void serializeData() { + private void serializeData() { LOGGER.debug("Data length: {}", message.getDataLength().getValue()); appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java index f8872d3cd..c55ebc3bb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java @@ -27,7 +27,7 @@ private void serializeRequestId() { appendInt(message.getRequestId().getValue(), DataFormatConstants.UINT32_SIZE); } - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeRequestId(); serializeResponseSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java index 22ae9cb70..c479b58c9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java @@ -22,7 +22,7 @@ public SftpUnknownMessageSerializer(SftpUnknownMessage message) { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToHexString(message.getPayload())); appendBytes(message.getPayload().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java index dc11b269a..01242de8f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java @@ -28,14 +28,14 @@ public SftpFileExtendedAttributeSerializer(SftpFileExtendedAttribute attribute) this.attribute = attribute; } - public void serializeType() { + private void serializeType() { LOGGER.debug("Type length: {}", attribute.getTypeLength().getValue()); appendInt(attribute.getTypeLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug("Type: {}", () -> backslashEscapeString(attribute.getType().getValue())); appendString(attribute.getType().getValue(), StandardCharsets.US_ASCII); } - public void serializeData() { + private void serializeData() { LOGGER.debug("Data length: {}", attribute.getDataLength().getValue()); appendInt(attribute.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java index dc1792a54..28060ca56 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java @@ -37,7 +37,7 @@ private void parseData() { } @Override - public void parseProtocolMessageContents() { + protected void parseProtocolMessageContents() { parseData(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java index 64b0a5cf0..1266d9a9c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java @@ -30,7 +30,7 @@ public UnknownDataMessage createMessage() { } @Override - public void parseProtocolMessageContents() { + protected void parseProtocolMessageContents() { message.setPayload(parseByteArrayField(getBytesLeft())); LOGGER.debug( "Payload: {}", diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthBannerMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthBannerMessageSerializer.java index bf59660bd..dcafdeacd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthBannerMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthBannerMessageSerializer.java @@ -42,7 +42,7 @@ private void serializeLanguageTag() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeMessage(); serializeLanguageTag(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthFailureMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthFailureMessageSerializer.java index f02d62e01..d4c64887d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthFailureMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthFailureMessageSerializer.java @@ -45,7 +45,7 @@ private void serializePartialSuccess() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializePossibleAuthenticationMethods(); serializePartialSuccess(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthHostbasedMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthHostbasedMessageSerializer.java index d59fcf4d9..34a850a00 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthHostbasedMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthHostbasedMessageSerializer.java @@ -74,7 +74,7 @@ private void serializeSignature() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializePubKeyAlgorithm(); serializeHostKeyBytes(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java index d016e4fe6..2c9b1e484 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java @@ -73,7 +73,7 @@ private void serializePrompt() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeUserName(); serializeInstruction(); serializeLanguageTag(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoResponseMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoResponseMessageSerializer.java index a7349b55f..f194e1850 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoResponseMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoResponseMessageSerializer.java @@ -37,7 +37,7 @@ private void serializeResponse() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeResponse(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthKeyboardInteractiveMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthKeyboardInteractiveMessageSerializer.java index eafc92d21..d07f37607 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthKeyboardInteractiveMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthKeyboardInteractiveMessageSerializer.java @@ -44,7 +44,7 @@ private void serializeSubMethods() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeLanguageTag(); serializeSubMethods(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPasswordMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPasswordMessageSerializer.java index 5c000a915..77addea96 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPasswordMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPasswordMessageSerializer.java @@ -46,7 +46,7 @@ private void serializeNewPassword() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeChangePassword(); serializePassword(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPubkeyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPubkeyMessageSerializer.java index d991d64f0..0c2226f3a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPubkeyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPubkeyMessageSerializer.java @@ -63,7 +63,7 @@ private void serializeSignature() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeUseSignature(); serializePubkeyAlgName(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthRequestMessageSerializer.java index f9e127313..1f31db67a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthRequestMessageSerializer.java @@ -52,7 +52,7 @@ private void serializeMethodName() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeUserName(); serializeServiceName(); serializeMethodName(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthSuccessMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthSuccessMessageSerializer.java index 2c74846d0..7651e37b2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthSuccessMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthSuccessMessageSerializer.java @@ -17,5 +17,5 @@ public UserAuthSuccessMessageSerializer(UserAuthSuccessMessage message) { } @Override - public void serializeMessageSpecificContents() {} + protected void serializeMessageSpecificContents() {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthUnknownMessageSerializer.java index f3bb80a2d..c62b8bdb4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthUnknownMessageSerializer.java @@ -31,7 +31,7 @@ private void serializeMethodSpecificFields() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeMethodSpecificFields(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessageParser.java index 3acfd2f8f..f356501d2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessageParser.java @@ -19,15 +19,15 @@ protected SshMessageParser(byte[] array, int startPosition) { super(array, startPosition); } + private void parseMessageID() { + message.setMessageId(parseByteField(SshMessageConstants.MESSAGE_ID_LENGTH)); + } + @Override protected final void parseProtocolMessageContents() { parseMessageID(); parseMessageSpecificContents(); } - private void parseMessageID() { - message.setMessageId(parseByteField(SshMessageConstants.MESSAGE_ID_LENGTH)); - } - protected abstract void parseMessageSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessageSerializer.java index 66cb1ddd5..737af33a8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessageSerializer.java @@ -20,5 +20,5 @@ protected final void serializeProtocolMessageContents() { serializeMessageSpecificContents(); } - public abstract void serializeMessageSpecificContents(); + protected abstract void serializeMessageSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenMessageParser.java index 90ff34838..a1547f7a4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenMessageParser.java @@ -29,7 +29,7 @@ protected ChannelOpenMessageParser(byte[] array, int startPosition) { super(array, startPosition); } - public void parseChannelType() { + private void parseChannelType() { message.setChannelTypeLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Channel type length: {}", message.getChannelTypeLength().getValue()); message.setChannelType( @@ -40,17 +40,17 @@ public void parseChannelType() { () -> backslashEscapeString(message.getChannelType().getValue())); } - public void parseSenderChannel() { + private void parseSenderChannel() { message.setSenderChannelId(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Sender channel id: {}", message.getSenderChannelId().getValue()); } - public void parseWindowSize() { + private void parseWindowSize() { message.setWindowSize(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Initial window size: {}", message.getWindowSize().getValue()); } - public void parsePacketSize() { + private void parsePacketSize() { message.setPacketSize(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Maximum packet size: {}", message.getPacketSize().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenUnknownMessageParser.java index 17e7c04b9..3a2a2ad56 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenUnknownMessageParser.java @@ -29,7 +29,7 @@ public ChannelOpenUnknownMessage createMessage() { return new ChannelOpenUnknownMessage(); } - public void parseTypeSpecificData() { + private void parseTypeSpecificData() { message.setTypeSpecificData(parseByteArrayField(getBytesLeft())); LOGGER.debug( "Type specific data: {}", diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestBreakMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestBreakMessageParser.java index 9e63e8e74..0f203b7c7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestBreakMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestBreakMessageParser.java @@ -29,7 +29,7 @@ public ChannelRequestBreakMessage createMessage() { return new ChannelRequestBreakMessage(); } - public void parseBreakLength() { + private void parseBreakLength() { message.setBreakLength(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Break length in milliseconds: {}", message.getBreakLength().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestEnvMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestEnvMessageParser.java index 30ad70126..97ea72622 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestEnvMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestEnvMessageParser.java @@ -32,7 +32,7 @@ public ChannelRequestEnvMessage createMessage() { return new ChannelRequestEnvMessage(); } - public void parseVariableName() { + private void parseVariableName() { message.setVariableNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Variable name length: {}", message.getVariableNameLength().getValue()); message.setVariableName(parseByteString(message.getVariableNameLength().getValue())); @@ -41,7 +41,7 @@ public void parseVariableName() { () -> backslashEscapeString(message.getVariableName().getValue())); } - public void parseVariableValue() { + private void parseVariableValue() { message.setVariableValueLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Variable value length: {}", message.getVariableValueLength().getValue()); message.setVariableValue(parseByteString(message.getVariableValueLength().getValue())); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExecMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExecMessageParser.java index ebf99f89d..60759de83 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExecMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExecMessageParser.java @@ -30,7 +30,7 @@ public ChannelRequestExecMessage createMessage() { return new ChannelRequestExecMessage(); } - public void parseCommand() { + private void parseCommand() { message.setCommandLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Command length: {}", message.getCommandLength().getValue()); message.setCommand(parseByteString(message.getCommandLength().getValue())); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitSignalMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitSignalMessageParser.java index 04e66d17f..776a93c5a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitSignalMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitSignalMessageParser.java @@ -33,7 +33,7 @@ public ChannelRequestExitSignalMessage createMessage() { return new ChannelRequestExitSignalMessage(); } - public void parseSignalName() { + private void parseSignalName() { message.setSignalNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Signal name length: {}", message.getSignalNameLength().getValue()); message.setSignalName(parseByteString(message.getSignalNameLength().getValue())); @@ -41,12 +41,12 @@ public void parseSignalName() { "Signal name: {}", () -> backslashEscapeString(message.getSignalName().getValue())); } - public void parseCoreDump() { + private void parseCoreDump() { message.setCoreDump(false); LOGGER.debug("Core dumped: {}", message.getCoreDump().getValue()); } - public void parseErrorMessage() { + private void parseErrorMessage() { message.setErrorMessageLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Error message length: {}", message.getErrorMessageLength().getValue()); message.setErrorMessage(parseByteString(message.getErrorMessageLength().getValue())); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitStatusMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitStatusMessageParser.java index d739cc9cb..9276d4ae5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitStatusMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitStatusMessageParser.java @@ -30,12 +30,13 @@ public ChannelRequestExitStatusMessage createMessage() { return new ChannelRequestExitStatusMessage(); } - public void parseExitStatus() { + private void parseExitStatus() { message.setExitStatus(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Exit status: {}", message.getExitStatus().getValue()); } - public void parseMessageSpecificContents() { + @Override + protected void parseMessageSpecificContents() { super.parseMessageSpecificContents(); parseExitStatus(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestPtyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestPtyMessageParser.java index 8339ccf27..bad5ecf94 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestPtyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestPtyMessageParser.java @@ -31,7 +31,7 @@ public ChannelRequestPtyMessage createMessage() { return new ChannelRequestPtyMessage(); } - public void parseTermEnvVariable() { + private void parseTermEnvVariable() { message.setTermEnvVariableLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug( "TERM environment variable length: {}", @@ -40,27 +40,27 @@ public void parseTermEnvVariable() { LOGGER.debug("TERM environment variable: {}", message.getTermEnvVariable().getValue()); } - public void parseWidthCharacters() { + private void parseWidthCharacters() { message.setWidthCharacters(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Terminal width in characters: {}", message.getWidthCharacters().getValue()); } - public void parseHeightRows() { + private void parseHeightRows() { message.setHeightRows(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Terminal height in rows: {}", message.getHeightRows().getValue()); } - public void parseWidthPixels() { + private void parseWidthPixels() { message.setWidthPixels(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Terminal width in pixels: {}", message.getWidthPixels().getValue()); } - public void parseHeightPixels() { + private void parseHeightPixels() { message.setHeightPixels(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Terminal height in pixels: {}", message.getHeightPixels().getValue()); } - public void parseEncodedTerminalModes() { + private void parseEncodedTerminalModes() { message.setEncodedTerminalModesLength( parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSignalMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSignalMessageParser.java index 60dcfa537..68510bb39 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSignalMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSignalMessageParser.java @@ -32,7 +32,7 @@ public ChannelRequestSignalMessage createMessage() { return new ChannelRequestSignalMessage(); } - public void parseSignalName() { + private void parseSignalName() { message.setSignalNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Signal name length: {}", message.getSignalNameLength().getValue()); message.setSignalName(parseByteString(message.getSignalNameLength().getValue())); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSubsystemMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSubsystemMessageParser.java index b7262926b..fef8ff4a1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSubsystemMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSubsystemMessageParser.java @@ -32,7 +32,7 @@ public ChannelRequestSubsystemMessage createMessage() { return new ChannelRequestSubsystemMessage(); } - public void parseSubsystemName() { + private void parseSubsystemName() { message.setSubsystemNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Subsystem name length: {}", message.getSubsystemNameLength().getValue()); message.setSubsystemName( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestUnknownMessageParser.java index c1a4ac59a..9565c33a3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestUnknownMessageParser.java @@ -29,7 +29,7 @@ public ChannelRequestUnknownMessage createMessage() { return new ChannelRequestUnknownMessage(); } - public void parseTypeSpecificData() { + private void parseTypeSpecificData() { message.setTypeSpecificData(parseByteArrayField(getBytesLeft())); LOGGER.debug( "Type specific data: {}", diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestWindowChangeMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestWindowChangeMessageParser.java index 7171b3c1c..358b2efe4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestWindowChangeMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestWindowChangeMessageParser.java @@ -30,22 +30,22 @@ public ChannelRequestWindowChangeMessage createMessage() { return new ChannelRequestWindowChangeMessage(); } - public void parseWidthColumns() { + private void parseWidthColumns() { message.setWidthColumns(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Terminal width in colums: {}", message.getWidthColumns().getValue()); } - public void parseHeightRows() { + private void parseHeightRows() { message.setHeightRows(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Terminal height in rows: {}", message.getHeightRows().getValue()); } - public void parseWidthPixels() { + private void parseWidthPixels() { message.setWidthPixels(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Terminal width in pixels: {}", message.getWidthPixels().getValue()); } - public void parseHeightPixels() { + private void parseHeightPixels() { message.setHeightPixels(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Terminal height in pixels: {}", message.getHeightPixels().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestX11MessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestX11MessageParser.java index 3419ede94..d594c1d82 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestX11MessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestX11MessageParser.java @@ -32,14 +32,14 @@ public ChannelRequestX11Message createMessage() { return new ChannelRequestX11Message(); } - public void parseSingleConnection() { + private void parseSingleConnection() { message.setSingleConnection(parseByteField(1)); LOGGER.debug( "Single connection: {}", Converter.byteToBoolean(message.getSingleConnection().getValue())); } - public void parseX11AuthenticationProtocol() { + private void parseX11AuthenticationProtocol() { message.setX11AuthenticationProtocolLength( parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug( @@ -54,7 +54,7 @@ public void parseX11AuthenticationProtocol() { message.getX11AuthenticationProtocol().getValue()); } - public void parseX11AuthenticationCookie() { + private void parseX11AuthenticationCookie() { message.setX11AuthenticationCookieLength( parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug( @@ -67,7 +67,7 @@ public void parseX11AuthenticationCookie() { "X11 authentication cookie: {}", message.getX11AuthenticationCookie().getValue()); } - public void parseX11ScreenNumber() { + private void parseX11ScreenNumber() { message.setX11ScreenNumber(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("X11 screen number: {}", message.getX11ScreenNumber().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestUnknownMessageParser.java index 501accac2..0f7d9b0d9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestUnknownMessageParser.java @@ -29,7 +29,7 @@ public GlobalRequestUnknownMessage createMessage() { return new GlobalRequestUnknownMessage(); } - public void parseTypeSpecificData() { + private void parseTypeSpecificData() { message.setTypeSpecificData(parseByteArrayField(getBytesLeft())); LOGGER.debug( "Type specific data: {}", diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelCloseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelCloseMessagePreparator.java index ff447a3c6..81f9ab5fb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelCloseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelCloseMessagePreparator.java @@ -18,5 +18,5 @@ public ChannelCloseMessagePreparator(Chooser chooser, ChannelCloseMessage messag } @Override - protected void prepareChannelMessageSpecificContents() {} + public void prepareChannelMessageSpecificContents() {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelDataMessagePreparator.java index 4a17c4539..78493825c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelDataMessagePreparator.java @@ -18,7 +18,7 @@ public ChannelDataMessagePreparator(Chooser chooser, ChannelDataMessage message) } @Override - protected void prepareChannelMessageSpecificContents() { + public void prepareChannelMessageSpecificContents() { // TODO dummy values for fuzzing getObject().setData(new byte[100], true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelEofMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelEofMessagePreparator.java index 3b773a9f6..c3835e688 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelEofMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelEofMessagePreparator.java @@ -18,5 +18,5 @@ public ChannelEofMessagePreparator(Chooser chooser, ChannelEofMessage message) { } @Override - protected void prepareChannelMessageSpecificContents() {} + public void prepareChannelMessageSpecificContents() {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelExtendedDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelExtendedDataMessagePreparator.java index 8076cde1f..fa539a551 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelExtendedDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelExtendedDataMessagePreparator.java @@ -21,7 +21,7 @@ public ChannelExtendedDataMessagePreparator( } @Override - protected void prepareChannelMessageSpecificContents() { + public void prepareChannelMessageSpecificContents() { // TODO dummy values for fuzzing getObject() .setDataTypeCode( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelFailureMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelFailureMessagePreparator.java index 4dd865405..e2369cf6b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelFailureMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelFailureMessagePreparator.java @@ -19,5 +19,5 @@ public ChannelFailureMessagePreparator(Chooser chooser, ChannelFailureMessage me } @Override - protected void prepareChannelMessageSpecificContents() {} + public void prepareChannelMessageSpecificContents() {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java index 10575d9ea..54f524a2d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java @@ -18,7 +18,7 @@ public ChannelOpenSessionMessagePreperator(Chooser chooser, ChannelOpenSessionMe } @Override - protected void prepareChannelOpenMessageSpecificContents() { + public void prepareChannelOpenMessageSpecificContents() { channel.setChannelType(ChannelType.SESSION); getObject().setChannelType(channel.getChannelType(), true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenUnknownMessagePreparator.java index 55691a824..69f03d59f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenUnknownMessagePreparator.java @@ -18,7 +18,7 @@ public ChannelOpenUnknownMessagePreparator(Chooser chooser, ChannelOpenUnknownMe } @Override - protected void prepareChannelOpenMessageSpecificContents() { + public void prepareChannelOpenMessageSpecificContents() { getObject().setTypeSpecificData(new byte[0]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestCancelTcpIpForwardlMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestCancelTcpIpForwardlMessagePreparator.java index 24a820103..aee8c7cb7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestCancelTcpIpForwardlMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestCancelTcpIpForwardlMessagePreparator.java @@ -20,7 +20,7 @@ public GlobalRequestCancelTcpIpForwardlMessagePreparator( } @Override - protected void prepareGlobalRequestMessageSpecificContents() { + public void prepareGlobalRequestMessageSpecificContents() { getObject().setIpAddressToBind("127.0.0.1", true); getObject().setPortToBind(22); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestNoMoreSessionsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestNoMoreSessionsMessagePreparator.java index 9411b284f..c53713529 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestNoMoreSessionsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestNoMoreSessionsMessagePreparator.java @@ -20,5 +20,5 @@ public GlobalRequestNoMoreSessionsMessagePreparator( } @Override - protected void prepareGlobalRequestMessageSpecificContents() {} + public void prepareGlobalRequestMessageSpecificContents() {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestOpenSshHostKeysMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestOpenSshHostKeysMessagePreparator.java index 0fd808323..78ff6bc16 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestOpenSshHostKeysMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestOpenSshHostKeysMessagePreparator.java @@ -20,7 +20,7 @@ public GlobalRequestOpenSshHostKeysMessagePreparator( } @Override - protected void prepareGlobalRequestMessageSpecificContents() { + public void prepareGlobalRequestMessageSpecificContents() { getObject().setHostKeys(chooser.getConfig().getHostKeys()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java index 902b66d58..253da6e51 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java @@ -20,7 +20,7 @@ public GlobalRequestTcpIpForwardMessagePreparator( } @Override - protected void prepareGlobalRequestMessageSpecificContents() { + public void prepareGlobalRequestMessageSpecificContents() { getObject().setWantReply(true); getObject().setIpAddressToBind("127.0.0.1", true); getObject().setPortToBind(0); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestUnknownMessagePreparator.java index 082667565..212c27984 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestUnknownMessagePreparator.java @@ -19,7 +19,7 @@ public GlobalRequestUnknownMessagePreparator( } @Override - protected void prepareGlobalRequestMessageSpecificContents() { + public void prepareGlobalRequestMessageSpecificContents() { getObject().setTypeSpecificData(new byte[0]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java index 619ed9946..37f5b0d5e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java @@ -30,7 +30,7 @@ private void serializeData() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeData(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelExtendedDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelExtendedDataMessageSerializer.java index d9c8c2a34..cfca005c1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelExtendedDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelExtendedDataMessageSerializer.java @@ -40,7 +40,7 @@ private void serializeData() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeDataTypeCode(); serializeData(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelMessageSerializer.java index 6b6a1fef1..df5245155 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelMessageSerializer.java @@ -27,7 +27,7 @@ private void serializeRecipientChannel() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeRecipientChannel(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenConfirmationMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenConfirmationMessageSerializer.java index 301b45afe..ba4afd440 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenConfirmationMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenConfirmationMessageSerializer.java @@ -37,7 +37,7 @@ private void serializePacketSize() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeSenderChannel(); serializeWindowSize(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenFailureMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenFailureMessageSerializer.java index 7bf4c34a5..0a4e3e4e1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenFailureMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenFailureMessageSerializer.java @@ -47,7 +47,7 @@ private void serializeLanguageTag() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeReasonCode(); serializeReason(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenMessageSerializer.java index 7766c22e3..0ae1b0f2b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenMessageSerializer.java @@ -47,7 +47,7 @@ private void serializePacketSize() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeChannelType(); serializeSenderChannel(); serializeWindowSize(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenUnknownMessageSerializer.java index 99f6953db..5cd39ee5d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenUnknownMessageSerializer.java @@ -21,7 +21,7 @@ public ChannelOpenUnknownMessageSerializer(ChannelOpenUnknownMessage message) { super(message); } - public void serializeTypeSpecificData() { + private void serializeTypeSpecificData() { LOGGER.debug( "Type specific data: {}", () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); @@ -29,7 +29,7 @@ public void serializeTypeSpecificData() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeTypeSpecificData(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestBreakMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestBreakMessageSerializer.java index 2b1b97aba..5fbcb7bb6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestBreakMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestBreakMessageSerializer.java @@ -20,13 +20,13 @@ public ChannelRequestBreakMessageSerializer(ChannelRequestBreakMessage message) super(message); } - public void serializeBreakLength() { + private void serializeBreakLength() { LOGGER.debug("Break length in milliseconds: {}", message.getBreakLength().getValue()); appendInt(message.getBreakLength().getValue(), DataFormatConstants.UINT32_SIZE); } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeBreakLength(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestEnvMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestEnvMessageSerializer.java index 48c90e3dc..7ac0d30b7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestEnvMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestEnvMessageSerializer.java @@ -24,7 +24,7 @@ public ChannelRequestEnvMessageSerializer(ChannelRequestEnvMessage message) { super(message); } - public void serializeVariableName() { + private void serializeVariableName() { LOGGER.debug("Variable name length: {}", message.getVariableNameLength().getValue()); appendInt( message.getVariableNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); @@ -34,7 +34,7 @@ public void serializeVariableName() { appendString(message.getVariableName().getValue(), StandardCharsets.UTF_8); } - public void serializeVariableValue() { + private void serializeVariableValue() { LOGGER.debug("Variable value length: {}", message.getVariableValueLength().getValue()); appendInt( message.getVariableValueLength().getValue(), @@ -46,7 +46,7 @@ public void serializeVariableValue() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeVariableName(); serializeVariableValue(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExecMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExecMessageSerializer.java index 8d2d6bad9..82136a85c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExecMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExecMessageSerializer.java @@ -32,7 +32,7 @@ private void serializeCommand() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeCommand(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitSignalMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitSignalMessageSerializer.java index 95efed878..d5b8a7d17 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitSignalMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitSignalMessageSerializer.java @@ -25,7 +25,7 @@ public ChannelRequestExitSignalMessageSerializer(ChannelRequestExitSignalMessage super(message); } - public void serializeSignalName() { + private void serializeSignalName() { LOGGER.debug("Signal name length: {}", message.getSignalNameLength().getValue()); appendInt(message.getSignalNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( @@ -33,12 +33,12 @@ public void serializeSignalName() { appendString(message.getSignalName().getValue(), StandardCharsets.UTF_8); } - public void serializeCoreDump() { + private void serializeCoreDump() { LOGGER.debug("Core dumped:{}", message.getCoreDump().getValue()); appendByte(Converter.booleanToByte(message.getCoreDump().getValue())); } - public void serializeErrorMessage() { + private void serializeErrorMessage() { LOGGER.debug("Error message length: {}", message.getErrorMessageLength().getValue()); appendInt( message.getErrorMessageLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); @@ -59,7 +59,7 @@ private void serializeLanguageTag() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeSignalName(); serializeCoreDump(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitStatusMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitStatusMessageSerializer.java index 39e47c1bc..f60ec90cc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitStatusMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitStatusMessageSerializer.java @@ -21,13 +21,13 @@ public ChannelRequestExitStatusMessageSerializer(ChannelRequestExitStatusMessage super(message); } - public void serializeExitStatus() { + private void serializeExitStatus() { LOGGER.debug("Exit status: {}", message.getExitStatus().getValue()); appendInt(message.getExitStatus().getValue(), DataFormatConstants.UINT32_SIZE); } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeExitStatus(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestMessageSerializer.java index fab63792d..93ea998fe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestMessageSerializer.java @@ -37,7 +37,7 @@ private void serializeWantReply() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeRequestType(); serializeWantReply(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestPtyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestPtyMessageSerializer.java index 6f192a629..c545585c4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestPtyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestPtyMessageSerializer.java @@ -23,7 +23,7 @@ public ChannelRequestPtyMessageSerializer(ChannelRequestPtyMessage message) { super(message); } - public void serializeTermEnvVariable() { + private void serializeTermEnvVariable() { LOGGER.debug( "TERM environment variable length: {}", message.getTermEnvVariable().getValue()); appendInt( @@ -33,27 +33,27 @@ public void serializeTermEnvVariable() { appendString(message.getTermEnvVariable().getValue(), StandardCharsets.UTF_8); } - public void serializeWidthCharacters() { + private void serializeWidthCharacters() { LOGGER.debug("Terminal width in characters: {}", message.getWidthCharacters().getValue()); appendInt(message.getWidthCharacters().getValue(), DataFormatConstants.UINT32_SIZE); } - public void serializeHeightRows() { + private void serializeHeightRows() { LOGGER.debug("Terminal height in rows: {}", message.getHeightRows().getValue()); appendInt(message.getHeightRows().getValue(), DataFormatConstants.UINT32_SIZE); } - public void serializeWidthPixels() { + private void serializeWidthPixels() { LOGGER.debug("Terminal width in pixels: {}", message.getWidthPixels().getValue()); appendInt(message.getWidthPixels().getValue(), DataFormatConstants.UINT32_SIZE); } - public void serializeHeightPixels() { + private void serializeHeightPixels() { LOGGER.debug("Terminal height in pixels: {}", message.getHeightPixels().getValue()); appendInt(message.getHeightPixels().getValue(), DataFormatConstants.UINT32_SIZE); } - public void serializeEncodedTerminalModes() { + private void serializeEncodedTerminalModes() { LOGGER.debug( "Encoded terminal modes length: {}", message.getEncodedTerminalModesLength().getValue()); @@ -69,7 +69,7 @@ public void serializeEncodedTerminalModes() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeTermEnvVariable(); serializeWidthCharacters(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSignalMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSignalMessageSerializer.java index 393607a87..d080b43c9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSignalMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSignalMessageSerializer.java @@ -24,7 +24,7 @@ public ChannelRequestSignalMessageSerializer(ChannelRequestSignalMessage message super(message); } - public void serializeSignalName() { + private void serializeSignalName() { LOGGER.debug("Signal name length: {}", message.getSignalNameLength().getValue()); appendInt(message.getSignalNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( @@ -33,7 +33,7 @@ public void serializeSignalName() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeSignalName(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSubsystemMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSubsystemMessageSerializer.java index b8f2a2715..b9db222a5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSubsystemMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSubsystemMessageSerializer.java @@ -24,7 +24,7 @@ public ChannelRequestSubsystemMessageSerializer(ChannelRequestSubsystemMessage m super(message); } - public void serializeSubsystemName() { + private void serializeSubsystemName() { LOGGER.debug("Subsystem name length: {}", message.getSubsystemNameLength().getValue()); appendInt( message.getSubsystemNameLength().getValue(), @@ -36,7 +36,7 @@ public void serializeSubsystemName() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeSubsystemName(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestUnknownMessageSerializer.java index 23868a1f6..b3199d6d8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestUnknownMessageSerializer.java @@ -20,7 +20,7 @@ public ChannelRequestUnknownMessageSerializer(ChannelRequestUnknownMessage messa super(message); } - public void serializeBreakLength() { + private void serializeBreakLength() { LOGGER.debug( "Type specific data: {}", () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); @@ -28,7 +28,7 @@ public void serializeBreakLength() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeBreakLength(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestWindowChangeMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestWindowChangeMessageSerializer.java index 9fd56f2a1..825ec5187 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestWindowChangeMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestWindowChangeMessageSerializer.java @@ -20,28 +20,28 @@ public ChannelRequestWindowChangeMessageSerializer(ChannelRequestWindowChangeMes super(message); } - public void serializeWidthColums() { + private void serializeWidthColums() { LOGGER.debug("Terminal width in colums: {}", message.getWidthPixels().getValue()); appendInt(message.getWidthPixels().getValue(), DataFormatConstants.UINT32_SIZE); } - public void serializeHeightRows() { + private void serializeHeightRows() { LOGGER.debug("Terminal height in rows: {}", message.getHeightRows().getValue()); appendInt(message.getHeightRows().getValue(), DataFormatConstants.UINT32_SIZE); } - public void serializeWidthPixels() { + private void serializeWidthPixels() { LOGGER.debug("Terminal width in pixels: {}", message.getWidthPixels().getValue()); appendInt(message.getWidthPixels().getValue(), DataFormatConstants.UINT32_SIZE); } - public void serializeHeightPixels() { + private void serializeHeightPixels() { LOGGER.debug("Terminal height in pixels: {}", message.getHeightPixels().getValue()); appendInt(message.getHeightPixels().getValue(), DataFormatConstants.UINT32_SIZE); } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeWidthColums(); serializeHeightRows(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestX11MessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestX11MessageSerializer.java index 1fa9595dc..a84f163e1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestX11MessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestX11MessageSerializer.java @@ -22,12 +22,12 @@ public ChannelRequestX11MessageSerializer(ChannelRequestX11Message message) { super(message); } - public void serializeSingleConnection() { + private void serializeSingleConnection() { LOGGER.debug("Single connection: {}", message.getSingleConnection().getValue()); appendByte(message.getSingleConnection().getValue()); } - public void serializeX11AuthenticationProtocol() { + private void serializeX11AuthenticationProtocol() { LOGGER.debug( "X11 authentication protocol length: {}", message.getX11AuthenticationProtocolLength().getValue()); @@ -40,7 +40,7 @@ public void serializeX11AuthenticationProtocol() { appendString(message.getX11AuthenticationProtocol().getValue(), StandardCharsets.UTF_8); } - public void serializeX11AuthenticationCookie() { + private void serializeX11AuthenticationCookie() { LOGGER.debug( "X11 authenticaton cookie length: {}", message.getX11AuthenticationCookieLength().getValue()); @@ -52,13 +52,13 @@ public void serializeX11AuthenticationCookie() { appendString(message.getX11AuthenticationCookie().getValue(), StandardCharsets.UTF_8); } - public void serializeX11ScreenNumber() { + private void serializeX11ScreenNumber() { LOGGER.debug("X11 screen number: {}", message.getX11ScreenNumber().getValue()); appendInt(message.getX11ScreenNumber().getValue(), DataFormatConstants.UINT32_SIZE); } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeSingleConnection(); serializeX11AuthenticationProtocol(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestXonXoffMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestXonXoffMessageSerializer.java index 4e9d2f9bb..2564c421b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestXonXoffMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestXonXoffMessageSerializer.java @@ -29,7 +29,7 @@ private void serializeClientFlowControl() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeClientFlowControl(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelWindowAdjustMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelWindowAdjustMessageSerializer.java index 10ab26fc8..e75824d2f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelWindowAdjustMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelWindowAdjustMessageSerializer.java @@ -27,7 +27,7 @@ private void serializeBytesToAdd() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeBytesToAdd(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestCancelTcpIpForwardlMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestCancelTcpIpForwardlMessageSerializer.java index 8b4d47432..a69cbf3ae 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestCancelTcpIpForwardlMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestCancelTcpIpForwardlMessageSerializer.java @@ -39,7 +39,7 @@ private void serializePortToBind() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeIPAddressToBind(); serializePortToBind(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestFailureMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestFailureMessageSerializer.java index c092045e7..23f7f6fb1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestFailureMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestFailureMessageSerializer.java @@ -18,5 +18,5 @@ public GlobalRequestFailureMessageSerializer(GlobalRequestFailureMessage message } @Override - public void serializeMessageSpecificContents() {} + protected void serializeMessageSpecificContents() {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestMessageSerializer.java index 17907f623..0358d8ba7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestMessageSerializer.java @@ -42,7 +42,7 @@ private void serializeWantReply() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeRequestName(); serializeWantReply(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestOpenSshHostKeysMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestOpenSshHostKeysMessageSerializer.java index d5a6ed5e1..c8508ec0e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestOpenSshHostKeysMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestOpenSshHostKeysMessageSerializer.java @@ -30,7 +30,7 @@ private void serializeHostKeys() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeHostKeys(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java index 46545c290..fed512b21 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java @@ -36,7 +36,7 @@ private void serializeResponseSpecificData() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeResponseSpecificData(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestTcpIpForwardMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestTcpIpForwardMessageSerializer.java index 99467d998..3ed828514 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestTcpIpForwardMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestTcpIpForwardMessageSerializer.java @@ -38,7 +38,7 @@ private void serializePortToBind() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeIPAddressToBind(); serializePortToBind(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestUnknownMessageSerializer.java index 528c3ed60..933d7d013 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestUnknownMessageSerializer.java @@ -20,7 +20,7 @@ public GlobalRequestUnknownMessageSerializer(GlobalRequestUnknownMessage message super(message); } - public void serializeBreakLength() { + private void serializeBreakLength() { LOGGER.debug( "Type specific data: {}", () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); @@ -28,7 +28,7 @@ public void serializeBreakLength() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { super.serializeMessageSpecificContents(); serializeBreakLength(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/AsciiMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/AsciiMessageParser.java index c903e854c..d9188dc5e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/AsciiMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/AsciiMessageParser.java @@ -44,7 +44,7 @@ private void parseText() { } @Override - public void parseProtocolMessageContents() { + protected void parseProtocolMessageContents() { parseText(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeInitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeInitMessageParser.java index 2fe6c6ff9..29e0da2cd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeInitMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeInitMessageParser.java @@ -31,7 +31,7 @@ protected DhGexKeyExchangeInitMessage createMessage() { return new DhGexKeyExchangeInitMessage(); } - public void parseEphemeralPublicKey() { + private void parseEphemeralPublicKey() { message.setEphemeralPublicKeyLength(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug( "Ephemeral public key (client) length: {}", message.getEphemeralPublicKeyLength()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeOldRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeOldRequestMessageParser.java index ba4cb9ee1..b1a3d11ae 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeOldRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeOldRequestMessageParser.java @@ -31,7 +31,7 @@ protected DhGexKeyExchangeOldRequestMessage createMessage() { return new DhGexKeyExchangeOldRequestMessage(); } - public void parsePreferredGroupSize() { + private void parsePreferredGroupSize() { message.setPreferredGroupSize(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Preferred group size: {} bits", message.getPreferredGroupSize().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeRequestMessageParser.java index 8ad3c1443..984ec3f5f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeRequestMessageParser.java @@ -31,18 +31,18 @@ public DhGexKeyExchangeRequestMessage createMessage() { return new DhGexKeyExchangeRequestMessage(); } - public void parseMinimalGroupSize() { + private void parseMinimalGroupSize() { message.setMinimalGroupSize(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Minimal DH group size: {} bits", message.getMinimalGroupSize().getValue()); } - public void parsePreferredGroupSize() { + private void parsePreferredGroupSize() { message.setPreferredGroupSize(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug( "Preferred DH group size: {} bits", message.getPreferredGroupSize().getValue()); } - public void parseMaximalGroupSize() { + private void parseMaximalGroupSize() { message.setMaximalGroupSize(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Maximal DH group size: {} bits", message.getMaximalGroupSize().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeInitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeInitMessageParser.java index 36d896af0..0f9ba218c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeInitMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeInitMessageParser.java @@ -30,7 +30,7 @@ protected DhKeyExchangeInitMessage createMessage() { return new DhKeyExchangeInitMessage(); } - public void parseEphemeralPublicKey() { + private void parseEphemeralPublicKey() { message.setEphemeralPublicKeyLength(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug( "Ephemeral public key (client) length: {}", message.getEphemeralPublicKeyLength()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeInitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeInitMessageParser.java index 6408a158c..73d97f11b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeInitMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeInitMessageParser.java @@ -46,7 +46,7 @@ private void parseEphemeralPublicKey() { } @Override - public void parseMessageSpecificContents() { + protected void parseMessageSpecificContents() { parseEphemeralPublicKey(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeReplyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeReplyMessageParser.java index b03210920..c378540d0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeReplyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeReplyMessageParser.java @@ -66,7 +66,7 @@ private void parseSignature() { } @Override - public void parseMessageSpecificContents() { + protected void parseMessageSpecificContents() { parseHostKeyBytes(); parseEphemeralPublicKey(); parseSignature(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/KeyExchangeInitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/KeyExchangeInitMessageParser.java index 178277214..fd7f73068 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/KeyExchangeInitMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/KeyExchangeInitMessageParser.java @@ -211,7 +211,7 @@ private void parseReserved() { } @Override - public void parseMessageSpecificContents() { + protected void parseMessageSpecificContents() { parseCookie(); parseKeyExchangeAlgorithms(); parseServerHostKeyAlgorithms(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/VersionExchangeMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/VersionExchangeMessageParser.java index 8478f6c54..d8cd9d6c6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/VersionExchangeMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/VersionExchangeMessageParser.java @@ -55,7 +55,7 @@ private void parseVersion() { } @Override - public void parseProtocolMessageContents() { + protected void parseProtocolMessageContents() { parseVersion(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java index 9ca55de2c..8c7193f5c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java @@ -20,7 +20,7 @@ public DelayCompressionExtensionPreparator( } @Override - protected void prepareExtensionSpecificContents() { + public void prepareExtensionSpecificContents() { if (chooser.getContext().isClient()) { getObject().setName(Extension.DELAY_COMPRESSION.getName(), true); getObject() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PingExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PingExtensionPreparator.java index 3b455a72c..9333b0d59 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PingExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PingExtensionPreparator.java @@ -22,7 +22,7 @@ public PingExtensionPreparator(Chooser chooser, PingExtension extension) { } @Override - protected void prepareExtensionSpecificContents() { + public void prepareExtensionSpecificContents() { // Sending ping@openssh.com is not allowed by the client according to OpenSSH specs if (chooser.getContext().isClient()) { LOGGER.warn( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java index aa14b1fbe..484c6fcec 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java @@ -23,7 +23,7 @@ public ServerSigAlgsExtensionPreparator(Chooser chooser, ServerSigAlgsExtension } @Override - protected void prepareExtensionSpecificContents() { + public void prepareExtensionSpecificContents() { // sending server-sig-algs extension is not allowed when acting as client if (chooser.getContext().isClient()) { LOGGER.warn( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DebugMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DebugMessageSerializer.java index 2e387e47e..c12d642c9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DebugMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DebugMessageSerializer.java @@ -50,7 +50,7 @@ private void serializeLanguageTag() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeAlwaysDisplayed(); serializeMessage(); serializeLanguageTag(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeGroupMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeGroupMessageSerializer.java index 47f2595a5..b32997b41 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeGroupMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeGroupMessageSerializer.java @@ -49,7 +49,7 @@ private void serializeGroupGenerator() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeGroupModulus(); serializeGroupGenerator(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeInitMessageSerializer.java index ae0685c07..c7c6eb465 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeInitMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeInitMessageSerializer.java @@ -35,7 +35,7 @@ private void serializeEphemeralPublicKey() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeEphemeralPublicKey(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeOldRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeOldRequestMessageSerializer.java index d267d62b9..1c5796a9f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeOldRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeOldRequestMessageSerializer.java @@ -28,7 +28,7 @@ private void serializePreferredGroupSize() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializePreferredGroupSize(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeReplyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeReplyMessageSerializer.java index 24c14396b..5ae7d9cfe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeReplyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeReplyMessageSerializer.java @@ -53,7 +53,7 @@ private void serializeSignature() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeHostKeyBytes(); serializeEphemeralPublicKey(); serializeSignature(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeRequestMessageSerializer.java index ef6759a8c..d8538f4d3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeRequestMessageSerializer.java @@ -38,7 +38,7 @@ private void serializeMaximalGroupSize() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeMinimalGroupSize(); serializePreferredGroupSize(); serializeMaximalGroupSize(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeInitMessageSerializer.java index 87d47ce79..ef37b8663 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeInitMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeInitMessageSerializer.java @@ -35,7 +35,7 @@ private void serializeEphemeralPublicKey() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeEphemeralPublicKey(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeReplyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeReplyMessageSerializer.java index 3e715f8b4..3234a52cb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeReplyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeReplyMessageSerializer.java @@ -53,7 +53,7 @@ private void serializeSignature() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeHostKeyBytes(); serializeEphemeralPublicKey(); serializeSignature(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DisconnectMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DisconnectMessageSerializer.java index 755a0ea3e..66575002b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DisconnectMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DisconnectMessageSerializer.java @@ -52,7 +52,7 @@ private void serializeLanguageTag() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeReasonCode(); serializeDescription(); serializeLanguageTag(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeInitMessageSerializer.java index 1e145083a..288bd79b0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeInitMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeInitMessageSerializer.java @@ -39,7 +39,7 @@ private void serializeEphemeralPublicKey() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeEphemeralPublicKey(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeReplyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeReplyMessageSerializer.java index 3a91f74ef..70ecb4844 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeReplyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeReplyMessageSerializer.java @@ -51,7 +51,7 @@ private void serializeSignature(EcdhKeyExchangeReplyMessage msg) { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeHostKeyBytes(message); serializeEphemeralPublicKey(message); serializeSignature(message); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ExtensionInfoMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ExtensionInfoMessageSerializer.java index 98e3861dd..c83806aa1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ExtensionInfoMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ExtensionInfoMessageSerializer.java @@ -35,7 +35,7 @@ private void serializeExtensions() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeExtensionCount(); serializeExtensions(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeInitMessageSerializer.java index 08b7b282d..8be6baae2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeInitMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeInitMessageSerializer.java @@ -30,7 +30,7 @@ public HybridKeyExchangeInitMessageSerializer( } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { int length = message.getAgreementPublicKeyLength().getValue() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java index 1e6f5d490..26b6c34eb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java @@ -30,7 +30,7 @@ public HybridKeyExchangeReplyMessageSerializer( } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeHostKeyBytes(); serializeHybridKey(); serializeSignature(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/IgnoreMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/IgnoreMessageSerializer.java index d1327ceac..02ee18a9d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/IgnoreMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/IgnoreMessageSerializer.java @@ -31,7 +31,7 @@ private void serializeData() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeData(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/KeyExchangeInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/KeyExchangeInitMessageSerializer.java index 31a37855b..1da835afe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/KeyExchangeInitMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/KeyExchangeInitMessageSerializer.java @@ -190,7 +190,7 @@ private void serializeReserved() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeCookie(); serializeKeyExchangeAlgorithms(); serializeServerHostKeyAlgorithms(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/NewCompressMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/NewCompressMessageSerializer.java index 5e7529837..443dc5d9d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/NewCompressMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/NewCompressMessageSerializer.java @@ -17,5 +17,5 @@ public NewCompressMessageSerializer(NewCompressMessage message) { } @Override - public void serializeMessageSpecificContents() {} + protected void serializeMessageSpecificContents() {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/NewKeysMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/NewKeysMessageSerializer.java index c73da6fa9..544ac3330 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/NewKeysMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/NewKeysMessageSerializer.java @@ -17,5 +17,5 @@ public NewKeysMessageSerializer(NewKeysMessage message) { } @Override - public void serializeMessageSpecificContents() {} + protected void serializeMessageSpecificContents() {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PingMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PingMessageSerializer.java index c112e993a..5601d598d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PingMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PingMessageSerializer.java @@ -23,7 +23,7 @@ public PingMessageSerializer(PingMessage message) { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { LOGGER.debug("Data length: {}", message.getDataLength().getValue()); appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PongMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PongMessageSerializer.java index f30342a03..fb1a8ac2e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PongMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PongMessageSerializer.java @@ -23,7 +23,7 @@ public PongMessageSerializer(PongMessage message) { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { LOGGER.debug("Data length: {}", message.getDataLength().getValue()); appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeDoneMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeDoneMessageSerializer.java index 35662d2aa..f8c90c185 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeDoneMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeDoneMessageSerializer.java @@ -30,7 +30,7 @@ private void serializeSignature() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeSignature(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangePubkeyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangePubkeyMessageSerializer.java index 26749e12a..5cd86fcc5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangePubkeyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangePubkeyMessageSerializer.java @@ -22,7 +22,7 @@ public RsaKeyExchangePubkeyMessageSerializer(RsaKeyExchangePubkeyMessage message super(message); } - public void serializeHostKeyBytes() { + private void serializeHostKeyBytes() { LOGGER.debug("Host key bytes length: {}", message.getHostKeyBytesLength().getValue()); appendInt( message.getHostKeyBytesLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); @@ -30,7 +30,7 @@ public void serializeHostKeyBytes() { appendBytes(message.getHostKeyBytes().getValue()); } - public void serializeTransientPublicKey() { + private void serializeTransientPublicKey() { LOGGER.debug("Transient public key length: {}", message.getTransientPublicKeyBytesLength()); appendInt( message.getTransientPublicKeyBytesLength().getValue(), @@ -40,7 +40,7 @@ public void serializeTransientPublicKey() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeHostKeyBytes(); serializeTransientPublicKey(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeSecretMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeSecretMessageSerializer.java index f5b2ca944..2bd05dcbc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeSecretMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeSecretMessageSerializer.java @@ -34,7 +34,7 @@ private void serializeEncryptedSecret() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeEncryptedSecret(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceAcceptMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceAcceptMessageSerializer.java index bf9d555dd..a13e2993a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceAcceptMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceAcceptMessageSerializer.java @@ -34,7 +34,7 @@ private void serializeServiceName() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeServiceName(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceRequestMessageSerializer.java index f624c46e1..3719d6c14 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceRequestMessageSerializer.java @@ -34,7 +34,7 @@ private void serializeServiceName() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeServiceName(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnimplementedMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnimplementedMessageSerializer.java index 662c24cca..0e42022d4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnimplementedMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnimplementedMessageSerializer.java @@ -22,7 +22,7 @@ private void serializeSequenceNumber() { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { serializeSequenceNumber(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnknownMessageSerializer.java index 4ec44c7e8..2078fad13 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnknownMessageSerializer.java @@ -22,7 +22,7 @@ public UnknownMessageSerializer(UnknownMessage message) { } @Override - public void serializeMessageSpecificContents() { + protected void serializeMessageSpecificContents() { LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToHexString(message.getPayload())); appendBytes(message.getPayload().getValue()); } From 6b33439b309d107e94807d56bbc670c21b436696 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 31 Oct 2024 19:35:06 +0100 Subject: [PATCH 029/203] Add missing SFTP Requests and Responses from protocol version 3 --- .../constants/SftpPacketTypeConstant.java | 1 - .../core/constants/SftpStatusCode.java | 61 +++++++++ .../core/data/sftp/SftpMessageParser.java | 50 ++++++- .../SftpRequestFileSetStatMessageHandler.java | 53 ++++++++ .../SftpRequestFileStatMessageHandler.java | 53 ++++++++ .../SftpRequestLinkStatMessageHandler.java | 53 ++++++++ .../SftpRequestReadLinkMessageHandler.java | 53 ++++++++ .../SftpRequestRealPathMessageHandler.java | 53 ++++++++ .../SftpRequestSetStatMessageHandler.java | 52 ++++++++ .../SftpRequestStatMessageHandler.java | 51 +++++++ ...SftpRequestSymbolicLinkMessageHandler.java | 53 ++++++++ .../SftpResponseAttributesMessageHandler.java | 53 ++++++++ .../SftpResponseDataMessageHandler.java | 51 +++++++ .../SftpResponseHandleMessageHandler.java | 52 ++++++++ .../handler/SftpResponseNameEntryHandler.java | 55 ++++++++ .../SftpResponseNameMessageHandler.java | 51 +++++++ .../SftpResponseStatusMessageHandler.java | 52 ++++++++ .../SftpRequestFileSetStatMessage.java | 41 ++++++ .../message/SftpRequestFileStatMessage.java | 20 +++ .../message/SftpRequestLinkStatMessage.java | 20 +++ .../message/SftpRequestMakeDirMessage.java | 3 +- .../sftp/message/SftpRequestOpenMessage.java | 4 +- .../message/SftpRequestReadLinkMessage.java | 20 +++ .../message/SftpRequestRealPathMessage.java | 20 +++ .../message/SftpRequestSetStatMessage.java | 41 ++++++ .../sftp/message/SftpRequestStatMessage.java | 19 +++ .../SftpRequestSymbolicLinkMessage.java | 68 ++++++++++ .../SftpResponseAttributesMessage.java | 41 ++++++ .../sftp/message/SftpResponseDataMessage.java | 63 +++++++++ .../message/SftpResponseHandleMessage.java | 64 +++++++++ .../sftp/message/SftpResponseNameEntry.java | 126 ++++++++++++++++++ .../sftp/message/SftpResponseNameMessage.java | 83 ++++++++++++ .../message/SftpResponseStatusMessage.java | 126 ++++++++++++++++++ .../SftpRequestFileSetStatMessageParser.java | 40 ++++++ .../SftpRequestFileStatMessageParser.java | 30 +++++ .../SftpRequestLinkStatMessageParser.java | 30 +++++ .../SftpRequestReadLinkMessageParser.java | 30 +++++ .../SftpRequestRealPathMessageParser.java | 30 +++++ .../SftpRequestSetStatMessageParser.java | 40 ++++++ .../parser/SftpRequestStatMessageParser.java | 30 +++++ .../SftpRequestSymbolicLinkMessageParser.java | 49 +++++++ .../SftpRequestWithHandleMessageParser.java | 4 +- .../parser/SftpRequestWriteMessageParser.java | 3 +- .../SftpResponseAttributesMessageParser.java | 40 ++++++ .../parser/SftpResponseDataMessageParser.java | 46 +++++++ .../SftpResponseHandleMessageParser.java | 47 +++++++ .../parser/SftpResponseNameEntryParser.java | 66 +++++++++ .../parser/SftpResponseNameMessageParser.java | 53 ++++++++ .../SftpResponseStatusMessageParser.java | 69 ++++++++++ .../SftpFileExtendedAttributeParser.java | 3 +- ...tpRequestFileSetStatMessagePreparator.java | 38 ++++++ .../SftpRequestFileStatMessagePreparator.java | 32 +++++ .../SftpRequestLinkStatMessagePreparator.java | 31 +++++ .../SftpRequestReadLinkMessagePreparator.java | 31 +++++ .../SftpRequestRealPathMessagePreparator.java | 31 +++++ .../SftpRequestSetStatMessagePreparator.java | 36 +++++ .../SftpRequestStatMessagePreparator.java | 30 +++++ ...pRequestSymbolicLinkMessagePreparator.java | 38 ++++++ ...tpResponseAttributesMessagePreparator.java | 30 +++++ .../SftpResponseDataMessagePreparator.java | 30 +++++ .../SftpResponseHandleMessagePreparator.java | 31 +++++ .../SftpResponseNameEntryPreparator.java | 44 ++++++ .../SftpResponseNameMessagePreparator.java | 36 +++++ .../SftpResponseStatusMessagePreparator.java | 42 ++++++ ...tpRequestFileSetStatMessageSerializer.java | 27 ++++ .../SftpRequestFileStatMessageSerializer.java | 23 ++++ .../SftpRequestLinkStatMessageSerializer.java | 21 +++ .../SftpRequestReadLinkMessageSerializer.java | 21 +++ .../SftpRequestRealPathMessageSerializer.java | 21 +++ .../SftpRequestSetStatMessageSerializer.java | 27 ++++ .../SftpRequestStatMessageSerializer.java | 21 +++ ...pRequestSymbolicLinkMessageSerializer.java | 39 ++++++ ...tpResponseAttributesMessageSerializer.java | 27 ++++ .../SftpResponseDataMessageSerializer.java | 37 +++++ .../SftpResponseHandleMessageSerializer.java | 38 ++++++ .../SftpResponseNameEntrySerializer.java | 56 ++++++++ .../SftpResponseNameMessageSerializer.java | 39 ++++++ .../SftpResponseStatusMessageSerializer.java | 58 ++++++++ .../factory/WorkflowConfigurationFactory.java | 5 +- 79 files changed, 3143 insertions(+), 13 deletions(-) create mode 100755 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpStatusCode.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestFileSetStatMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestFileStatMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestLinkStatMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadLinkMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRealPathMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestSetStatMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestStatMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestSymbolicLinkMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseAttributesMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseDataMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseHandleMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseNameEntryHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseNameMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseStatusMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestFileSetStatMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestFileStatMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestLinkStatMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadLinkMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRealPathMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestSetStatMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestStatMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestSymbolicLinkMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseAttributesMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseDataMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseHandleMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseNameEntry.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseNameMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseStatusMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestFileSetStatMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestFileStatMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestLinkStatMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadLinkMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRealPathMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestSetStatMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestStatMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestSymbolicLinkMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseAttributesMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseDataMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseHandleMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseNameEntryParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseNameMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseStatusMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestFileSetStatMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestFileStatMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestLinkStatMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadLinkMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRealPathMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestSetStatMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestStatMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestSymbolicLinkMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseAttributesMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseDataMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseHandleMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseNameEntryPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseNameMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseStatusMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestFileSetStatMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestFileStatMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestLinkStatMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadLinkMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRealPathMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestSetStatMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestStatMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestSymbolicLinkMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseAttributesMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseDataMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseHandleMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseNameEntrySerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseNameMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseStatusMessageSerializer.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpPacketTypeConstant.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpPacketTypeConstant.java index c875d4c42..428d1f9a7 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpPacketTypeConstant.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpPacketTypeConstant.java @@ -14,7 +14,6 @@ public enum SftpPacketTypeConstant { * Sources: * - https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-02 */ - // [ Up to version 5 ] // 1 - 2 protocol initialization SSH_FXP_INIT((byte) 1), SSH_FXP_VERSION((byte) 2), diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpStatusCode.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpStatusCode.java new file mode 100755 index 000000000..df7969dac --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpStatusCode.java @@ -0,0 +1,61 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.constants; + +import java.util.Collections; +import java.util.Map; +import java.util.TreeMap; + +public enum SftpStatusCode { + /* + * Sources: + * - https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-02#page-21 + */ + // [ From version 3 onwards ] + SSH_FX_OK(0), + SSH_FX_EOF(1), + SSH_FX_NO_SUCH_FILE(2), + SSH_FX_PERMISSION_DENIED(3), + SSH_FX_FAILURE(4), + SSH_FX_BAD_MESSAGE(5), + SSH_FX_NO_CONNECTION(6), + SSH_FX_CONNECTION_LOST(7), + SSH_FX_OP_UNSUPPORTED(8); + + private final int code; + + SftpStatusCode(int code) { + this.code = code; + } + + public int getCode() { + return code; + } + + public static final Map map; + + static { + Map mutableMap = new TreeMap<>(); + for (SftpStatusCode constant : values()) { + mutableMap.put(constant.code, constant); + } + map = Collections.unmodifiableMap(mutableMap); + } + + public static String getNameByCode(int code) { + if (map.containsKey(code)) { + return map.get(code).toString(); + } else { + return String.format("%d", code); + } + } + + public static SftpStatusCode fromCode(int code) { + return map.get(code); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java index f1ffd4d62..12cd2a5f6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java @@ -10,9 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.constants.SshMessageConstants; import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpInitMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpUnknownMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpVersionMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.parser.*; import de.rub.nds.sshattacker.core.exceptions.ParserException; import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessageParser; import de.rub.nds.sshattacker.core.state.SshContext; @@ -52,6 +50,52 @@ public static SftpMessage delegateParsing(AbstractDataPacket packet, SshConte return new SftpInitMessageParser(raw).parse(); case SSH_FXP_VERSION: return new SftpVersionMessageParser(raw).parse(); + case SSH_FXP_OPEN: + return new SftpRequestOpenMessageParser(raw).parse(); + case SSH_FXP_CLOSE: + return new SftpRequestCloseMessageParser(raw).parse(); + case SSH_FXP_READ: + return new SftpRequestReadMessageParser(raw).parse(); + case SSH_FXP_WRITE: + return new SftpRequestWriteMessageParser(raw).parse(); + case SSH_FXP_LSTAT: + return new SftpRequestLinkStatMessageParser(raw).parse(); + case SSH_FXP_FSTAT: + return new SftpRequestFileStatMessageParser(raw).parse(); + case SSH_FXP_SETSTAT: + return new SftpRequestSetStatMessageParser(raw).parse(); + case SSH_FXP_FSETSTAT: + return new SftpRequestFileSetStatMessageParser(raw).parse(); + case SSH_FXP_OPENDIR: + return new SftpRequestOpenDirMessageParser(raw).parse(); + case SSH_FXP_READDIR: + return new SftpRequestReadDirMessageParser(raw).parse(); + case SSH_FXP_REMOVE: + return new SftpRequestRemoveMessageParser(raw).parse(); + case SSH_FXP_MKDIR: + return new SftpRequestMakeDirMessageParser(raw).parse(); + case SSH_FXP_RMDIR: + return new SftpRequestRemoveDirMessageParser(raw).parse(); + case SSH_FXP_REALPATH: + return new SftpRequestRealPathMessageParser(raw).parse(); + case SSH_FXP_STAT: + return new SftpRequestStatMessageParser(raw).parse(); + case SSH_FXP_RENAME: + return new SftpRequestRenameMessageParser(raw).parse(); + case SSH_FXP_READLINK: + return new SftpRequestReadLinkMessageParser(raw).parse(); + case SSH_FXP_SYMLINK: + return new SftpRequestSymbolicLinkMessageParser(raw).parse(); + case SSH_FXP_STATUS: + return new SftpResponseStatusMessageParser(raw).parse(); + case SSH_FXP_HANDLE: + return new SftpResponseHandleMessageParser(raw).parse(); + case SSH_FXP_DATA: + return new SftpResponseDataMessageParser(raw).parse(); + case SSH_FXP_NAME: + return new SftpResponseNameMessageParser(raw).parse(); + case SSH_FXP_ATTRS: + return new SftpResponseAttributesMessageParser(raw).parse(); default: LOGGER.debug( "Received unimplemented SFTP Message {} ({})", diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestFileSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestFileSetStatMessageHandler.java new file mode 100644 index 000000000..fecd7437e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestFileSetStatMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestFileSetStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestFileSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestFileSetStatMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestFileSetStatMessageHandler + extends SftpMessageHandler { + + public SftpRequestFileSetStatMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestFileSetStatMessageHandler( + SshContext context, SftpRequestFileSetStatMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestFileSetStatMessage + } + + @Override + public SftpRequestFileSetStatMessageParser getParser(byte[] array) { + return new SftpRequestFileSetStatMessageParser(array); + } + + @Override + public SftpRequestFileSetStatMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestFileSetStatMessageParser(array, startPosition); + } + + @Override + public SftpRequestFileSetStatMessagePreparator getPreparator() { + return new SftpRequestFileSetStatMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestFileSetStatMessageSerializer getSerializer() { + return new SftpRequestFileSetStatMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestFileStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestFileStatMessageHandler.java new file mode 100644 index 000000000..fcceb3724 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestFileStatMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestFileStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestFileStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestFileStatMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestFileStatMessageHandler + extends SftpMessageHandler { + + public SftpRequestFileStatMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestFileStatMessageHandler( + SshContext context, SftpRequestFileStatMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestFileStatMessage + } + + @Override + public SftpRequestFileStatMessageParser getParser(byte[] array) { + return new SftpRequestFileStatMessageParser(array); + } + + @Override + public SftpRequestFileStatMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestFileStatMessageParser(array, startPosition); + } + + @Override + public SftpRequestFileStatMessagePreparator getPreparator() { + return new SftpRequestFileStatMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestFileStatMessageSerializer getSerializer() { + return new SftpRequestFileStatMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestLinkStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestLinkStatMessageHandler.java new file mode 100644 index 000000000..6faefdf39 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestLinkStatMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestLinkStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestLinkStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestLinkStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestLinkStatMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestLinkStatMessageHandler + extends SftpMessageHandler { + + public SftpRequestLinkStatMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestLinkStatMessageHandler( + SshContext context, SftpRequestLinkStatMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestLinkStatMessage + } + + @Override + public SftpRequestLinkStatMessageParser getParser(byte[] array) { + return new SftpRequestLinkStatMessageParser(array); + } + + @Override + public SftpRequestLinkStatMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestLinkStatMessageParser(array, startPosition); + } + + @Override + public SftpRequestLinkStatMessagePreparator getPreparator() { + return new SftpRequestLinkStatMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestLinkStatMessageSerializer getSerializer() { + return new SftpRequestLinkStatMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadLinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadLinkMessageHandler.java new file mode 100644 index 000000000..c40f2c068 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadLinkMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestReadLinkMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestReadLinkMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestReadLinkMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestReadLinkMessageHandler + extends SftpMessageHandler { + + public SftpRequestReadLinkMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestReadLinkMessageHandler( + SshContext context, SftpRequestReadLinkMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestReadLinkMessage + } + + @Override + public SftpRequestReadLinkMessageParser getParser(byte[] array) { + return new SftpRequestReadLinkMessageParser(array); + } + + @Override + public SftpRequestReadLinkMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestReadLinkMessageParser(array, startPosition); + } + + @Override + public SftpRequestReadLinkMessagePreparator getPreparator() { + return new SftpRequestReadLinkMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestReadLinkMessageSerializer getSerializer() { + return new SftpRequestReadLinkMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRealPathMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRealPathMessageHandler.java new file mode 100644 index 000000000..ee7ef309e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRealPathMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRealPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestRealPathMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestRealPathMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestRealPathMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestRealPathMessageHandler + extends SftpMessageHandler { + + public SftpRequestRealPathMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestRealPathMessageHandler( + SshContext context, SftpRequestRealPathMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestRealPathMessage + } + + @Override + public SftpRequestRealPathMessageParser getParser(byte[] array) { + return new SftpRequestRealPathMessageParser(array); + } + + @Override + public SftpRequestRealPathMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestRealPathMessageParser(array, startPosition); + } + + @Override + public SftpRequestRealPathMessagePreparator getPreparator() { + return new SftpRequestRealPathMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestRealPathMessageSerializer getSerializer() { + return new SftpRequestRealPathMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestSetStatMessageHandler.java new file mode 100644 index 000000000..4fb0cbb6f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestSetStatMessageHandler.java @@ -0,0 +1,52 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestSetStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestSetStatMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestSetStatMessageHandler + extends SftpMessageHandler { + + public SftpRequestSetStatMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestSetStatMessageHandler(SshContext context, SftpRequestSetStatMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestSetStatMessage + } + + @Override + public SftpRequestSetStatMessageParser getParser(byte[] array) { + return new SftpRequestSetStatMessageParser(array); + } + + @Override + public SftpRequestSetStatMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestSetStatMessageParser(array, startPosition); + } + + @Override + public SftpRequestSetStatMessagePreparator getPreparator() { + return new SftpRequestSetStatMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestSetStatMessageSerializer getSerializer() { + return new SftpRequestSetStatMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestStatMessageHandler.java new file mode 100644 index 000000000..a5d5f0547 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestStatMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestStatMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestStatMessageHandler extends SftpMessageHandler { + + public SftpRequestStatMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestStatMessageHandler(SshContext context, SftpRequestStatMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestStatMessage + } + + @Override + public SftpRequestStatMessageParser getParser(byte[] array) { + return new SftpRequestStatMessageParser(array); + } + + @Override + public SftpRequestStatMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestStatMessageParser(array, startPosition); + } + + @Override + public SftpRequestStatMessagePreparator getPreparator() { + return new SftpRequestStatMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestStatMessageSerializer getSerializer() { + return new SftpRequestStatMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestSymbolicLinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestSymbolicLinkMessageHandler.java new file mode 100644 index 000000000..60cc7df67 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestSymbolicLinkMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSymbolicLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestSymbolicLinkMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestSymbolicLinkMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestSymbolicLinkMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestSymbolicLinkMessageHandler + extends SftpMessageHandler { + + public SftpRequestSymbolicLinkMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestSymbolicLinkMessageHandler( + SshContext context, SftpRequestSymbolicLinkMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestSymbolicLinkMessage + } + + @Override + public SftpRequestSymbolicLinkMessageParser getParser(byte[] array) { + return new SftpRequestSymbolicLinkMessageParser(array); + } + + @Override + public SftpRequestSymbolicLinkMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestSymbolicLinkMessageParser(array, startPosition); + } + + @Override + public SftpRequestSymbolicLinkMessagePreparator getPreparator() { + return new SftpRequestSymbolicLinkMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestSymbolicLinkMessageSerializer getSerializer() { + return new SftpRequestSymbolicLinkMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseAttributesMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseAttributesMessageHandler.java new file mode 100644 index 000000000..e6220be13 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseAttributesMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpResponseAttributesMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpResponseAttributesMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpResponseAttributesMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseAttributesMessageHandler + extends SftpMessageHandler { + + public SftpResponseAttributesMessageHandler(SshContext context) { + super(context); + } + + public SftpResponseAttributesMessageHandler( + SshContext context, SftpResponseAttributesMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpResponseAttributesMessage + } + + @Override + public SftpResponseAttributesMessageParser getParser(byte[] array) { + return new SftpResponseAttributesMessageParser(array); + } + + @Override + public SftpResponseAttributesMessageParser getParser(byte[] array, int startPosition) { + return new SftpResponseAttributesMessageParser(array, startPosition); + } + + @Override + public SftpResponseAttributesMessagePreparator getPreparator() { + return new SftpResponseAttributesMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpResponseAttributesMessageSerializer getSerializer() { + return new SftpResponseAttributesMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseDataMessageHandler.java new file mode 100644 index 000000000..316b6bb56 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseDataMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpResponseDataMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpResponseDataMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpResponseDataMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseDataMessageHandler extends SftpMessageHandler { + + public SftpResponseDataMessageHandler(SshContext context) { + super(context); + } + + public SftpResponseDataMessageHandler(SshContext context, SftpResponseDataMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpResponseDataMessage + } + + @Override + public SftpResponseDataMessageParser getParser(byte[] array) { + return new SftpResponseDataMessageParser(array); + } + + @Override + public SftpResponseDataMessageParser getParser(byte[] array, int startPosition) { + return new SftpResponseDataMessageParser(array, startPosition); + } + + @Override + public SftpResponseDataMessagePreparator getPreparator() { + return new SftpResponseDataMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpResponseDataMessageSerializer getSerializer() { + return new SftpResponseDataMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseHandleMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseHandleMessageHandler.java new file mode 100644 index 000000000..bfd1245f1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseHandleMessageHandler.java @@ -0,0 +1,52 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpResponseHandleMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpResponseHandleMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpResponseHandleMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseHandleMessageHandler + extends SftpMessageHandler { + + public SftpResponseHandleMessageHandler(SshContext context) { + super(context); + } + + public SftpResponseHandleMessageHandler(SshContext context, SftpResponseHandleMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpResponseHandleMessage + } + + @Override + public SftpResponseHandleMessageParser getParser(byte[] array) { + return new SftpResponseHandleMessageParser(array); + } + + @Override + public SftpResponseHandleMessageParser getParser(byte[] array, int startPosition) { + return new SftpResponseHandleMessageParser(array, startPosition); + } + + @Override + public SftpResponseHandleMessagePreparator getPreparator() { + return new SftpResponseHandleMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpResponseHandleMessageSerializer getSerializer() { + return new SftpResponseHandleMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseNameEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseNameEntryHandler.java new file mode 100644 index 000000000..1dc7c2edf --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseNameEntryHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpResponseNameEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpResponseNameEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpResponseNameEntrySerializer; +import de.rub.nds.sshattacker.core.protocol.common.Handler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseNameEntryHandler implements Handler { + + private final SshContext context; + + private final SftpResponseNameEntry nameEntry; + + public SftpResponseNameEntryHandler(SshContext context) { + this(context, null); + } + + public SftpResponseNameEntryHandler(SshContext context, SftpResponseNameEntry nameEntry) { + super(); + this.context = context; + this.nameEntry = nameEntry; + } + + @Override + public void adjustContext() {} + + @Override + public SftpResponseNameEntryParser getParser(byte[] array) { + return new SftpResponseNameEntryParser(array); + } + + @Override + public SftpResponseNameEntryParser getParser(byte[] array, int startPosition) { + return new SftpResponseNameEntryParser(array, startPosition); + } + + @Override + public SftpResponseNameEntryPreparator getPreparator() { + return new SftpResponseNameEntryPreparator(context.getChooser(), nameEntry); + } + + @Override + public SftpResponseNameEntrySerializer getSerializer() { + return new SftpResponseNameEntrySerializer(nameEntry); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseNameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseNameMessageHandler.java new file mode 100644 index 000000000..f49bea190 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseNameMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpResponseNameMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpResponseNameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpResponseNameMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseNameMessageHandler extends SftpMessageHandler { + + public SftpResponseNameMessageHandler(SshContext context) { + super(context); + } + + public SftpResponseNameMessageHandler(SshContext context, SftpResponseNameMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpResponseNameMessage + } + + @Override + public SftpResponseNameMessageParser getParser(byte[] array) { + return new SftpResponseNameMessageParser(array); + } + + @Override + public SftpResponseNameMessageParser getParser(byte[] array, int startPosition) { + return new SftpResponseNameMessageParser(array, startPosition); + } + + @Override + public SftpResponseNameMessagePreparator getPreparator() { + return new SftpResponseNameMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpResponseNameMessageSerializer getSerializer() { + return new SftpResponseNameMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseStatusMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseStatusMessageHandler.java new file mode 100644 index 000000000..fd2e3f060 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseStatusMessageHandler.java @@ -0,0 +1,52 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseStatusMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.SftpResponseStatusMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpResponseStatusMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpResponseStatusMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseStatusMessageHandler + extends SftpMessageHandler { + + public SftpResponseStatusMessageHandler(SshContext context) { + super(context); + } + + public SftpResponseStatusMessageHandler(SshContext context, SftpResponseStatusMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpResponseStatusMessage + } + + @Override + public SftpResponseStatusMessageParser getParser(byte[] array) { + return new SftpResponseStatusMessageParser(array); + } + + @Override + public SftpResponseStatusMessageParser getParser(byte[] array, int startPosition) { + return new SftpResponseStatusMessageParser(array, startPosition); + } + + @Override + public SftpResponseStatusMessagePreparator getPreparator() { + return new SftpResponseStatusMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpResponseStatusMessageSerializer getSerializer() { + return new SftpResponseStatusMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestFileSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestFileSetStatMessage.java new file mode 100644 index 000000000..2f4a8a4a5 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestFileSetStatMessage.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestFileSetStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.util.List; + +public class SftpRequestFileSetStatMessage + extends SftpRequestWithHandleMessage { + + @HoldsModifiableVariable private SftpFileAttributes attributes; + + public SftpFileAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SftpFileAttributes attributes) { + this.attributes = attributes; + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + holders.addAll(attributes.getAllModifiableVariableHolders()); + return holders; + } + + @Override + public SftpRequestFileSetStatMessageHandler getHandler(SshContext context) { + return new SftpRequestFileSetStatMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestFileStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestFileStatMessage.java new file mode 100644 index 000000000..dab5d9547 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestFileStatMessage.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestFileStatMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestFileStatMessage + extends SftpRequestWithHandleMessage { + + @Override + public SftpRequestFileStatMessageHandler getHandler(SshContext context) { + return new SftpRequestFileStatMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestLinkStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestLinkStatMessage.java new file mode 100644 index 000000000..b05593676 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestLinkStatMessage.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestLinkStatMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestLinkStatMessage + extends SftpRequestWithPathMessage { + + @Override + public SftpRequestLinkStatMessageHandler getHandler(SshContext context) { + return new SftpRequestLinkStatMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMakeDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMakeDirMessage.java index faad99d04..ed2ed9729 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMakeDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMakeDirMessage.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.message; +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestMakeDirMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; @@ -16,7 +17,7 @@ public class SftpRequestMakeDirMessage extends SftpRequestWithPathMessage { - private SftpFileAttributes attributes; + @HoldsModifiableVariable private SftpFileAttributes attributes; public SftpFileAttributes getAttributes() { return attributes; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java index 36d31cb63..20fe9a45a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.message; +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; @@ -21,7 +22,8 @@ public class SftpRequestOpenMessage extends SftpRequestWithPathMessage { + + @Override + public SftpRequestReadLinkMessageHandler getHandler(SshContext context) { + return new SftpRequestReadLinkMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRealPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRealPathMessage.java new file mode 100644 index 000000000..351ff654f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRealPathMessage.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestRealPathMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestRealPathMessage + extends SftpRequestWithPathMessage { + + @Override + public SftpRequestRealPathMessageHandler getHandler(SshContext context) { + return new SftpRequestRealPathMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestSetStatMessage.java new file mode 100644 index 000000000..ba7ec4e17 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestSetStatMessage.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestSetStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.util.List; + +public class SftpRequestSetStatMessage + extends SftpRequestWithPathMessage { + + @HoldsModifiableVariable private SftpFileAttributes attributes; + + public SftpFileAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SftpFileAttributes attributes) { + this.attributes = attributes; + } + + @Override + public SftpRequestSetStatMessageHandler getHandler(SshContext context) { + return new SftpRequestSetStatMessageHandler(context, this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + holders.addAll(attributes.getAllModifiableVariableHolders()); + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestStatMessage.java new file mode 100644 index 000000000..8d7206274 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestStatMessage.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestStatMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestStatMessage extends SftpRequestWithPathMessage { + + @Override + public SftpRequestStatMessageHandler getHandler(SshContext context) { + return new SftpRequestStatMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestSymbolicLinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestSymbolicLinkMessage.java new file mode 100644 index 000000000..e75def26e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestSymbolicLinkMessage.java @@ -0,0 +1,68 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestSymbolicLinkMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; + +public class SftpRequestSymbolicLinkMessage + extends SftpRequestWithPathMessage { + + // path is the link path + + private ModifiableString targetPath; + private ModifiableInteger targetPathLength; + + public ModifiableInteger getTargetPathLength() { + return targetPathLength; + } + + public void setTargetPathLength(ModifiableInteger targetPathLength) { + this.targetPathLength = targetPathLength; + } + + public void setTargetPathLength(int targetPathLength) { + this.targetPathLength = + ModifiableVariableFactory.safelySetValue(this.targetPathLength, targetPathLength); + } + + public ModifiableString getTargetPath() { + return targetPath; + } + + public void setTargetPath(ModifiableString targetPath) { + setTargetPath(targetPath, false); + } + + public void setTargetPath(String targetPath) { + setTargetPath(targetPath, false); + } + + public void setTargetPath(ModifiableString targetPath, boolean adjustLengthField) { + if (adjustLengthField) { + setTargetPathLength(targetPath.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.targetPath = targetPath; + } + + public void setTargetPath(String targetPath, boolean adjustLengthField) { + if (adjustLengthField) { + setTargetPathLength(targetPath.getBytes(StandardCharsets.UTF_8).length); + } + this.targetPath = ModifiableVariableFactory.safelySetValue(this.targetPath, targetPath); + } + + @Override + public SftpRequestSymbolicLinkMessageHandler getHandler(SshContext context) { + return new SftpRequestSymbolicLinkMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseAttributesMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseAttributesMessage.java new file mode 100644 index 000000000..d2f941863 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseAttributesMessage.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpResponseAttributesMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.util.List; + +public class SftpResponseAttributesMessage + extends SftpResponseMessage { + + @HoldsModifiableVariable private SftpFileAttributes attributes; + + public SftpFileAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SftpFileAttributes attributes) { + this.attributes = attributes; + } + + @Override + public SftpResponseAttributesMessageHandler getHandler(SshContext context) { + return new SftpResponseAttributesMessageHandler(context, this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + holders.addAll(attributes.getAllModifiableVariableHolders()); + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseDataMessage.java new file mode 100644 index 000000000..403331421 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseDataMessage.java @@ -0,0 +1,63 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpResponseDataMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseDataMessage extends SftpResponseMessage { + + private ModifiableInteger dataLength; + private ModifiableByteArray data; + + public ModifiableInteger getDataLength() { + return dataLength; + } + + public void setDataLength(ModifiableInteger dataLength) { + this.dataLength = dataLength; + } + + public void setDataLength(int dataLength) { + this.dataLength = ModifiableVariableFactory.safelySetValue(this.dataLength, dataLength); + } + + public ModifiableByteArray getData() { + return data; + } + + public void setData(ModifiableByteArray data) { + setData(data, false); + } + + public void setData(byte[] data) { + setData(data, false); + } + + public void setData(ModifiableByteArray data, boolean adjustLengthField) { + this.data = data; + if (adjustLengthField) { + setDataLength(this.data.getValue().length); + } + } + + public void setData(byte[] data, boolean adjustLengthField) { + this.data = ModifiableVariableFactory.safelySetValue(this.data, data); + if (adjustLengthField) { + setDataLength(this.data.getValue().length); + } + } + + @Override + public SftpResponseDataMessageHandler getHandler(SshContext context) { + return new SftpResponseDataMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseHandleMessage.java new file mode 100644 index 000000000..717c70b2f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseHandleMessage.java @@ -0,0 +1,64 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpResponseHandleMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseHandleMessage extends SftpResponseMessage { + + private ModifiableInteger handleLength; + private ModifiableByteArray handle; + + public ModifiableInteger getHandleLength() { + return handleLength; + } + + public void setHandleLength(ModifiableInteger handleLength) { + this.handleLength = handleLength; + } + + public void setHandleLength(int handleLength) { + this.handleLength = + ModifiableVariableFactory.safelySetValue(this.handleLength, handleLength); + } + + public ModifiableByteArray getHandle() { + return handle; + } + + public void setHandle(ModifiableByteArray handle) { + setHandle(handle, false); + } + + public void setHandle(byte[] handle) { + setHandle(handle, false); + } + + public void setHandle(ModifiableByteArray handle, boolean adjustLengthField) { + this.handle = handle; + if (adjustLengthField) { + setHandleLength(this.handle.getValue().length); + } + } + + public void setHandle(byte[] handle, boolean adjustLengthField) { + this.handle = ModifiableVariableFactory.safelySetValue(this.handle, handle); + if (adjustLengthField) { + setHandleLength(this.handle.getValue().length); + } + } + + @Override + public SftpResponseHandleMessageHandler getHandler(SshContext context) { + return new SftpResponseHandleMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseNameEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseNameEntry.java new file mode 100644 index 000000000..02a0b81b1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseNameEntry.java @@ -0,0 +1,126 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpResponseNameEntryHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; +import java.util.List; + +public class SftpResponseNameEntry extends ModifiableVariableHolder { + + private ModifiableInteger filenameLength; + private ModifiableString filename; + private ModifiableInteger longNameLength; + private ModifiableString longName; + + @HoldsModifiableVariable private SftpFileAttributes attributes; + + public ModifiableInteger getFilenameLength() { + return filenameLength; + } + + public void setFilenameLength(ModifiableInteger filenameLength) { + this.filenameLength = filenameLength; + } + + public void setFilenameLength(int filenameLength) { + this.filenameLength = + ModifiableVariableFactory.safelySetValue(this.filenameLength, filenameLength); + } + + public ModifiableString getFilename() { + return filename; + } + + public void setFilename(ModifiableString filename) { + setFilename(filename, false); + } + + public void setFilename(String filename) { + setFilename(filename, false); + } + + public void setFilename(ModifiableString filename, boolean adjustLengthField) { + if (adjustLengthField) { + setFilenameLength(filename.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.filename = filename; + } + + public void setFilename(String filename, boolean adjustLengthField) { + if (adjustLengthField) { + setFilenameLength(filename.getBytes(StandardCharsets.UTF_8).length); + } + this.filename = ModifiableVariableFactory.safelySetValue(this.filename, filename); + } + + public ModifiableInteger getLongNameLength() { + return longNameLength; + } + + public void setLongNameLength(ModifiableInteger longNameLength) { + this.longNameLength = longNameLength; + } + + public void setLongNameLength(int longNameLength) { + this.longNameLength = + ModifiableVariableFactory.safelySetValue(this.longNameLength, longNameLength); + } + + public ModifiableString getLongName() { + return longName; + } + + public void setLongName(ModifiableString longName) { + setLongName(longName, false); + } + + public void setLongName(String longName) { + setLongName(longName, false); + } + + public void setLongName(ModifiableString longName, boolean adjustLengthField) { + if (adjustLengthField) { + setLongNameLength(longName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.longName = longName; + } + + public void setLongName(String longName, boolean adjustLengthField) { + if (adjustLengthField) { + setLongNameLength(longName.getBytes(StandardCharsets.UTF_8).length); + } + this.longName = ModifiableVariableFactory.safelySetValue(this.longName, longName); + } + + public SftpFileAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SftpFileAttributes attributes) { + this.attributes = attributes; + } + + public SftpResponseNameEntryHandler getHandler(SshContext context) { + return new SftpResponseNameEntryHandler(context, this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + holders.addAll(attributes.getAllModifiableVariableHolders()); + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseNameMessage.java new file mode 100644 index 000000000..e2f7face2 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseNameMessage.java @@ -0,0 +1,83 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpResponseNameMessageHandler; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElementWrapper; +import jakarta.xml.bind.annotation.XmlElements; +import java.util.ArrayList; +import java.util.List; + +public class SftpResponseNameMessage extends SftpResponseMessage { + + private ModifiableInteger countNameEntries; + + @HoldsModifiableVariable + @XmlElementWrapper + @XmlElements({@XmlElement(type = SftpResponseNameEntry.class, name = "SftpResponseNameEntry")}) + private List nameEntries = new ArrayList<>(); + + public ModifiableInteger getCountNameEntries() { + return countNameEntries; + } + + public void setCountNameEntries(ModifiableInteger countNameEntries) { + this.countNameEntries = countNameEntries; + } + + public void setCountNameEntries(int countNameEntries) { + this.countNameEntries = + ModifiableVariableFactory.safelySetValue(this.countNameEntries, countNameEntries); + } + + public List getNameEntries() { + return nameEntries; + } + + public void setNameEntries(List nameEntries) { + setNameEntries(nameEntries, false); + } + + public void setNameEntries(List nameEntries, boolean adjustLengthField) { + if (adjustLengthField) { + setCountNameEntries(nameEntries.size()); + } + this.nameEntries = nameEntries; + } + + public void addNameEntry(SftpResponseNameEntry nameEntry) { + addNameEntry(nameEntry, false); + } + + public void addNameEntry(SftpResponseNameEntry nameEntry, boolean adjustLengthField) { + nameEntries.add(nameEntry); + if (adjustLengthField) { + setCountNameEntries(nameEntries.size()); + } + } + + @Override + public SftpResponseNameMessageHandler getHandler(SshContext context) { + return new SftpResponseNameMessageHandler(context, this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + for (SftpResponseNameEntry nameEntry : nameEntries) { + holders.addAll(nameEntry.getAllModifiableVariableHolders()); + } + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseStatusMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseStatusMessage.java new file mode 100644 index 000000000..54379bf29 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseStatusMessage.java @@ -0,0 +1,126 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.constants.SftpStatusCode; +import de.rub.nds.sshattacker.core.data.sftp.handler.SftpResponseStatusMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; + +public class SftpResponseStatusMessage extends SftpResponseMessage { + + private ModifiableInteger statusCode; + private ModifiableInteger errorMessageLength; + private ModifiableString errorMessage; + private ModifiableInteger languageTagLength; + private ModifiableString languageTag; + + public ModifiableInteger getStatusCode() { + return statusCode; + } + + public void setStatusCode(ModifiableInteger statusCode) { + this.statusCode = statusCode; + } + + public void setStatusCode(int statusCode) { + this.statusCode = ModifiableVariableFactory.safelySetValue(this.statusCode, statusCode); + } + + public void setStatusCode(SftpStatusCode statusCode) { + setStatusCode(statusCode.getCode()); + } + + public ModifiableInteger getErrorMessageLength() { + return errorMessageLength; + } + + public void setErrorMessageLength(ModifiableInteger errorMessageLength) { + this.errorMessageLength = errorMessageLength; + } + + public void setErrorMessageLength(int errorMessageLength) { + this.errorMessageLength = + ModifiableVariableFactory.safelySetValue( + this.errorMessageLength, errorMessageLength); + } + + public ModifiableString getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(ModifiableString errorMessage) { + setErrorMessage(errorMessage, false); + } + + public void setErrorMessage(String errorMessage) { + setErrorMessage(errorMessage, false); + } + + public void setErrorMessage(ModifiableString errorMessage, boolean adjustLengthField) { + if (adjustLengthField) { + setErrorMessageLength(errorMessage.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.errorMessage = errorMessage; + } + + public void setErrorMessage(String errorMessage, boolean adjustLengthField) { + if (adjustLengthField) { + setErrorMessageLength(errorMessage.getBytes(StandardCharsets.UTF_8).length); + } + this.errorMessage = + ModifiableVariableFactory.safelySetValue(this.errorMessage, errorMessage); + } + + public ModifiableInteger getLanguageTagLength() { + return languageTagLength; + } + + public void setLanguageTagLength(ModifiableInteger languageTagLength) { + this.languageTagLength = languageTagLength; + } + + public void setLanguageTagLength(int languageTagLength) { + this.languageTagLength = + ModifiableVariableFactory.safelySetValue(this.languageTagLength, languageTagLength); + } + + public ModifiableString getLanguageTag() { + return languageTag; + } + + public void setLanguageTag(ModifiableString languageTag) { + setLanguageTag(languageTag, false); + } + + public void setLanguageTag(String languageTag) { + setLanguageTag(languageTag, false); + } + + public void setLanguageTag(ModifiableString languageTag, boolean adjustLengthField) { + if (adjustLengthField) { + setLanguageTagLength(languageTag.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + this.languageTag = languageTag; + } + + public void setLanguageTag(String languageTag, boolean adjustLengthField) { + if (adjustLengthField) { + setLanguageTagLength(languageTag.getBytes(StandardCharsets.US_ASCII).length); + } + this.languageTag = ModifiableVariableFactory.safelySetValue(this.languageTag, languageTag); + } + + @Override + public SftpResponseStatusMessageHandler getHandler(SshContext context) { + return new SftpResponseStatusMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestFileSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestFileSetStatMessageParser.java new file mode 100644 index 000000000..e338da9d1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestFileSetStatMessageParser.java @@ -0,0 +1,40 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; + +public class SftpRequestFileSetStatMessageParser + extends SftpRequestWithHandleMessageParser { + + public SftpRequestFileSetStatMessageParser(byte[] array) { + super(array); + } + + public SftpRequestFileSetStatMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestFileSetStatMessage createMessage() { + return new SftpRequestFileSetStatMessage(); + } + + private void parseAttributes() { + SftpFileAttributesParser attributesParser = + new SftpFileAttributesParser(getArray(), getPointer()); + message.setAttributes(attributesParser.parse()); + setPointer(attributesParser.getPointer()); + } + + @Override + protected void parseRequestWithHandleSpecificContents() { + parseAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestFileStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestFileStatMessageParser.java new file mode 100644 index 000000000..12ac0b21b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestFileStatMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileStatMessage; + +public class SftpRequestFileStatMessageParser + extends SftpRequestWithHandleMessageParser { + + public SftpRequestFileStatMessageParser(byte[] array) { + super(array); + } + + public SftpRequestFileStatMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestFileStatMessage createMessage() { + return new SftpRequestFileStatMessage(); + } + + @Override + protected void parseRequestWithHandleSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestLinkStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestLinkStatMessageParser.java new file mode 100644 index 000000000..b7992b57f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestLinkStatMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestLinkStatMessage; + +public class SftpRequestLinkStatMessageParser + extends SftpRequestWithPathMessageParser { + + public SftpRequestLinkStatMessageParser(byte[] array) { + super(array); + } + + public SftpRequestLinkStatMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestLinkStatMessage createMessage() { + return new SftpRequestLinkStatMessage(); + } + + @Override + protected void parseRequestWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadLinkMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadLinkMessageParser.java new file mode 100644 index 000000000..3ebd19cc6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadLinkMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadLinkMessage; + +public class SftpRequestReadLinkMessageParser + extends SftpRequestWithPathMessageParser { + + public SftpRequestReadLinkMessageParser(byte[] array) { + super(array); + } + + public SftpRequestReadLinkMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestReadLinkMessage createMessage() { + return new SftpRequestReadLinkMessage(); + } + + @Override + protected void parseRequestWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRealPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRealPathMessageParser.java new file mode 100644 index 000000000..04ec8a773 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRealPathMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRealPathMessage; + +public class SftpRequestRealPathMessageParser + extends SftpRequestWithPathMessageParser { + + public SftpRequestRealPathMessageParser(byte[] array) { + super(array); + } + + public SftpRequestRealPathMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestRealPathMessage createMessage() { + return new SftpRequestRealPathMessage(); + } + + @Override + protected void parseRequestWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestSetStatMessageParser.java new file mode 100644 index 000000000..ffdd811b4 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestSetStatMessageParser.java @@ -0,0 +1,40 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; + +public class SftpRequestSetStatMessageParser + extends SftpRequestWithPathMessageParser { + + public SftpRequestSetStatMessageParser(byte[] array) { + super(array); + } + + public SftpRequestSetStatMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestSetStatMessage createMessage() { + return new SftpRequestSetStatMessage(); + } + + private void parseAttributes() { + SftpFileAttributesParser attributesParser = + new SftpFileAttributesParser(getArray(), getPointer()); + message.setAttributes(attributesParser.parse()); + setPointer(attributesParser.getPointer()); + } + + @Override + protected void parseRequestWithPathSpecificContents() { + parseAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestStatMessageParser.java new file mode 100644 index 000000000..bf738db2c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestStatMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestStatMessage; + +public class SftpRequestStatMessageParser + extends SftpRequestWithPathMessageParser { + + public SftpRequestStatMessageParser(byte[] array) { + super(array); + } + + public SftpRequestStatMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestStatMessage createMessage() { + return new SftpRequestStatMessage(); + } + + @Override + protected void parseRequestWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestSymbolicLinkMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestSymbolicLinkMessageParser.java new file mode 100644 index 000000000..b55e63367 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestSymbolicLinkMessageParser.java @@ -0,0 +1,49 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSymbolicLinkMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestSymbolicLinkMessageParser + extends SftpRequestWithPathMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestSymbolicLinkMessageParser(byte[] array) { + super(array); + } + + public SftpRequestSymbolicLinkMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestSymbolicLinkMessage createMessage() { + return new SftpRequestSymbolicLinkMessage(); + } + + private void parseTargetPath() { + message.setTargetPathLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("TargetPath length: {}", message.getTargetPathLength().getValue()); + message.setTargetPath( + parseByteString(message.getTargetPathLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug( + "TargetPath: {}", () -> backslashEscapeString(message.getTargetPath().getValue())); + } + + @Override + protected void parseRequestWithPathSpecificContents() { + parseTargetPath(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java index 50da44e23..fd19ffd52 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java @@ -8,7 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.parser; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.constants.BinaryPacketConstants; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWithHandleMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -27,7 +27,7 @@ protected SftpRequestWithHandleMessageParser(byte[] array, int startPosition) { } private void parseHandle() { - message.setHandleLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); + message.setHandleLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Handle length: {}", message.getHandleLength().getValue()); message.setHandle(parseByteArrayField(message.getHandleLength().getValue())); LOGGER.debug( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWriteMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWriteMessageParser.java index 1c231ee1c..b356cebf1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWriteMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWriteMessageParser.java @@ -8,7 +8,6 @@ package de.rub.nds.sshattacker.core.data.sftp.parser; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.constants.BinaryPacketConstants; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWriteMessage; import org.apache.logging.log4j.LogManager; @@ -38,7 +37,7 @@ private void parseOffset() { } private void parseData() { - message.setDataLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); + message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Data length: {}", message.getDataLength().getValue()); message.setData(parseByteArrayField(message.getDataLength().getValue())); LOGGER.debug( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseAttributesMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseAttributesMessageParser.java new file mode 100644 index 000000000..6f22257c4 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseAttributesMessageParser.java @@ -0,0 +1,40 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; + +public class SftpResponseAttributesMessageParser + extends SftpResponseMessageParser { + + public SftpResponseAttributesMessageParser(byte[] array) { + super(array); + } + + public SftpResponseAttributesMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpResponseAttributesMessage createMessage() { + return new SftpResponseAttributesMessage(); + } + + private void parseAttributes() { + SftpFileAttributesParser attributesParser = + new SftpFileAttributesParser(getArray(), getPointer()); + message.setAttributes(attributesParser.parse()); + setPointer(attributesParser.getPointer()); + } + + @Override + protected void parseResponseSpecificContents() { + parseAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseDataMessageParser.java new file mode 100644 index 000000000..c1317c922 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseDataMessageParser.java @@ -0,0 +1,46 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseDataMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseDataMessageParser + extends SftpResponseMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseDataMessageParser(byte[] array) { + super(array); + } + + public SftpResponseDataMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpResponseDataMessage createMessage() { + return new SftpResponseDataMessage(); + } + + private void parseData() { + message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("Data length: {}", message.getDataLength().getValue()); + message.setData(parseByteArrayField(message.getDataLength().getValue())); + LOGGER.debug( + "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); + } + + @Override + protected void parseResponseSpecificContents() { + parseData(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseHandleMessageParser.java new file mode 100644 index 000000000..246271089 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseHandleMessageParser.java @@ -0,0 +1,47 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseHandleMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseHandleMessageParser + extends SftpResponseMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseHandleMessageParser(byte[] array) { + super(array); + } + + public SftpResponseHandleMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpResponseHandleMessage createMessage() { + return new SftpResponseHandleMessage(); + } + + private void parseHandle() { + message.setHandleLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("Handle length: {}", message.getHandleLength().getValue()); + message.setHandle(parseByteArrayField(message.getHandleLength().getValue())); + LOGGER.debug( + "Handle: {}", + () -> ArrayConverter.bytesToRawHexString(message.getHandle().getValue())); + } + + @Override + protected void parseResponseSpecificContents() { + parseHandle(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseNameEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseNameEntryParser.java new file mode 100644 index 000000000..74a08c763 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseNameEntryParser.java @@ -0,0 +1,66 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.protocol.common.Parser; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseNameEntryParser extends Parser { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpResponseNameEntry nameEntry = new SftpResponseNameEntry(); + + public SftpResponseNameEntryParser(byte[] array) { + super(array); + } + + public SftpResponseNameEntryParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseFilename() { + nameEntry.setFilenameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("Filename length: {}", nameEntry.getFilenameLength().getValue()); + nameEntry.setFilename( + parseByteString(nameEntry.getFilenameLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug( + "Filename: {}", () -> backslashEscapeString(nameEntry.getFilename().getValue())); + } + + private void parseLongName() { + nameEntry.setLongNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("LongName length: {}", nameEntry.getLongNameLength().getValue()); + nameEntry.setLongName( + parseByteString(nameEntry.getLongNameLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug( + "LongName: {}", () -> backslashEscapeString(nameEntry.getLongName().getValue())); + } + + private void parseAttributes() { + SftpFileAttributesParser attributesParser = + new SftpFileAttributesParser(getArray(), getPointer()); + nameEntry.setAttributes(attributesParser.parse()); + setPointer(attributesParser.getPointer()); + } + + @Override + public final SftpResponseNameEntry parse() { + parseFilename(); + parseLongName(); + parseAttributes(); + return nameEntry; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseNameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseNameMessageParser.java new file mode 100644 index 000000000..41db9a712 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseNameMessageParser.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseNameMessageParser + extends SftpResponseMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseNameMessageParser(byte[] array) { + super(array); + } + + public SftpResponseNameMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpResponseNameMessage createMessage() { + return new SftpResponseNameMessage(); + } + + private void parseNameEntries() { + message.setCountNameEntries(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("CountNameEntries: {}", message.getCountNameEntries().getValue()); + + for (int nameEntryIndex = 0, nameEntryStartPointer = getPointer(); + nameEntryIndex < message.getCountNameEntries().getValue(); + nameEntryIndex++, nameEntryStartPointer = getPointer()) { + + SftpResponseNameEntryParser nameEntryParser = + new SftpResponseNameEntryParser(getArray(), nameEntryStartPointer); + + message.addNameEntry(nameEntryParser.parse()); + setPointer(nameEntryParser.getPointer()); + } + } + + @Override + protected void parseResponseSpecificContents() { + parseNameEntries(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseStatusMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseStatusMessageParser.java new file mode 100644 index 000000000..e2a85f83e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseStatusMessageParser.java @@ -0,0 +1,69 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseStatusMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseStatusMessageParser + extends SftpResponseMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseStatusMessageParser(byte[] array) { + super(array); + } + + public SftpResponseStatusMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpResponseStatusMessage createMessage() { + return new SftpResponseStatusMessage(); + } + + private void parseStatusCode() { + message.setStatusCode(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("StatusCode: {}", message.getStatusCode().getValue()); + } + + private void parseErrorMessage() { + message.setErrorMessageLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("ErrorMessage length: {}", message.getErrorMessageLength().getValue()); + message.setErrorMessage( + parseByteString( + message.getErrorMessageLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug( + "ErrorMessage: {}", + () -> backslashEscapeString(message.getErrorMessage().getValue())); + } + + private void parseLanguageTag() { + message.setLanguageTagLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("LanguageTag length: {}", message.getLanguageTagLength().getValue()); + message.setLanguageTag( + parseByteString( + message.getLanguageTagLength().getValue(), StandardCharsets.US_ASCII)); + LOGGER.debug( + "LanguageTag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); + } + + @Override + protected void parseResponseSpecificContents() { + parseStatusCode(); + parseErrorMessage(); + parseLanguageTag(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java index e48c763e5..657749d41 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java @@ -10,7 +10,6 @@ import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.constants.BinaryPacketConstants; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileExtendedAttribute; import de.rub.nds.sshattacker.core.protocol.common.Parser; @@ -41,7 +40,7 @@ private void parseType() { } private void parseData() { - attribute.setDataLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); + attribute.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("Data length: {}", attribute.getDataLength().getValue()); attribute.setData(parseByteArrayField(attribute.getDataLength().getValue())); LOGGER.debug( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestFileSetStatMessagePreparator.java new file mode 100644 index 000000000..da6d76688 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestFileSetStatMessagePreparator.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestFileSetStatMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpRequestFileSetStatMessagePreparator( + Chooser chooser, SftpRequestFileSetStatMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_FSETSTAT); + } + + @Override + public void prepareRequestSpecificContents() { + if (getObject().getHandle() == null) { + // TODO Set valid handler + getObject().setHandle(new byte[100], true); + } + if (getObject().getHandleLength() == null) { + getObject().setHandleLength(getObject().getHandle().getValue().length); + } + + if (getObject().getAttributes() == null) { + getObject().setAttributes(new SftpFileAttributes()); + } + getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestFileStatMessagePreparator.java new file mode 100644 index 000000000..4031c1534 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestFileStatMessagePreparator.java @@ -0,0 +1,32 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileStatMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestFileStatMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpRequestFileStatMessagePreparator( + Chooser chooser, SftpRequestFileStatMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_FSTAT); + } + + @Override + public void prepareRequestSpecificContents() { + if (getObject().getHandle() == null) { + // TODO Set valid handler + getObject().setHandle(new byte[100], true); + } + if (getObject().getHandleLength() == null) { + getObject().setHandleLength(getObject().getHandle().getValue().length); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestLinkStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestLinkStatMessagePreparator.java new file mode 100644 index 000000000..40cf5bd61 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestLinkStatMessagePreparator.java @@ -0,0 +1,31 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestLinkStatMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestLinkStatMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpRequestLinkStatMessagePreparator( + Chooser chooser, SftpRequestLinkStatMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_LSTAT); + } + + @Override + public void prepareRequestSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/bin/python3", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadLinkMessagePreparator.java new file mode 100644 index 000000000..e46593bdc --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadLinkMessagePreparator.java @@ -0,0 +1,31 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadLinkMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestReadLinkMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpRequestReadLinkMessagePreparator( + Chooser chooser, SftpRequestReadLinkMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_READLINK); + } + + @Override + public void prepareRequestSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/bin/python3", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRealPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRealPathMessagePreparator.java new file mode 100644 index 000000000..25ebdfce1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRealPathMessagePreparator.java @@ -0,0 +1,31 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRealPathMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestRealPathMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpRequestRealPathMessagePreparator( + Chooser chooser, SftpRequestRealPathMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_REALPATH); + } + + @Override + public void prepareRequestSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/tmp/../etc/./passwd", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestSetStatMessagePreparator.java new file mode 100644 index 000000000..572862bda --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestSetStatMessagePreparator.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestSetStatMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpRequestSetStatMessagePreparator(Chooser chooser, SftpRequestSetStatMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_SETSTAT); + } + + @Override + public void prepareRequestSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/tmp/ssh-attacker", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + + if (getObject().getAttributes() == null) { + getObject().setAttributes(new SftpFileAttributes()); + } + getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestStatMessagePreparator.java new file mode 100644 index 000000000..d9b2cabf0 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestStatMessagePreparator.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestStatMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestStatMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpRequestStatMessagePreparator(Chooser chooser, SftpRequestStatMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_STAT); + } + + @Override + public void prepareRequestSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/etc/passwd", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestSymbolicLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestSymbolicLinkMessagePreparator.java new file mode 100644 index 000000000..8ff2f916e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestSymbolicLinkMessagePreparator.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSymbolicLinkMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestSymbolicLinkMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpRequestSymbolicLinkMessagePreparator( + Chooser chooser, SftpRequestSymbolicLinkMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_SYMLINK); + } + + @Override + public void prepareRequestSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/bin/sh", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + + if (getObject().getTargetPath() == null) { + getObject().setTargetPath("/tmp/ssh-attacker-sh", true); + } + if (getObject().getTargetPathLength() == null) { + getObject().setTargetPathLength(getObject().getTargetPath().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseAttributesMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseAttributesMessagePreparator.java new file mode 100644 index 000000000..f87a5bb00 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseAttributesMessagePreparator.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpResponseAttributesMessagePreparator + extends SftpResponseMessagePreparator { + + public SftpResponseAttributesMessagePreparator( + Chooser chooser, SftpResponseAttributesMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_ATTRS); + } + + @Override + public void prepareResponseSpecificContents() { + if (getObject().getAttributes() == null) { + getObject().setAttributes(new SftpFileAttributes()); + } + getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseDataMessagePreparator.java new file mode 100644 index 000000000..c521c8d43 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseDataMessagePreparator.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseDataMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpResponseDataMessagePreparator + extends SftpResponseMessagePreparator { + + public SftpResponseDataMessagePreparator(Chooser chooser, SftpResponseDataMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_DATA); + } + + @Override + public void prepareResponseSpecificContents() { + if (getObject().getData() == null) { + getObject().setData(new byte[100], true); + } + if (getObject().getDataLength() == null) { + getObject().setDataLength(getObject().getData().getValue().length); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseHandleMessagePreparator.java new file mode 100644 index 000000000..6f4dc2d4c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseHandleMessagePreparator.java @@ -0,0 +1,31 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseHandleMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpResponseHandleMessagePreparator + extends SftpResponseMessagePreparator { + + public SftpResponseHandleMessagePreparator(Chooser chooser, SftpResponseHandleMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_HANDLE); + } + + @Override + public void prepareResponseSpecificContents() { + if (getObject().getHandle() == null) { + // TODO get valid handle + getObject().setHandle(new byte[100], true); + } + if (getObject().getHandleLength() == null) { + getObject().setHandleLength(getObject().getHandle().getValue().length); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseNameEntryPreparator.java new file mode 100644 index 000000000..b2d1939c7 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseNameEntryPreparator.java @@ -0,0 +1,44 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpResponseNameEntryPreparator extends Preparator { + + public SftpResponseNameEntryPreparator(Chooser chooser, SftpResponseNameEntry attribute) { + super(chooser, attribute); + } + + @Override + public final void prepare() { + if (getObject().getFilename() == null) { + getObject().setFilename("/etc/passwd", true); + } + if (getObject().getFilenameLength() == null) { + getObject().setFilenameLength(getObject().getFilename().getValue().length()); + } + + if (getObject().getLongName() == null) { + getObject() + .setLongName( + "-rwxr-xr-x 1 ssh attacker 348911 Mar 25 14:29 passwd", true); + } + if (getObject().getLongNameLength() == null) { + getObject().setLongNameLength(getObject().getLongName().getValue().length()); + } + + if (getObject().getAttributes() == null) { + getObject().setAttributes(new SftpFileAttributes()); + } + getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseNameMessagePreparator.java new file mode 100644 index 000000000..2b478e9fb --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseNameMessagePreparator.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpResponseNameMessagePreparator + extends SftpResponseMessagePreparator { + + public SftpResponseNameMessagePreparator(Chooser chooser, SftpResponseNameMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_NAME); + } + + @Override + public void prepareResponseSpecificContents() { + if (getObject().getCountNameEntries() == null) { + getObject().setCountNameEntries(0); + } + + getObject() + .getNameEntries() + .forEach( + nameEntry -> + nameEntry + .getHandler(chooser.getContext()) + .getPreparator() + .prepare()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseStatusMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseStatusMessagePreparator.java new file mode 100644 index 000000000..7ce2305ea --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseStatusMessagePreparator.java @@ -0,0 +1,42 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.constants.SftpStatusCode; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseStatusMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpResponseStatusMessagePreparator + extends SftpResponseMessagePreparator { + + public SftpResponseStatusMessagePreparator(Chooser chooser, SftpResponseStatusMessage message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_STATUS); + } + + @Override + public void prepareResponseSpecificContents() { + if (getObject().getStatusCode() == null) { + getObject().setStatusCode(SftpStatusCode.SSH_FX_OK); + } + + if (getObject().getErrorMessage() == null) { + getObject().setErrorMessage("SSH-Attacker sagt NEIN!", true); + } + if (getObject().getErrorMessageLength() == null) { + getObject().setErrorMessageLength(getObject().getErrorMessage().getValue().length()); + } + + if (getObject().getLanguageTag() == null) { + getObject().setLanguageTag("de", true); + } + if (getObject().getLanguageTagLength() == null) { + getObject().setLanguageTagLength(getObject().getLanguageTag().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestFileSetStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestFileSetStatMessageSerializer.java new file mode 100644 index 000000000..edb761a5e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestFileSetStatMessageSerializer.java @@ -0,0 +1,27 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileSetStatMessage; + +public class SftpRequestFileSetStatMessageSerializer + extends SftpRequestWithHandleMessageSerializer { + + public SftpRequestFileSetStatMessageSerializer(SftpRequestFileSetStatMessage message) { + super(message); + } + + private void serializeAttributes() { + appendBytes(message.getAttributes().getHandler(null).getSerializer().serialize()); + } + + @Override + protected void serializeRequestWithHandleSpecificContents() { + serializeAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestFileStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestFileStatMessageSerializer.java new file mode 100644 index 000000000..23cabb71d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestFileStatMessageSerializer.java @@ -0,0 +1,23 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileStatMessage; + +public class SftpRequestFileStatMessageSerializer + extends SftpRequestWithHandleMessageSerializer { + + public SftpRequestFileStatMessageSerializer(SftpRequestFileStatMessage message) { + super(message); + } + + @Override + protected void serializeRequestWithHandleSpecificContents() { + // TODO serializeSftpRequestFileStatMessage(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestLinkStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestLinkStatMessageSerializer.java new file mode 100644 index 000000000..984f3d34b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestLinkStatMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestLinkStatMessage; + +public class SftpRequestLinkStatMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + public SftpRequestLinkStatMessageSerializer(SftpRequestLinkStatMessage message) { + super(message); + } + + @Override + protected void serializeRequestWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadLinkMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadLinkMessageSerializer.java new file mode 100644 index 000000000..cd20e134a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadLinkMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadLinkMessage; + +public class SftpRequestReadLinkMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + public SftpRequestReadLinkMessageSerializer(SftpRequestReadLinkMessage message) { + super(message); + } + + @Override + protected void serializeRequestWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRealPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRealPathMessageSerializer.java new file mode 100644 index 000000000..10a854974 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRealPathMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRealPathMessage; + +public class SftpRequestRealPathMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + public SftpRequestRealPathMessageSerializer(SftpRequestRealPathMessage message) { + super(message); + } + + @Override + protected void serializeRequestWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestSetStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestSetStatMessageSerializer.java new file mode 100644 index 000000000..5e24ae37c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestSetStatMessageSerializer.java @@ -0,0 +1,27 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSetStatMessage; + +public class SftpRequestSetStatMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + public SftpRequestSetStatMessageSerializer(SftpRequestSetStatMessage message) { + super(message); + } + + private void serializeAttributes() { + appendBytes(message.getAttributes().getHandler(null).getSerializer().serialize()); + } + + @Override + protected void serializeRequestWithPathSpecificContents() { + serializeAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestStatMessageSerializer.java new file mode 100644 index 000000000..04a948108 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestStatMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestStatMessage; + +public class SftpRequestStatMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + public SftpRequestStatMessageSerializer(SftpRequestStatMessage message) { + super(message); + } + + @Override + protected void serializeRequestWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestSymbolicLinkMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestSymbolicLinkMessageSerializer.java new file mode 100644 index 000000000..af1c6fd86 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestSymbolicLinkMessageSerializer.java @@ -0,0 +1,39 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSymbolicLinkMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestSymbolicLinkMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestSymbolicLinkMessageSerializer(SftpRequestSymbolicLinkMessage message) { + super(message); + } + + private void serializeTargetPath() { + LOGGER.debug("TargetPath length: {}", message.getTargetPathLength().getValue()); + appendInt(message.getTargetPathLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "TargetPath: {}", () -> backslashEscapeString(message.getTargetPath().getValue())); + appendString(message.getTargetPath().getValue(), StandardCharsets.UTF_8); + } + + @Override + protected void serializeRequestWithPathSpecificContents() { + serializeTargetPath(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseAttributesMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseAttributesMessageSerializer.java new file mode 100644 index 000000000..f7a1d14cd --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseAttributesMessageSerializer.java @@ -0,0 +1,27 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseAttributesMessage; + +public class SftpResponseAttributesMessageSerializer + extends SftpResponseMessageSerializer { + + public SftpResponseAttributesMessageSerializer(SftpResponseAttributesMessage message) { + super(message); + } + + private void serializeAttributes() { + appendBytes(message.getAttributes().getHandler(null).getSerializer().serialize()); + } + + @Override + protected void serializeResponseSpecificContents() { + serializeAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseDataMessageSerializer.java new file mode 100644 index 000000000..580937981 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseDataMessageSerializer.java @@ -0,0 +1,37 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseDataMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseDataMessageSerializer + extends SftpResponseMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseDataMessageSerializer(SftpResponseDataMessage message) { + super(message); + } + + private void serializeData() { + LOGGER.debug("Data length: {}", message.getDataLength().getValue()); + appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); + appendBytes(message.getData().getValue()); + } + + @Override + protected void serializeResponseSpecificContents() { + serializeData(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseHandleMessageSerializer.java new file mode 100644 index 000000000..e90ecf083 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseHandleMessageSerializer.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseHandleMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseHandleMessageSerializer + extends SftpResponseMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseHandleMessageSerializer(SftpResponseHandleMessage message) { + super(message); + } + + private void serializeHandle() { + LOGGER.debug("Handle length: {}", message.getHandleLength().getValue()); + appendInt(message.getHandleLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "Handle: {}", + () -> ArrayConverter.bytesToRawHexString(message.getHandle().getValue())); + appendBytes(message.getHandle().getValue()); + } + + @Override + protected void serializeResponseSpecificContents() { + serializeHandle(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseNameEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseNameEntrySerializer.java new file mode 100644 index 000000000..f5cf3672e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseNameEntrySerializer.java @@ -0,0 +1,56 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameEntry; +import de.rub.nds.sshattacker.core.protocol.common.Serializer; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseNameEntrySerializer extends Serializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpResponseNameEntry nameEntry; + + public SftpResponseNameEntrySerializer(SftpResponseNameEntry nameEntry) { + super(); + this.nameEntry = nameEntry; + } + + private void serializeFilename() { + LOGGER.debug("Filename length: {}", nameEntry.getFilenameLength().getValue()); + appendInt(nameEntry.getFilenameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "Filename: {}", () -> backslashEscapeString(nameEntry.getFilename().getValue())); + appendString(nameEntry.getFilename().getValue(), StandardCharsets.UTF_8); + } + + private void serializeLongName() { + LOGGER.debug("LongName length: {}", nameEntry.getLongNameLength().getValue()); + appendInt(nameEntry.getLongNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "LongName: {}", () -> backslashEscapeString(nameEntry.getLongName().getValue())); + appendString(nameEntry.getLongName().getValue(), StandardCharsets.UTF_8); + } + + private void serializeAttributes() { + appendBytes(nameEntry.getAttributes().getHandler(null).getSerializer().serialize()); + } + + @Override + protected final void serializeBytes() { + serializeFilename(); + serializeLongName(); + serializeAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseNameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseNameMessageSerializer.java new file mode 100644 index 000000000..ac2e32aff --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseNameMessageSerializer.java @@ -0,0 +1,39 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseNameMessageSerializer + extends SftpResponseMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseNameMessageSerializer(SftpResponseNameMessage message) { + super(message); + } + + private void serializeNameEntries() { + LOGGER.debug("CountNameEntries: {}", message.getCountNameEntries().getValue()); + appendInt(message.getCountNameEntries().getValue(), DataFormatConstants.UINT32_SIZE); + + message.getNameEntries() + .forEach( + nameEntry -> + appendBytes( + nameEntry.getHandler(null).getSerializer().serialize())); + } + + @Override + protected void serializeResponseSpecificContents() { + serializeNameEntries(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseStatusMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseStatusMessageSerializer.java new file mode 100644 index 000000000..651ed5d14 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseStatusMessageSerializer.java @@ -0,0 +1,58 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseStatusMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseStatusMessageSerializer + extends SftpResponseMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseStatusMessageSerializer(SftpResponseStatusMessage message) { + super(message); + } + + private void serializeStatusCode() { + LOGGER.debug("StatusCode: {}", message.getStatusCode().getValue()); + appendInt(message.getStatusCode().getValue(), DataFormatConstants.UINT32_SIZE); + } + + private void serializeErrorMessage() { + LOGGER.debug("ErrorMessage length: {}", message.getErrorMessageLength().getValue()); + appendInt( + message.getErrorMessageLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "ErrorMessage: {}", + () -> backslashEscapeString(message.getErrorMessage().getValue())); + appendString(message.getErrorMessage().getValue(), StandardCharsets.UTF_8); + } + + private void serializeLanguageTag() { + LOGGER.debug("LanguageTag length: {}", message.getLanguageTagLength().getValue()); + appendInt( + message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "LanguageTag: {}", + () -> backslashEscapeString(message.getLanguageTag().getValue())); + appendString(message.getLanguageTag().getValue(), StandardCharsets.US_ASCII); + } + + @Override + protected void serializeResponseSpecificContents() { + serializeStatusCode(); + serializeErrorMessage(); + serializeLanguageTag(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java index 2c38c0064..5cdec955b 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java @@ -15,6 +15,7 @@ import de.rub.nds.sshattacker.core.constants.RunningModeType; import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseHandleMessage; import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; import de.rub.nds.sshattacker.core.exceptions.ConfigurationException; import de.rub.nds.sshattacker.core.protocol.authentication.message.*; @@ -578,7 +579,9 @@ public void addSftpTestActions(WorkflowTrace workflow) { connection, ConnectionEndType.CLIENT, new SftpRequestOpenMessage()), SshActionFactory.withReceiveOptions( SshActionFactory.createMessageAction( - connection, ConnectionEndType.SERVER, new SftpRequestOpenMessage()), + connection, + ConnectionEndType.SERVER, + new SftpResponseHandleMessage()), Set.of( ReceiveAction.ReceiveOption.IGNORE_CHANNEL_DATA_WRAPPER, ReceiveAction.ReceiveOption From 1417daafee7ab5dacf86e81d18ffb5ce03a58479 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Fri, 1 Nov 2024 12:41:22 +0100 Subject: [PATCH 030/203] Add missing SFTP Extension Announcments --- .../nds/sshattacker/core/config/Config.java | 6 +- .../core/constants/SftpExtension.java | 5 + .../SftpExtensionCheckFileHandler.java | 55 ++++++ .../SftpExtensionCopyDataHandler.java | 55 ++++++ .../SftpExtensionCopyFileHandler.java | 55 ++++++ .../SftpExtensionExpandPathHandler.java | 55 ++++++ .../SftpExtensionFileStatVfsHandler.java | 55 ++++++ .../SftpExtensionFileSyncHandler.java | 55 ++++++ .../SftpExtensionGetTempFolderHandler.java | 56 ++++++ .../SftpExtensionHardlinkHandler.java | 55 ++++++ .../SftpExtensionHomeDirectoryHandler.java | 56 ++++++ .../extension/SftpExtensionLimitsHandler.java | 53 ++++++ .../SftpExtensionLinkSetStatHandler.java | 55 ++++++ .../SftpExtensionMakeTempFolderHandler.java | 56 ++++++ .../SftpExtensionPosixRenameHandler.java | 55 ++++++ .../SftpExtensionSpaceAvailableHandler.java | 56 ++++++ .../SftpExtensionStatVfsHandler.java | 55 ++++++ ....java => SftpExtensionUnknownHandler.java} | 33 ++-- .../SftpExtensionUsersGroupsByIdHandler.java | 56 ++++++ .../SftpExtensionVendorIdHandler.java | 51 ++++++ .../sftp/message/SftpHandshakeMessage.java | 4 +- .../message/SftpRequestExtendedMessage.java | 65 +++++++ .../extension/SftpAbstractExtension.java | 9 + .../extension/SftpExtensionCheckFile.java | 19 ++ .../extension/SftpExtensionCopyData.java | 19 ++ .../extension/SftpExtensionCopyFile.java | 19 ++ .../extension/SftpExtensionExpandPath.java | 19 ++ .../extension/SftpExtensionFileStatVfs.java | 19 ++ .../extension/SftpExtensionFileSync.java | 19 ++ .../extension/SftpExtensionGetTempFolder.java | 20 +++ .../extension/SftpExtensionHardlink.java | 19 ++ .../extension/SftpExtensionHomeDirectory.java | 20 +++ .../extension/SftpExtensionLimits.java | 19 ++ .../extension/SftpExtensionLinkSetStat.java | 19 ++ .../SftpExtensionMakeTempFolder.java | 20 +++ .../extension/SftpExtensionPosixRename.java | 19 ++ .../SftpExtensionSpaceAvailable.java | 20 +++ .../extension/SftpExtensionStatVfs.java | 19 ++ ...tension.java => SftpExtensionUnknown.java} | 8 +- .../SftpExtensionUsersGroupsById.java | 20 +++ .../extension/SftpExtensionVendorId.java | 166 ++++++++++++++++++ .../extension/SftpExtensionWithVersion.java | 58 ++++++ .../parser/SftpHandshakeMessageParser.java | 92 +++++++++- .../SftpRequestExtendedMessageParser.java | 52 ++++++ .../SftpAbstractExtensionParser.java | 12 +- ...r.java => SftpExtensionUnknownParser.java} | 17 +- .../SftpExtensionVendorIdParser.java | 76 ++++++++ .../SftpExtensionWithVersionParser.java | 46 +++++ .../SftpRequestExtendedMessagePreparator.java | 38 ++++ .../SftpFileExtendedAttributePreparator.java | 2 +- .../SftpAbstractExtensionPreparator.java | 17 ++ ...va => SftpExtensionUnknownPreparator.java} | 10 +- .../SftpExtensionVendorIdPreparator.java | 51 ++++++ .../SftpExtensionWithVersionPreparator.java | 36 ++++ .../SftpRequestExtendedMessageSerializer.java | 47 +++++ ...va => SftpExtensionUnknownSerializer.java} | 8 +- .../SftpExtensionVendorIdSerializer.java | 71 ++++++++ .../SftpExtensionWithVersionSerializer.java | 38 ++++ 58 files changed, 2156 insertions(+), 54 deletions(-) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCheckFileHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCopyDataHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCopyFileHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionExpandPathHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileStatVfsHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileSyncHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionGetTempFolderHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionHardlinkHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionHomeDirectoryHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionLimitsHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionLinkSetStatHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionMakeTempFolderHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionPosixRenameHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionSpaceAvailableHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionStatVfsHandler.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/{SftpUnknownExtensionHandler.java => SftpExtensionUnknownHandler.java} (50%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionUsersGroupsByIdHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionVendorIdHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestExtendedMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCheckFile.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyData.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyFile.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionExpandPath.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileStatVfs.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileSync.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionGetTempFolder.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHardlink.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHomeDirectory.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLimits.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLinkSetStat.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionMakeTempFolder.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionPosixRename.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionSpaceAvailable.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionStatVfs.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/{SftpUnknownExtension.java => SftpExtensionUnknown.java} (88%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUsersGroupsById.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionWithVersion.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestExtendedMessageParser.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/{SftpUnknownExtensionParser.java => SftpExtensionUnknownParser.java} (71%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionWithVersionParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestExtendedMessagePreparator.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/{SftpUnknownExtensionPreparator.java => SftpExtensionUnknownPreparator.java} (77%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestExtendedMessageSerializer.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/{SftpUnknownExtensionSerializer.java => SftpExtensionUnknownSerializer.java} (85%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionWithVersionSerializer.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 904a423be..09a8d3ed3 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.crypto.ec.PointFormatter; import de.rub.nds.sshattacker.core.crypto.keys.*; import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpUnknownExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionUnknown; import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationResponse; import de.rub.nds.sshattacker.core.protocol.connection.ChannelDefaults; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.*; @@ -436,12 +436,12 @@ public class Config implements Serializable { // region SSH Extensions /** List of SFTP extensions supported by the client */ @XmlElementWrapper - @XmlElements({@XmlElement(type = SftpUnknownExtension.class, name = "SftpUnknownExtension")}) + @XmlElements({@XmlElement(type = SftpExtensionUnknown.class, name = "SftpUnknownExtension")}) private List> sftpClientSupportedExtensions; /** List of SFTP extensions supported by the server */ @XmlElementWrapper - @XmlElements({@XmlElement(type = SftpUnknownExtension.class, name = "SftpUnknownExtension")}) + @XmlElements({@XmlElement(type = SftpExtensionUnknown.class, name = "SftpUnknownExtension")}) private List> sftpServerSupportedExtensions; // endregion diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java index 93654e2b3..623b173d5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java @@ -34,6 +34,10 @@ public enum SftpExtension { // SFTP VENDOR_ID("vendor-id"), CHECK_FILE("check-file"), + CHECK_FILE_HANDLE( + "check-file-handle"), // only as request name - available if check-file was announced + CHECK_FILE_NAME( + "check-file-name"), // only as request name - available if check-file was announced SPACE_AVAILABLE("space-available"), HOME_DIRECTORY("home-directory"), COPY_FILE("copy-file"), @@ -43,6 +47,7 @@ public enum SftpExtension { // Vendor extensions POSIX_RENAME_OPENSSH_COM("posix-rename@openssh.com"), STAT_VFS_OPENSSH_COM("statvfs@openssh.com"), + F_STAT_VFS_OPENSSH_COM("fstatvfs@openssh.com"), HARDLINK_OPENSSH_COM("hardlink@openssh.com"), FSYNC_OPENSSH_COM("fsync@openssh.com"), L_SET_STAT("lsetstat@openssh.com"), diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCheckFileHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCheckFileHandler.java new file mode 100644 index 000000000..1385f1dab --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCheckFileHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionCheckFile; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionCheckFileHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionCheckFileHandler(SshContext context) { + super(context); + } + + public SftpExtensionCheckFileHandler(SshContext context, SftpExtensionCheckFile extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionCheckFile::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionCheckFile::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.CHECK_FILE); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCopyDataHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCopyDataHandler.java new file mode 100644 index 000000000..c8baea9f3 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCopyDataHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionCopyData; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionCopyDataHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionCopyDataHandler(SshContext context) { + super(context); + } + + public SftpExtensionCopyDataHandler(SshContext context, SftpExtensionCopyData extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionCopyData::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionCopyData::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.COPY_DATA); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCopyFileHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCopyFileHandler.java new file mode 100644 index 000000000..8fbee7142 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCopyFileHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionCopyFile; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionCopyFileHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionCopyFileHandler(SshContext context) { + super(context); + } + + public SftpExtensionCopyFileHandler(SshContext context, SftpExtensionCopyFile extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionCopyFile::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionCopyFile::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.COPY_FILE); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionExpandPathHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionExpandPathHandler.java new file mode 100644 index 000000000..16e2fe41f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionExpandPathHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionExpandPath; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionExpandPathHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionExpandPathHandler(SshContext context) { + super(context); + } + + public SftpExtensionExpandPathHandler(SshContext context, SftpExtensionExpandPath extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionExpandPath::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionExpandPath::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.EXPAND_PATH); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileStatVfsHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileStatVfsHandler.java new file mode 100644 index 000000000..aec9de51d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileStatVfsHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionFileStatVfs; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionFileStatVfsHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionFileStatVfsHandler(SshContext context) { + super(context); + } + + public SftpExtensionFileStatVfsHandler(SshContext context, SftpExtensionFileStatVfs extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionFileStatVfs::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionFileStatVfs::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.F_STAT_VFS_OPENSSH_COM); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileSyncHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileSyncHandler.java new file mode 100644 index 000000000..cbd0abcc9 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileSyncHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionFileSync; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionFileSyncHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionFileSyncHandler(SshContext context) { + super(context); + } + + public SftpExtensionFileSyncHandler(SshContext context, SftpExtensionFileSync extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionFileSync::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionFileSync::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.FSYNC_OPENSSH_COM); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionGetTempFolderHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionGetTempFolderHandler.java new file mode 100644 index 000000000..7aa26fd13 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionGetTempFolderHandler.java @@ -0,0 +1,56 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionGetTempFolder; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionGetTempFolderHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionGetTempFolderHandler(SshContext context) { + super(context); + } + + public SftpExtensionGetTempFolderHandler( + SshContext context, SftpExtensionGetTempFolder extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionGetTempFolder::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionGetTempFolder::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.GET_TEMP_FOLDER); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionHardlinkHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionHardlinkHandler.java new file mode 100644 index 000000000..eef047dea --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionHardlinkHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionHardlink; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionHardlinkHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionHardlinkHandler(SshContext context) { + super(context); + } + + public SftpExtensionHardlinkHandler(SshContext context, SftpExtensionHardlink extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionHardlink::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionHardlink::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.HARDLINK_OPENSSH_COM); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionHomeDirectoryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionHomeDirectoryHandler.java new file mode 100644 index 000000000..c50290f8f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionHomeDirectoryHandler.java @@ -0,0 +1,56 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionHomeDirectory; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionHomeDirectoryHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionHomeDirectoryHandler(SshContext context) { + super(context); + } + + public SftpExtensionHomeDirectoryHandler( + SshContext context, SftpExtensionHomeDirectory extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionHomeDirectory::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionHomeDirectory::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.HOME_DIRECTORY); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionLimitsHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionLimitsHandler.java new file mode 100644 index 000000000..04cf84e1b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionLimitsHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionLimits; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionLimitsHandler extends SftpAbstractExtensionHandler { + + public SftpExtensionLimitsHandler(SshContext context) { + super(context); + } + + public SftpExtensionLimitsHandler(SshContext context, SftpExtensionLimits extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionLimits::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>(SftpExtensionLimits::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.LIMITS); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionLinkSetStatHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionLinkSetStatHandler.java new file mode 100644 index 000000000..4341c1157 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionLinkSetStatHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionLinkSetStat; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionLinkSetStatHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionLinkSetStatHandler(SshContext context) { + super(context); + } + + public SftpExtensionLinkSetStatHandler(SshContext context, SftpExtensionLinkSetStat extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionLinkSetStat::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionLinkSetStat::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.L_SET_STAT); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionMakeTempFolderHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionMakeTempFolderHandler.java new file mode 100644 index 000000000..93607729d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionMakeTempFolderHandler.java @@ -0,0 +1,56 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionMakeTempFolder; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionMakeTempFolderHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionMakeTempFolderHandler(SshContext context) { + super(context); + } + + public SftpExtensionMakeTempFolderHandler( + SshContext context, SftpExtensionMakeTempFolder extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionMakeTempFolder::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionMakeTempFolder::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.MAKE_TEMP_FOLDER); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionPosixRenameHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionPosixRenameHandler.java new file mode 100644 index 000000000..7d7e04aff --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionPosixRenameHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionPosixRename; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionPosixRenameHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionPosixRenameHandler(SshContext context) { + super(context); + } + + public SftpExtensionPosixRenameHandler(SshContext context, SftpExtensionPosixRename extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionPosixRename::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionPosixRename::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.POSIX_RENAME_OPENSSH_COM); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionSpaceAvailableHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionSpaceAvailableHandler.java new file mode 100644 index 000000000..27e1506b7 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionSpaceAvailableHandler.java @@ -0,0 +1,56 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionSpaceAvailable; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionSpaceAvailableHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionSpaceAvailableHandler(SshContext context) { + super(context); + } + + public SftpExtensionSpaceAvailableHandler( + SshContext context, SftpExtensionSpaceAvailable extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionSpaceAvailable::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionSpaceAvailable::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.SPACE_AVAILABLE); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionStatVfsHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionStatVfsHandler.java new file mode 100644 index 000000000..56cbed451 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionStatVfsHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionStatVfs; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionStatVfsHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionStatVfsHandler(SshContext context) { + super(context); + } + + public SftpExtensionStatVfsHandler(SshContext context, SftpExtensionStatVfs extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionStatVfs::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionStatVfs::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.STAT_VFS_OPENSSH_COM); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpUnknownExtensionHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionUnknownHandler.java similarity index 50% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpUnknownExtensionHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionUnknownHandler.java index 50c5a86ac..be6874bd5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpUnknownExtensionHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionUnknownHandler.java @@ -7,21 +7,20 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpUnknownExtension; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpUnknownExtensionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpUnknownExtensionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpUnknownExtensionSerializer; -import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionUnknown; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionUnknownParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionUnknownPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionUnknownSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpUnknownExtensionHandler - extends SftpAbstractExtensionHandler { +public class SftpExtensionUnknownHandler + extends SftpAbstractExtensionHandler { - public SftpUnknownExtensionHandler(SshContext context) { + public SftpExtensionUnknownHandler(SshContext context) { super(context); } - public SftpUnknownExtensionHandler(SshContext context, SftpUnknownExtension extension) { + public SftpExtensionUnknownHandler(SshContext context, SftpExtensionUnknown extension) { super(context, extension); } @@ -31,22 +30,22 @@ public void adjustContext() { } @Override - public SftpUnknownExtensionParser getParser(byte[] array) { - return new SftpUnknownExtensionParser(array); + public SftpExtensionUnknownParser getParser(byte[] array) { + return new SftpExtensionUnknownParser(array); } @Override - public SftpUnknownExtensionParser getParser(byte[] array, int startPosition) { - return new SftpUnknownExtensionParser(array, startPosition); + public SftpExtensionUnknownParser getParser(byte[] array, int startPosition) { + return new SftpExtensionUnknownParser(array, startPosition); } @Override - public Preparator getPreparator() { - return new SftpUnknownExtensionPreparator(context.getChooser(), extension); + public SftpExtensionUnknownPreparator getPreparator() { + return new SftpExtensionUnknownPreparator(context.getChooser(), extension); } @Override - public SftpUnknownExtensionSerializer getSerializer() { - return new SftpUnknownExtensionSerializer(extension); + public SftpExtensionUnknownSerializer getSerializer() { + return new SftpExtensionUnknownSerializer(extension); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionUsersGroupsByIdHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionUsersGroupsByIdHandler.java new file mode 100644 index 000000000..9b9c396fa --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionUsersGroupsByIdHandler.java @@ -0,0 +1,56 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionUsersGroupsById; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionUsersGroupsByIdHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionUsersGroupsByIdHandler(SshContext context) { + super(context); + } + + public SftpExtensionUsersGroupsByIdHandler( + SshContext context, SftpExtensionUsersGroupsById extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionUsersGroupsById::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionUsersGroupsById::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.USERS_GROUPS_BY_ID); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionVendorIdHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionVendorIdHandler.java new file mode 100644 index 000000000..3537cf3f2 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionVendorIdHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionVendorId; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionVendorIdParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionVendorIdPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionVendorIdSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionVendorIdHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionVendorIdHandler(SshContext context) { + super(context); + } + + public SftpExtensionVendorIdHandler(SshContext context, SftpExtensionVendorId extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionVendorIdParser getParser(byte[] array) { + return new SftpExtensionVendorIdParser(array); + } + + @Override + public SftpExtensionVendorIdParser getParser(byte[] array, int startPosition) { + return new SftpExtensionVendorIdParser(array, startPosition); + } + + @Override + public SftpExtensionVendorIdPreparator getPreparator() { + return new SftpExtensionVendorIdPreparator(context.getChooser(), extension); + } + + @Override + public SftpExtensionVendorIdSerializer getSerializer() { + return new SftpExtensionVendorIdSerializer(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java index 770a07005..0ae0b1334 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java @@ -12,7 +12,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.sshattacker.core.data.sftp.SftpMessage; import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpUnknownExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionUnknown; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; @@ -27,7 +27,7 @@ public abstract class SftpHandshakeMessage> @HoldsModifiableVariable @XmlElementWrapper - @XmlElements({@XmlElement(type = SftpUnknownExtension.class, name = "SftpUnknownExtension")}) + @XmlElements({@XmlElement(type = SftpExtensionUnknown.class, name = "SftpUnknownExtension")}) private List> extensions = new ArrayList<>(); public ModifiableInteger getVersion() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestExtendedMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestExtendedMessage.java new file mode 100644 index 000000000..5e038c096 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestExtendedMessage.java @@ -0,0 +1,65 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import java.nio.charset.StandardCharsets; + +public abstract class SftpRequestExtendedMessage> + extends SftpRequestMessage { + + private ModifiableString extendedRequestName; + private ModifiableInteger extendedRequestNameLength; + + public ModifiableInteger getExtendedRequestNameLength() { + return extendedRequestNameLength; + } + + public void setExtendedRequestNameLength(ModifiableInteger extendedRequestNameLength) { + this.extendedRequestNameLength = extendedRequestNameLength; + } + + public void setExtendedRequestNameLength(int extendedRequestNameLength) { + this.extendedRequestNameLength = + ModifiableVariableFactory.safelySetValue( + this.extendedRequestNameLength, extendedRequestNameLength); + } + + public ModifiableString getExtendedRequestName() { + return extendedRequestName; + } + + public void setExtendedRequestName(ModifiableString extendedRequestName) { + setExtendedRequestName(extendedRequestName, false); + } + + public void setExtendedRequestName(String extendedRequestName) { + setExtendedRequestName(extendedRequestName, false); + } + + public void setExtendedRequestName( + ModifiableString extendedRequestName, boolean adjustLengthField) { + if (adjustLengthField) { + setExtendedRequestNameLength( + extendedRequestName.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + this.extendedRequestName = extendedRequestName; + } + + public void setExtendedRequestName(String extendedRequestName, boolean adjustLengthField) { + if (adjustLengthField) { + setExtendedRequestNameLength( + extendedRequestName.getBytes(StandardCharsets.US_ASCII).length); + } + this.extendedRequestName = + ModifiableVariableFactory.safelySetValue( + this.extendedRequestName, extendedRequestName); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java index c73c01fd5..6c118cd9c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpAbstractExtensionHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; @@ -46,6 +47,10 @@ public void setName(String name) { setName(name, false); } + public void setName(SftpExtension extension) { + setName(extension.getName(), false); + } + public void setName(ModifiableString name, boolean adjustLengthField) { if (adjustLengthField) { setNameLength(name.getValue().getBytes(StandardCharsets.US_ASCII).length); @@ -60,5 +65,9 @@ public void setName(String name, boolean adjustLengthField) { this.name = ModifiableVariableFactory.safelySetValue(this.name, name); } + public void setName(SftpExtension extension, boolean adjustLengthField) { + setName(extension.getName(), adjustLengthField); + } + public abstract SftpAbstractExtensionHandler getHandler(SshContext context); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCheckFile.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCheckFile.java new file mode 100644 index 000000000..8ef3b3a8a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCheckFile.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionCheckFileHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionCheckFile extends SftpExtensionWithVersion { + + @Override + public SftpExtensionCheckFileHandler getHandler(SshContext context) { + return new SftpExtensionCheckFileHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyData.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyData.java new file mode 100644 index 000000000..ac15cd9de --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyData.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionCopyDataHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionCopyData extends SftpExtensionWithVersion { + + @Override + public SftpExtensionCopyDataHandler getHandler(SshContext context) { + return new SftpExtensionCopyDataHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyFile.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyFile.java new file mode 100644 index 000000000..2218047a1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyFile.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionCopyFileHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionCopyFile extends SftpExtensionWithVersion { + + @Override + public SftpExtensionCopyFileHandler getHandler(SshContext context) { + return new SftpExtensionCopyFileHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionExpandPath.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionExpandPath.java new file mode 100644 index 000000000..5e4013e41 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionExpandPath.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionExpandPathHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionExpandPath extends SftpExtensionWithVersion { + + @Override + public SftpExtensionExpandPathHandler getHandler(SshContext context) { + return new SftpExtensionExpandPathHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileStatVfs.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileStatVfs.java new file mode 100644 index 000000000..b442a92fe --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileStatVfs.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionFileStatVfsHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionFileStatVfs extends SftpExtensionWithVersion { + + @Override + public SftpExtensionFileStatVfsHandler getHandler(SshContext context) { + return new SftpExtensionFileStatVfsHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileSync.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileSync.java new file mode 100644 index 000000000..3dd98f2ad --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileSync.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionFileSyncHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionFileSync extends SftpExtensionWithVersion { + + @Override + public SftpExtensionFileSyncHandler getHandler(SshContext context) { + return new SftpExtensionFileSyncHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionGetTempFolder.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionGetTempFolder.java new file mode 100644 index 000000000..fd9b431cc --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionGetTempFolder.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionGetTempFolderHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionGetTempFolder + extends SftpExtensionWithVersion { + + @Override + public SftpExtensionGetTempFolderHandler getHandler(SshContext context) { + return new SftpExtensionGetTempFolderHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHardlink.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHardlink.java new file mode 100644 index 000000000..52fbd0fb6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHardlink.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionHardlinkHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionHardlink extends SftpExtensionWithVersion { + + @Override + public SftpExtensionHardlinkHandler getHandler(SshContext context) { + return new SftpExtensionHardlinkHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHomeDirectory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHomeDirectory.java new file mode 100644 index 000000000..d9e752b1d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHomeDirectory.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionHomeDirectoryHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionHomeDirectory + extends SftpExtensionWithVersion { + + @Override + public SftpExtensionHomeDirectoryHandler getHandler(SshContext context) { + return new SftpExtensionHomeDirectoryHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLimits.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLimits.java new file mode 100644 index 000000000..1e7a96a3a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLimits.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionLimitsHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionLimits extends SftpExtensionWithVersion { + + @Override + public SftpExtensionLimitsHandler getHandler(SshContext context) { + return new SftpExtensionLimitsHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLinkSetStat.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLinkSetStat.java new file mode 100644 index 000000000..fe70edfa8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLinkSetStat.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionLinkSetStatHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionLinkSetStat extends SftpExtensionWithVersion { + + @Override + public SftpExtensionLinkSetStatHandler getHandler(SshContext context) { + return new SftpExtensionLinkSetStatHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionMakeTempFolder.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionMakeTempFolder.java new file mode 100644 index 000000000..e68cbe29a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionMakeTempFolder.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionMakeTempFolderHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionMakeTempFolder + extends SftpExtensionWithVersion { + + @Override + public SftpExtensionMakeTempFolderHandler getHandler(SshContext context) { + return new SftpExtensionMakeTempFolderHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionPosixRename.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionPosixRename.java new file mode 100644 index 000000000..78470ffaa --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionPosixRename.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionPosixRenameHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionPosixRename extends SftpExtensionWithVersion { + + @Override + public SftpExtensionPosixRenameHandler getHandler(SshContext context) { + return new SftpExtensionPosixRenameHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionSpaceAvailable.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionSpaceAvailable.java new file mode 100644 index 000000000..4d89ae6a4 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionSpaceAvailable.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionSpaceAvailableHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionSpaceAvailable + extends SftpExtensionWithVersion { + + @Override + public SftpExtensionSpaceAvailableHandler getHandler(SshContext context) { + return new SftpExtensionSpaceAvailableHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionStatVfs.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionStatVfs.java new file mode 100644 index 000000000..0c5606e55 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionStatVfs.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionStatVfsHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionStatVfs extends SftpExtensionWithVersion { + + @Override + public SftpExtensionStatVfsHandler getHandler(SshContext context) { + return new SftpExtensionStatVfsHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpUnknownExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUnknown.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpUnknownExtension.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUnknown.java index d7a36a6b1..3b46f2c61 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpUnknownExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUnknown.java @@ -10,10 +10,10 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpUnknownExtensionHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionUnknownHandler; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpUnknownExtension extends SftpAbstractExtension { +public class SftpExtensionUnknown extends SftpAbstractExtension { private ModifiableInteger valueLength; @@ -58,7 +58,7 @@ public void setValue(byte[] value, boolean adjustLengthField) { } @Override - public SftpUnknownExtensionHandler getHandler(SshContext context) { - return new SftpUnknownExtensionHandler(context, this); + public SftpExtensionUnknownHandler getHandler(SshContext context) { + return new SftpExtensionUnknownHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUsersGroupsById.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUsersGroupsById.java new file mode 100644 index 000000000..8d7a9e81a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUsersGroupsById.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionUsersGroupsByIdHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionUsersGroupsById + extends SftpExtensionWithVersion { + + @Override + public SftpExtensionUsersGroupsByIdHandler getHandler(SshContext context) { + return new SftpExtensionUsersGroupsByIdHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java new file mode 100644 index 000000000..dfc5c862b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java @@ -0,0 +1,166 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionVendorIdHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; + +public class SftpExtensionVendorId extends SftpAbstractExtension { + + private ModifiableInteger vendorNameLength; + private ModifiableString vendorName; + private ModifiableInteger productNameLength; + private ModifiableString productName; + private ModifiableInteger productVersionLength; + private ModifiableString productVersion; + private ModifiableLong productBuildNumber; + + public ModifiableInteger getVendorNameLength() { + return vendorNameLength; + } + + public void setVendorNameLength(ModifiableInteger vendorNameLength) { + this.vendorNameLength = vendorNameLength; + } + + public void setVendorNameLength(int vendorNameLength) { + this.vendorNameLength = + ModifiableVariableFactory.safelySetValue(this.vendorNameLength, vendorNameLength); + } + + public ModifiableString getVendorName() { + return vendorName; + } + + public void setVendorName(ModifiableString vendorName) { + setVendorName(vendorName, false); + } + + public void setVendorName(String vendorName) { + setVendorName(vendorName, false); + } + + public void setVendorName(ModifiableString vendorName, boolean adjustLengthField) { + if (adjustLengthField) { + setVendorNameLength(vendorName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.vendorName = vendorName; + } + + public void setVendorName(String vendorName, boolean adjustLengthField) { + if (adjustLengthField) { + setVendorNameLength(vendorName.getBytes(StandardCharsets.UTF_8).length); + } + this.vendorName = ModifiableVariableFactory.safelySetValue(this.vendorName, vendorName); + } + + public ModifiableInteger getProductNameLength() { + return productNameLength; + } + + public void setProductNameLength(ModifiableInteger productNameLength) { + this.productNameLength = productNameLength; + } + + public void setProductNameLength(int productNameLength) { + this.productNameLength = + ModifiableVariableFactory.safelySetValue(this.productNameLength, productNameLength); + } + + public ModifiableString getProductName() { + return productName; + } + + public void setProductName(ModifiableString productName) { + setProductName(productName, false); + } + + public void setProductName(String productName) { + setProductName(productName, false); + } + + public void setProductName(ModifiableString productName, boolean adjustLengthField) { + if (adjustLengthField) { + setProductNameLength(productName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.productName = productName; + } + + public void setProductName(String productName, boolean adjustLengthField) { + if (adjustLengthField) { + setProductNameLength(productName.getBytes(StandardCharsets.UTF_8).length); + } + this.productName = ModifiableVariableFactory.safelySetValue(this.productName, productName); + } + + public ModifiableInteger getProductVersionLength() { + return productVersionLength; + } + + public void setProductVersionLength(ModifiableInteger productVersionLength) { + this.productVersionLength = productVersionLength; + } + + public void setProductVersionLength(int productVersionLength) { + this.productVersionLength = + ModifiableVariableFactory.safelySetValue( + this.productVersionLength, productVersionLength); + } + + public ModifiableString getProductVersion() { + return productVersion; + } + + public void setProductVersion(ModifiableString productVersion) { + setProductVersion(productVersion, false); + } + + public void setProductVersion(String productVersion) { + setProductVersion(productVersion, false); + } + + public void setProductVersion(ModifiableString productVersion, boolean adjustLengthField) { + if (adjustLengthField) { + setProductVersionLength( + productVersion.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.productVersion = productVersion; + } + + public void setProductVersion(String productVersion, boolean adjustLengthField) { + if (adjustLengthField) { + setProductVersionLength(productVersion.getBytes(StandardCharsets.UTF_8).length); + } + this.productVersion = + ModifiableVariableFactory.safelySetValue(this.productVersion, productVersion); + } + + public ModifiableLong getProductBuildNumber() { + return productBuildNumber; + } + + public void setProductBuildNumber(ModifiableLong productBuildNumber) { + this.productBuildNumber = productBuildNumber; + } + + public void setProductBuildNumber(long productBuildNumber) { + this.productBuildNumber = + ModifiableVariableFactory.safelySetValue( + this.productBuildNumber, productBuildNumber); + } + + @Override + public SftpExtensionVendorIdHandler getHandler(SshContext context) { + return new SftpExtensionVendorIdHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionWithVersion.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionWithVersion.java new file mode 100644 index 000000000..f1256b626 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionWithVersion.java @@ -0,0 +1,58 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import java.nio.charset.StandardCharsets; + +public abstract class SftpExtensionWithVersion> + extends SftpAbstractExtension { + private ModifiableString version; + private ModifiableInteger versionLength; + + public ModifiableInteger getVersionLength() { + return versionLength; + } + + public void setVersionLength(ModifiableInteger versionLength) { + this.versionLength = versionLength; + } + + public void setVersionLength(int versionLength) { + this.versionLength = + ModifiableVariableFactory.safelySetValue(this.versionLength, versionLength); + } + + public ModifiableString getVersion() { + return version; + } + + public void setVersion(ModifiableString version) { + setVersion(version, false); + } + + public void setVersion(String version) { + setVersion(version, false); + } + + public void setVersion(ModifiableString version, boolean adjustLengthField) { + if (adjustLengthField) { + setVersionLength(version.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + this.version = version; + } + + public void setVersion(String version, boolean adjustLengthField) { + if (adjustLengthField) { + setVersionLength(version.getBytes(StandardCharsets.US_ASCII).length); + } + this.version = ModifiableVariableFactory.safelySetValue(this.version, version); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java index d68f0d779..4727af202 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java @@ -10,9 +10,10 @@ import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.*; import de.rub.nds.sshattacker.core.data.sftp.message.SftpHandshakeMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpAbstractExtensionParser; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpUnknownExtensionParser; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionUnknownParser; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -47,13 +48,100 @@ private void parseExtensions() { parseByteString(extensionNameLength, StandardCharsets.US_ASCII)); SftpAbstractExtensionParser extensionParser; switch (extension) { + case VENDOR_ID: + extensionParser = + new SftpExtensionVendorIdHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case CHECK_FILE: + extensionParser = + new SftpExtensionCheckFileHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case SPACE_AVAILABLE: + extensionParser = + new SftpExtensionSpaceAvailableHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case HOME_DIRECTORY: + extensionParser = + new SftpExtensionHomeDirectoryHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case COPY_FILE: + extensionParser = + new SftpExtensionCopyFileHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case COPY_DATA: + extensionParser = + new SftpExtensionCopyDataHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case GET_TEMP_FOLDER: + extensionParser = + new SftpExtensionGetTempFolderHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case MAKE_TEMP_FOLDER: + extensionParser = + new SftpExtensionMakeTempFolderHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + // Vendor extensions + case POSIX_RENAME_OPENSSH_COM: + extensionParser = + new SftpExtensionPosixRenameHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case STAT_VFS_OPENSSH_COM: + extensionParser = + new SftpExtensionStatVfsHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case F_STAT_VFS_OPENSSH_COM: + extensionParser = + new SftpExtensionFileStatVfsHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case HARDLINK_OPENSSH_COM: + extensionParser = + new SftpExtensionHardlinkHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case FSYNC_OPENSSH_COM: + extensionParser = + new SftpExtensionFileSyncHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case L_SET_STAT: + extensionParser = + new SftpExtensionLinkSetStatHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case LIMITS: + extensionParser = + new SftpExtensionLimitsHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case EXPAND_PATH: + extensionParser = + new SftpExtensionExpandPathHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case USERS_GROUPS_BY_ID: + extensionParser = + new SftpExtensionUsersGroupsByIdHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + default: LOGGER.debug( "Extension [{}] (index {}) is unknown or not implemented, parsing as UnknownExtension", extension, extensionIndex); extensionParser = - new SftpUnknownExtensionParser(getArray(), extensionStartPointer); + new SftpExtensionUnknownParser(getArray(), extensionStartPointer); break; } message.addExtension(extensionParser.parse()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestExtendedMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestExtendedMessageParser.java new file mode 100644 index 000000000..3e580c23e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestExtendedMessageParser.java @@ -0,0 +1,52 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestExtendedMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpRequestExtendedMessageParser> + extends SftpRequestMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpRequestExtendedMessageParser(byte[] array) { + super(array); + } + + protected SftpRequestExtendedMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseExtendedRequestName() { + message.setExtendedRequestNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug( + "ExtendedRequestName length: {}", + message.getExtendedRequestNameLength().getValue()); + message.setExtendedRequestName( + parseByteString( + message.getExtendedRequestNameLength().getValue(), + StandardCharsets.US_ASCII)); + LOGGER.debug( + "ExtendedRequestName: {}", + () -> backslashEscapeString(message.getExtendedRequestName().getValue())); + } + + @Override + protected void parseRequestSpecificContents() { + parseExtendedRequestName(); + parseRequestExtendedSpecificContents(); + } + + protected abstract void parseRequestExtendedSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java index 62e93dcf3..591fdb178 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java @@ -13,6 +13,7 @@ import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.protocol.common.Parser; import java.nio.charset.StandardCharsets; +import java.util.function.Supplier; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -21,18 +22,19 @@ public abstract class SftpAbstractExtensionParser extensionFactory, byte[] array) { super(array); + extension = extensionFactory.get(); } - protected SftpAbstractExtensionParser(byte[] array, int startPosition) { + protected SftpAbstractExtensionParser( + Supplier extensionFactory, byte[] array, int startPosition) { super(array, startPosition); + extension = extensionFactory.get(); } - protected abstract E createExtension(); - @Override public final E parse() { parseExtensionName(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpUnknownExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionUnknownParser.java similarity index 71% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpUnknownExtensionParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionUnknownParser.java index 8b44c4314..bd6195cc8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpUnknownExtensionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionUnknownParser.java @@ -9,25 +9,20 @@ import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpUnknownExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionUnknown; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SftpUnknownExtensionParser extends SftpAbstractExtensionParser { +public class SftpExtensionUnknownParser extends SftpAbstractExtensionParser { private static final Logger LOGGER = LogManager.getLogger(); - public SftpUnknownExtensionParser(byte[] array) { - super(array); + public SftpExtensionUnknownParser(byte[] array) { + super(SftpExtensionUnknown::new, array); } - public SftpUnknownExtensionParser(byte[] array, int startPosition) { - super(array, startPosition); - } - - @Override - protected SftpUnknownExtension createExtension() { - return new SftpUnknownExtension(); + public SftpExtensionUnknownParser(byte[] array, int startPosition) { + super(SftpExtensionUnknown::new, array, startPosition); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java new file mode 100644 index 000000000..a441a5c30 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java @@ -0,0 +1,76 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extension; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionVendorId; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpExtensionVendorIdParser + extends SftpAbstractExtensionParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpExtensionVendorIdParser(byte[] array) { + super(SftpExtensionVendorId::new, array); + } + + public SftpExtensionVendorIdParser(byte[] array, int startPosition) { + super(SftpExtensionVendorId::new, array, startPosition); + } + + private void parseVendorName() { + extension.setVendorNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("VendorName length: {}", extension.getVendorNameLength().getValue()); + extension.setVendorName( + parseByteString( + extension.getVendorNameLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug( + "VendorName: {}", + () -> backslashEscapeString(extension.getVendorName().getValue())); + } + + private void parseProductName() { + extension.setProductNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("ProductName length: {}", extension.getProductNameLength().getValue()); + extension.setProductName( + parseByteString( + extension.getProductNameLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug( + "ProductName: {}", + () -> backslashEscapeString(extension.getProductName().getValue())); + } + + private void parseProductVersion() { + extension.setProductVersionLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("ProductVersion length: {}", extension.getProductVersionLength().getValue()); + extension.setProductVersion( + parseByteString( + extension.getProductVersionLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug( + "ProductVersion: {}", + () -> backslashEscapeString(extension.getProductVersion().getValue())); + } + + private void parseProductBuildNumber() { + extension.setProductBuildNumber(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("ProductBuildNumber: {}", extension.getProductBuildNumber().getValue()); + } + + @Override + protected void parseExtensionValue() { + parseVendorName(); + parseProductName(); + parseProductVersion(); + parseProductBuildNumber(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionWithVersionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionWithVersionParser.java new file mode 100644 index 000000000..e713064f6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionWithVersionParser.java @@ -0,0 +1,46 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extension; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionWithVersion; +import java.nio.charset.StandardCharsets; +import java.util.function.Supplier; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpExtensionWithVersionParser> + extends SftpAbstractExtensionParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpExtensionWithVersionParser(Supplier extensionFactory, byte[] array) { + super(extensionFactory, array); + } + + public SftpExtensionWithVersionParser( + Supplier extensionFactory, byte[] array, int startPosition) { + super(extensionFactory, array, startPosition); + } + + private void parseVersion() { + extension.setVersionLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("Version length: {}", extension.getVersionLength().getValue()); + extension.setVersion( + parseByteString( + extension.getVersionLength().getValue(), StandardCharsets.US_ASCII)); + LOGGER.debug("Version: {}", () -> backslashEscapeString(extension.getVersion().getValue())); + } + + @Override + protected void parseExtensionValue() { + parseVersion(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestExtendedMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestExtendedMessagePreparator.java new file mode 100644 index 000000000..0af73a1b3 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestExtendedMessagePreparator.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestExtendedMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public abstract class SftpRequestExtendedMessagePreparator> + extends SftpRequestMessagePreparator { + + private final String extendedRequestName; + + protected SftpRequestExtendedMessagePreparator( + Chooser chooser, T message, SftpExtension extendedRequestName) { + this(chooser, message, extendedRequestName.getName()); + } + + protected SftpRequestExtendedMessagePreparator( + Chooser chooser, T message, String extendedRequestName) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_EXTENDED); + this.extendedRequestName = extendedRequestName; + } + + @Override + public void prepareRequestSpecificContents() { + getObject().setExtendedRequestName(extendedRequestName); + prepareRequestExtendedSpecificContents(); + } + + protected abstract void prepareRequestExtendedSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java index 738cbc158..ffa472261 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java @@ -21,7 +21,7 @@ public SftpFileExtendedAttributePreparator( @Override public final void prepare() { if (getObject().getType() == null) { - getObject().setType("hello-from@ssh-attacker", true); + getObject().setType("hello-from@ssh-attacker.de", true); } if (getObject().getTypeLength() == null) { getObject().setTypeLength(getObject().getType().getValue().length()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java index fd2dc08ea..62f6f0cae 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; +import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -14,12 +15,28 @@ public abstract class SftpAbstractExtensionPreparator> extends Preparator { + private final String extensionName; + protected SftpAbstractExtensionPreparator(Chooser chooser, E extension) { super(chooser, extension); + extensionName = null; + } + + protected SftpAbstractExtensionPreparator( + Chooser chooser, E extension, SftpExtension extensionName) { + this(chooser, extension, extensionName.getName()); + } + + protected SftpAbstractExtensionPreparator(Chooser chooser, E extension, String extensionName) { + super(chooser, extension); + this.extensionName = extensionName; } @Override public void prepare() { + if (extensionName != null) { + getObject().setName(extensionName); + } prepareExtensionSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java similarity index 77% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java index eddc6aad5..0f33b5f4c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpUnknownExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java @@ -7,20 +7,20 @@ */ package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpUnknownExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionUnknown; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -public class SftpUnknownExtensionPreparator - extends SftpAbstractExtensionPreparator { +public class SftpExtensionUnknownPreparator + extends SftpAbstractExtensionPreparator { - public SftpUnknownExtensionPreparator(Chooser chooser, SftpUnknownExtension extension) { + public SftpExtensionUnknownPreparator(Chooser chooser, SftpExtensionUnknown extension) { super(chooser, extension); } @Override public void prepareExtensionSpecificContents() { if (getObject().getName() == null) { - getObject().setName("hello-from@ssh-attacker", true); + getObject().setName("hello-from@ssh-attacker.de", true); } if (getObject().getNameLength() == null) { getObject().setNameLength(getObject().getName().getValue().length()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java new file mode 100644 index 000000000..35314a66f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2023 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionVendorId; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpExtensionVendorIdPreparator + extends SftpAbstractExtensionPreparator { + + public SftpExtensionVendorIdPreparator(Chooser chooser, SftpExtensionVendorId extension) { + super(chooser, extension); + } + + @Override + public void prepareExtensionSpecificContents() { + getObject().setName(SftpExtension.VENDOR_ID, true); + + if (getObject().getVendorName() == null) { + getObject().setVendorName("NDS RUB", true); + } + if (getObject().getVendorNameLength() == null) { + getObject().setVendorNameLength(getObject().getVendorName().getValue().length()); + } + + if (getObject().getProductName() == null) { + getObject().setProductName("SSH-Attacker", true); + } + if (getObject().getProductNameLength() == null) { + getObject().setProductNameLength(getObject().getProductName().getValue().length()); + } + + if (getObject().getProductVersion() == null) { + getObject().setProductVersion("1.0", true); + } + if (getObject().getProductVersionLength() == null) { + getObject() + .setProductVersionLength(getObject().getProductVersion().getValue().length()); + } + + if (getObject().getProductBuildNumber() == null) { + getObject().setProductBuildNumber(2024); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java new file mode 100644 index 000000000..0ba656e08 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2023 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionWithVersion; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpExtensionWithVersionPreparator> + extends SftpAbstractExtensionPreparator { + + private final String extensionName; + + public SftpExtensionWithVersionPreparator( + Chooser chooser, T extension, SftpExtension extensionName) { + super(chooser, extension); + this.extensionName = extensionName.getName(); + } + + @Override + public void prepareExtensionSpecificContents() { + getObject().setName(extensionName, true); + + if (getObject().getVersion() == null) { + getObject().setVersion("1", true); + } + if (getObject().getVersionLength() == null) { + getObject().setVersionLength(getObject().getVersion().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestExtendedMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestExtendedMessageSerializer.java new file mode 100644 index 000000000..4cbf7a12f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestExtendedMessageSerializer.java @@ -0,0 +1,47 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestExtendedMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpRequestExtendedMessageSerializer> + extends SftpRequestMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpRequestExtendedMessageSerializer(T message) { + super(message); + } + + private void serializeExtendedRequestName() { + LOGGER.debug( + "ExtendedRequestName length: {}", + message.getExtendedRequestNameLength().getValue()); + appendInt( + message.getExtendedRequestNameLength().getValue(), + DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "ExtendedRequestName: {}", + () -> backslashEscapeString(message.getExtendedRequestName().getValue())); + appendString(message.getExtendedRequestName().getValue(), StandardCharsets.US_ASCII); + } + + @Override + protected void serializeRequestSpecificContents() { + serializeExtendedRequestName(); + serializeRequestExtendedSpecificContents(); + } + + protected abstract void serializeRequestExtendedSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionUnknownSerializer.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionUnknownSerializer.java index 4a02d1712..ad2a5411b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpUnknownExtensionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionUnknownSerializer.java @@ -9,16 +9,16 @@ import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpUnknownExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionUnknown; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SftpUnknownExtensionSerializer - extends SftpAbstractExtensionSerializer { +public class SftpExtensionUnknownSerializer + extends SftpAbstractExtensionSerializer { private static final Logger LOGGER = LogManager.getLogger(); - public SftpUnknownExtensionSerializer(SftpUnknownExtension extension) { + public SftpExtensionUnknownSerializer(SftpExtensionUnknown extension) { super(extension); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java new file mode 100644 index 000000000..1c7f3d20d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java @@ -0,0 +1,71 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extension; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionVendorId; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpExtensionVendorIdSerializer + extends SftpAbstractExtensionSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpExtensionVendorIdSerializer(SftpExtensionVendorId extension) { + super(extension); + } + + private void serializeVendorName() { + LOGGER.debug("VendorName length: {}", extension.getVendorNameLength().getValue()); + appendInt( + extension.getVendorNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "VendorName: {}", + () -> backslashEscapeString(extension.getVendorName().getValue())); + appendString(extension.getVendorName().getValue(), StandardCharsets.UTF_8); + } + + private void serializeProductName() { + LOGGER.debug("ProductName length: {}", extension.getProductNameLength().getValue()); + appendInt( + extension.getProductNameLength().getValue(), + DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "ProductName: {}", + () -> backslashEscapeString(extension.getProductName().getValue())); + appendString(extension.getProductName().getValue(), StandardCharsets.UTF_8); + } + + private void serializeProductVersion() { + LOGGER.debug("ProductVersion length: {}", extension.getProductVersionLength().getValue()); + appendInt( + extension.getProductVersionLength().getValue(), + DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "ProductVersion: {}", + () -> backslashEscapeString(extension.getProductVersion().getValue())); + appendString(extension.getProductVersion().getValue(), StandardCharsets.UTF_8); + } + + private void serializeProductBuildNumber() { + LOGGER.debug("ProductBuildNumber: {}", extension.getProductBuildNumber().getValue()); + appendLong(extension.getProductBuildNumber().getValue(), DataFormatConstants.UINT64_SIZE); + } + + @Override + protected void serializeExtensionValue() { + serializeVendorName(); + serializeProductName(); + serializeProductVersion(); + serializeProductBuildNumber(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionWithVersionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionWithVersionSerializer.java new file mode 100644 index 000000000..2520d9a14 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionWithVersionSerializer.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extension; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionWithVersion; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpExtensionWithVersionSerializer> + extends SftpAbstractExtensionSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpExtensionWithVersionSerializer(T extension) { + super(extension); + } + + private void serializeVersion() { + LOGGER.debug("Version length: {}", extension.getVersionLength().getValue()); + appendInt(extension.getVersionLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("Version: {}", () -> backslashEscapeString(extension.getVersion().getValue())); + appendString(extension.getVersion().getValue(), StandardCharsets.US_ASCII); + } + + @Override + protected void serializeExtensionValue() { + serializeVersion(); + } +} From 894cb1b521141569f5d59869f730ac1c75a5ed8b Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Fri, 1 Nov 2024 19:59:28 +0100 Subject: [PATCH 031/203] move SFTP Requests and Responses to sub packages --- .../sshattacker/core/constants/SftpExtension.java | 2 +- .../core/data/sftp/SftpMessageParser.java | 2 ++ .../extension/SftpExtensionCheckFileHandler.java | 1 - .../extension/SftpExtensionFileSyncHandler.java | 2 +- .../SftpRequestCloseMessageHandler.java | 10 +++++----- .../SftpRequestFileSetStatMessageHandler.java | 10 +++++----- .../SftpRequestFileStatMessageHandler.java | 10 +++++----- .../SftpRequestLinkStatMessageHandler.java | 10 +++++----- .../SftpRequestMakeDirMessageHandler.java | 10 +++++----- .../SftpRequestOpenDirMessageHandler.java | 10 +++++----- .../SftpRequestOpenMessageHandler.java | 10 +++++----- .../SftpRequestReadDirMessageHandler.java | 10 +++++----- .../SftpRequestReadLinkMessageHandler.java | 10 +++++----- .../SftpRequestReadMessageHandler.java | 10 +++++----- .../SftpRequestRealPathMessageHandler.java | 10 +++++----- .../SftpRequestRemoveDirMessageHandler.java | 10 +++++----- .../SftpRequestRemoveMessageHandler.java | 10 +++++----- .../SftpRequestRenameMessageHandler.java | 10 +++++----- .../SftpRequestSetStatMessageHandler.java | 10 +++++----- .../SftpRequestStatMessageHandler.java | 10 +++++----- .../SftpRequestSymbolicLinkMessageHandler.java | 10 +++++----- .../SftpRequestWriteMessageHandler.java | 10 +++++----- .../SftpResponseAttributesMessageHandler.java | 10 +++++----- .../SftpResponseDataMessageHandler.java | 10 +++++----- .../SftpResponseHandleMessageHandler.java | 10 +++++----- .../SftpResponseNameEntryHandler.java | 10 +++++----- .../SftpResponseNameMessageHandler.java | 10 +++++----- .../SftpResponseStatusMessageHandler.java | 10 +++++----- .../SftpRequestExtendedMessage.java | 12 +++++++++++- .../message/extension/SftpExtensionVendorId.java | 15 +++++++++++++++ .../{ => request}/SftpRequestCloseMessage.java | 4 ++-- .../SftpRequestFileSetStatMessage.java | 4 ++-- .../{ => request}/SftpRequestFileStatMessage.java | 4 ++-- .../{ => request}/SftpRequestLinkStatMessage.java | 4 ++-- .../{ => request}/SftpRequestMakeDirMessage.java | 4 ++-- .../message/{ => request}/SftpRequestMessage.java | 2 +- .../{ => request}/SftpRequestOpenDirMessage.java | 4 ++-- .../{ => request}/SftpRequestOpenMessage.java | 4 ++-- .../{ => request}/SftpRequestReadDirMessage.java | 4 ++-- .../{ => request}/SftpRequestReadLinkMessage.java | 4 ++-- .../{ => request}/SftpRequestReadMessage.java | 4 ++-- .../{ => request}/SftpRequestRealPathMessage.java | 4 ++-- .../{ => request}/SftpRequestRemoveMessage.java | 4 ++-- .../{ => request}/SftpRequestRenameMessage.java | 4 ++-- .../{ => request}/SftpRequestRmdirMessage.java | 4 ++-- .../{ => request}/SftpRequestSetStatMessage.java | 4 ++-- .../{ => request}/SftpRequestStatMessage.java | 4 ++-- .../SftpRequestSymbolicLinkMessage.java | 7 +++++-- .../SftpRequestWithHandleMessage.java | 2 +- .../{ => request}/SftpRequestWithPathMessage.java | 2 +- .../{ => request}/SftpRequestWriteMessage.java | 4 ++-- .../SftpResponseAttributesMessage.java | 4 ++-- .../{ => response}/SftpResponseDataMessage.java | 4 ++-- .../{ => response}/SftpResponseHandleMessage.java | 4 ++-- .../{ => response}/SftpResponseMessage.java | 2 +- .../{ => response}/SftpResponseNameEntry.java | 4 ++-- .../{ => response}/SftpResponseNameMessage.java | 4 ++-- .../{ => response}/SftpResponseStatusMessage.java | 4 ++-- .../sftp/parser/SftpHandshakeMessageParser.java | 2 +- .../SftpRequestExtendedMessageParser.java | 5 +++-- .../extension/SftpExtensionVendorIdParser.java | 6 ++++++ .../SftpRequestCloseMessageParser.java | 4 ++-- .../SftpRequestFileSetStatMessageParser.java | 4 ++-- .../SftpRequestFileStatMessageParser.java | 4 ++-- .../SftpRequestLinkStatMessageParser.java | 4 ++-- .../SftpRequestMakeDirMessageParser.java | 4 ++-- .../{ => request}/SftpRequestMessageParser.java | 4 ++-- .../SftpRequestOpenDirMessageParser.java | 4 ++-- .../SftpRequestOpenMessageParser.java | 4 ++-- .../SftpRequestReadDirMessageParser.java | 4 ++-- .../SftpRequestReadLinkMessageParser.java | 4 ++-- .../SftpRequestReadMessageParser.java | 4 ++-- .../SftpRequestRealPathMessageParser.java | 4 ++-- .../SftpRequestRemoveDirMessageParser.java | 4 ++-- .../SftpRequestRemoveMessageParser.java | 4 ++-- .../SftpRequestRenameMessageParser.java | 4 ++-- .../SftpRequestSetStatMessageParser.java | 4 ++-- .../SftpRequestStatMessageParser.java | 4 ++-- .../SftpRequestSymbolicLinkMessageParser.java | 4 ++-- .../SftpRequestWithHandleMessageParser.java | 4 ++-- .../SftpRequestWithPathMessageParser.java | 4 ++-- .../SftpRequestWriteMessageParser.java | 4 ++-- .../SftpResponseAttributesMessageParser.java | 4 ++-- .../SftpResponseDataMessageParser.java | 4 ++-- .../SftpResponseHandleMessageParser.java | 4 ++-- .../{ => response}/SftpResponseMessageParser.java | 4 ++-- .../SftpResponseNameEntryParser.java | 4 ++-- .../SftpResponseNameMessageParser.java | 4 ++-- .../SftpResponseStatusMessageParser.java | 4 ++-- .../SftpRequestExtendedMessagePreparator.java | 5 +++-- .../SftpExtensionVendorIdPreparator.java | 10 ++++++++++ .../SftpRequestCloseMessagePreparator.java | 4 ++-- .../SftpRequestFileSetStatMessagePreparator.java | 4 ++-- .../SftpRequestFileStatMessagePreparator.java | 4 ++-- .../SftpRequestLinkStatMessagePreparator.java | 4 ++-- .../SftpRequestMakeDirMessagePreparator.java | 4 ++-- .../SftpRequestMessagePreparator.java | 4 ++-- .../SftpRequestOpenDirMessagePreparator.java | 4 ++-- .../SftpRequestOpenMessagePreparator.java | 4 ++-- .../SftpRequestReadDirMessagePreparator.java | 4 ++-- .../SftpRequestReadLinkMessagePreparator.java | 4 ++-- .../SftpRequestReadMessagePreparator.java | 4 ++-- .../SftpRequestRealPathMessagePreparator.java | 4 ++-- .../SftpRequestRemoveDirMessagePreparator.java | 4 ++-- .../SftpRequestRemoveMessagePreparator.java | 4 ++-- .../SftpRequestRenameMessagePreparator.java | 4 ++-- .../SftpRequestSetStatMessagePreparator.java | 4 ++-- .../SftpRequestStatMessagePreparator.java | 4 ++-- .../SftpRequestSymbolicLinkMessagePreparator.java | 4 ++-- .../SftpRequestWriteMessagePreparator.java | 4 ++-- .../SftpResponseAttributesMessagePreparator.java | 4 ++-- .../SftpResponseDataMessagePreparator.java | 4 ++-- .../SftpResponseHandleMessagePreparator.java | 4 ++-- .../SftpResponseMessagePreparator.java | 4 ++-- .../SftpResponseNameEntryPreparator.java | 4 ++-- .../SftpResponseNameMessagePreparator.java | 4 ++-- .../SftpResponseStatusMessagePreparator.java | 4 ++-- .../SftpRequestExtendedMessageSerializer.java | 5 +++-- .../SftpExtensionVendorIdSerializer.java | 6 ++++++ .../SftpRequestCloseMessageSerializer.java | 4 ++-- .../SftpRequestFileSetStatMessageSerializer.java | 4 ++-- .../SftpRequestFileStatMessageSerializer.java | 4 ++-- .../SftpRequestLinkStatMessageSerializer.java | 4 ++-- .../SftpRequestMakeDirMessageSerializer.java | 4 ++-- .../SftpRequestMessageSerializer.java | 4 ++-- .../SftpRequestOpenDirMessageSerializer.java | 4 ++-- .../SftpRequestOpenMessageSerializer.java | 4 ++-- .../SftpRequestReadDirMessageSerializer.java | 4 ++-- .../SftpRequestReadLinkMessageSerializer.java | 4 ++-- .../SftpRequestReadMessageSerializer.java | 4 ++-- .../SftpRequestRealPathMessageSerializer.java | 4 ++-- .../SftpRequestRemoveDirMessageSerializer.java | 4 ++-- .../SftpRequestRemoveMessageSerializer.java | 4 ++-- .../SftpRequestRenameMessageSerializer.java | 4 ++-- .../SftpRequestSetStatMessageSerializer.java | 4 ++-- .../SftpRequestStatMessageSerializer.java | 4 ++-- .../SftpRequestSymbolicLinkMessageSerializer.java | 4 ++-- .../SftpRequestWithHandleMessageSerializer.java | 4 ++-- .../SftpRequestWithPathMessageSerializer.java | 4 ++-- .../SftpRequestWriteMessageSerializer.java | 4 ++-- .../SftpResponseAttributesMessageSerializer.java | 4 ++-- .../SftpResponseDataMessageSerializer.java | 4 ++-- .../SftpResponseHandleMessageSerializer.java | 4 ++-- .../SftpResponseMessageSerializer.java | 4 ++-- .../SftpResponseNameEntrySerializer.java | 4 ++-- .../SftpResponseNameMessageSerializer.java | 4 ++-- .../SftpResponseStatusMessageSerializer.java | 4 ++-- .../factory/WorkflowConfigurationFactory.java | 4 ++-- 148 files changed, 403 insertions(+), 349 deletions(-) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestCloseMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestFileSetStatMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestFileStatMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestLinkStatMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestMakeDirMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestOpenDirMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestOpenMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestReadDirMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestReadLinkMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestReadMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestRealPathMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestRemoveDirMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestRemoveMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestRenameMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestSetStatMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestStatMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestSymbolicLinkMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => request}/SftpRequestWriteMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => response}/SftpResponseAttributesMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => response}/SftpResponseDataMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => response}/SftpResponseHandleMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => response}/SftpResponseNameEntryHandler.java (77%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => response}/SftpResponseNameMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{ => response}/SftpResponseStatusMessageHandler.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => extended}/SftpRequestExtendedMessage.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestCloseMessage.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestFileSetStatMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestFileStatMessage.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestLinkStatMessage.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestMakeDirMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestMessage.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestOpenDirMessage.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestOpenMessage.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestReadDirMessage.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestReadLinkMessage.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestReadMessage.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestRealPathMessage.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestRemoveMessage.java (79%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestRenameMessage.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestRmdirMessage.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestSetStatMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestStatMessage.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestSymbolicLinkMessage.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestWithHandleMessage.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestWithPathMessage.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => request}/SftpRequestWriteMessage.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => response}/SftpResponseAttributesMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => response}/SftpResponseDataMessage.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => response}/SftpResponseHandleMessage.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => response}/SftpResponseMessage.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => response}/SftpResponseNameEntry.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => response}/SftpResponseNameMessage.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{ => response}/SftpResponseStatusMessage.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => extended}/SftpRequestExtendedMessageParser.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestCloseMessageParser.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestFileSetStatMessageParser.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestFileStatMessageParser.java (84%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestLinkStatMessageParser.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestMakeDirMessageParser.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestMessageParser.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestOpenDirMessageParser.java (84%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestOpenMessageParser.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestReadDirMessageParser.java (84%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestReadLinkMessageParser.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestReadMessageParser.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestRealPathMessageParser.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestRemoveDirMessageParser.java (84%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestRemoveMessageParser.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestRenameMessageParser.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestSetStatMessageParser.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestStatMessageParser.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestSymbolicLinkMessageParser.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestWithHandleMessageParser.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestWithPathMessageParser.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => request}/SftpRequestWriteMessageParser.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => response}/SftpResponseAttributesMessageParser.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => response}/SftpResponseDataMessageParser.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => response}/SftpResponseHandleMessageParser.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => response}/SftpResponseMessageParser.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => response}/SftpResponseNameEntryParser.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => response}/SftpResponseNameMessageParser.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{ => response}/SftpResponseStatusMessageParser.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => extended}/SftpRequestExtendedMessagePreparator.java (84%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestCloseMessagePreparator.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestFileSetStatMessagePreparator.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestFileStatMessagePreparator.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestLinkStatMessagePreparator.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestMakeDirMessagePreparator.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestMessagePreparator.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestOpenDirMessagePreparator.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestOpenMessagePreparator.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestReadDirMessagePreparator.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestReadLinkMessagePreparator.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestReadMessagePreparator.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestRealPathMessagePreparator.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestRemoveDirMessagePreparator.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestRemoveMessagePreparator.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestRenameMessagePreparator.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestSetStatMessagePreparator.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestStatMessagePreparator.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestSymbolicLinkMessagePreparator.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => request}/SftpRequestWriteMessagePreparator.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => response}/SftpResponseAttributesMessagePreparator.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => response}/SftpResponseDataMessagePreparator.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => response}/SftpResponseHandleMessagePreparator.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => response}/SftpResponseMessagePreparator.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => response}/SftpResponseNameEntryPreparator.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => response}/SftpResponseNameMessagePreparator.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{ => response}/SftpResponseStatusMessagePreparator.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => extended}/SftpRequestExtendedMessageSerializer.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestCloseMessageSerializer.java (79%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestFileSetStatMessageSerializer.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestFileStatMessageSerializer.java (80%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestLinkStatMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestMakeDirMessageSerializer.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestMessageSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestOpenDirMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestOpenMessageSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestReadDirMessageSerializer.java (79%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestReadLinkMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestReadMessageSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestRealPathMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestRemoveDirMessageSerializer.java (79%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestRemoveMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestRenameMessageSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestSetStatMessageSerializer.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestStatMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestSymbolicLinkMessageSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestWithHandleMessageSerializer.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestWithPathMessageSerializer.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => request}/SftpRequestWriteMessageSerializer.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => response}/SftpResponseAttributesMessageSerializer.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => response}/SftpResponseDataMessageSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => response}/SftpResponseHandleMessageSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => response}/SftpResponseMessageSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => response}/SftpResponseNameEntrySerializer.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => response}/SftpResponseNameMessageSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{ => response}/SftpResponseStatusMessageSerializer.java (93%) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java index 623b173d5..4f0237ffe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java @@ -49,7 +49,7 @@ public enum SftpExtension { STAT_VFS_OPENSSH_COM("statvfs@openssh.com"), F_STAT_VFS_OPENSSH_COM("fstatvfs@openssh.com"), HARDLINK_OPENSSH_COM("hardlink@openssh.com"), - FSYNC_OPENSSH_COM("fsync@openssh.com"), + F_SYNC_OPENSSH_COM("fsync@openssh.com"), L_SET_STAT("lsetstat@openssh.com"), LIMITS("limits@openssh.com"), EXPAND_PATH("expand-path@openssh.com"), diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java index 12cd2a5f6..c40a8584c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java @@ -11,6 +11,8 @@ import de.rub.nds.sshattacker.core.constants.SshMessageConstants; import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; import de.rub.nds.sshattacker.core.data.sftp.parser.*; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.*; +import de.rub.nds.sshattacker.core.data.sftp.parser.response.*; import de.rub.nds.sshattacker.core.exceptions.ParserException; import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessageParser; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCheckFileHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCheckFileHandler.java index 1385f1dab..ffce6545c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCheckFileHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCheckFileHandler.java @@ -35,7 +35,6 @@ public SftpExtensionWithVersionParser getParser(byte[] a return new SftpExtensionWithVersionParser<>(SftpExtensionCheckFile::new, array); } - @Override public SftpExtensionWithVersionParser getParser( byte[] array, int startPosition) { return new SftpExtensionWithVersionParser<>( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileSyncHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileSyncHandler.java index cbd0abcc9..89299628c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileSyncHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileSyncHandler.java @@ -45,7 +45,7 @@ public SftpExtensionWithVersionParser getParser( @Override public SftpExtensionWithVersionPreparator getPreparator() { return new SftpExtensionWithVersionPreparator<>( - context.getChooser(), extension, SftpExtension.FSYNC_OPENSSH_COM); + context.getChooser(), extension, SftpExtension.F_SYNC_OPENSSH_COM); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestCloseMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestCloseMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestCloseMessageHandler.java index 7a091ce1d..75bc971e9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestCloseMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestCloseMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestCloseMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestCloseMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestCloseMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestCloseMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestCloseMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestCloseMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestCloseMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestCloseMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestCloseMessageHandler extends SftpMessageHandler { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestFileSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestFileSetStatMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java index fecd7437e..2862fa542 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestFileSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileSetStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestFileSetStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestFileSetStatMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestFileSetStatMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestFileSetStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestFileSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestFileSetStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileSetStatMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestFileStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestFileStatMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java index fcceb3724..e2d01dd15 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestFileStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestFileStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestFileStatMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestFileStatMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestFileStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestFileStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestFileStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileStatMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestLinkStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestLinkStatMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestLinkStatMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestLinkStatMessageHandler.java index 6faefdf39..592489632 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestLinkStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestLinkStatMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestLinkStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestLinkStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestLinkStatMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestLinkStatMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestLinkStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestLinkStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestLinkStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestLinkStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestLinkStatMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMakeDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMakeDirMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java index 2bae7f063..b9ecde2d4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestMakeDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMakeDirMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestMakeDirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestMakeDirMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestMakeDirMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMakeDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestMakeDirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestMakeDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestMakeDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestMakeDirMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpenDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenDirMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpenDirMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenDirMessageHandler.java index 7d65a151e..3d1e559bb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpenDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenDirMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenDirMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestOpenDirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestOpenDirMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestOpenDirMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestOpenDirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestOpenDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestOpenDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestOpenDirMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpenMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpenMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java index 2d63f897d..ea50f6e06 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestOpenMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestOpenMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestOpenMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestOpenMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestOpenMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestOpenMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestOpenMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestOpenMessageHandler extends SftpMessageHandler { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadDirMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadDirMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadDirMessageHandler.java index ef85accbc..29d191a87 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadDirMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadDirMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestReadDirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestReadDirMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestReadDirMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestReadDirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestReadDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestReadDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestReadDirMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadLinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadLinkMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadLinkMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadLinkMessageHandler.java index c40f2c068..3b4a2bfdf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadLinkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadLinkMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadLinkMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestReadLinkMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestReadLinkMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestReadLinkMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestReadLinkMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestReadLinkMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestReadLinkMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestReadLinkMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadMessageHandler.java index 61adff264..7fb350db1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestReadMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestReadMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestReadMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestReadMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestReadMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestReadMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestReadMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestReadMessageHandler extends SftpMessageHandler { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRealPathMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRealPathMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRealPathMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRealPathMessageHandler.java index ee7ef309e..03db1ba09 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRealPathMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRealPathMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRealPathMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestRealPathMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestRealPathMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestRealPathMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRealPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestRealPathMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestRealPathMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestRealPathMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRealPathMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRemoveDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveDirMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRemoveDirMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveDirMessageHandler.java index 581d99287..f66e483e0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRemoveDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveDirMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRmdirMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestRemoveDirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestRemoveDirMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestRemoveDirMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRmdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestRemoveDirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestRemoveDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestRemoveDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRemoveDirMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRemoveMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRemoveMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveMessageHandler.java index 745a4b25f..df00c29db 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRemoveMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRemoveMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestRemoveMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestRemoveMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestRemoveMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestRemoveMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestRemoveMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestRemoveMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRemoveMessageHandler extends SftpMessageHandler { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRenameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRenameMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRenameMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRenameMessageHandler.java index 8c1fb9d60..f7fa065f6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestRenameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRenameMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRenameMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestRenameMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestRenameMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestRenameMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestRenameMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestRenameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestRenameMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRenameMessageHandler extends SftpMessageHandler { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestSetStatMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java index 4fb0cbb6f..1acb856da 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSetStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestSetStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestSetStatMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestSetStatMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestSetStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestSetStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestSetStatMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestStatMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java index a5d5f0547..44115437a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestStatMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestStatMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestStatMessageHandler extends SftpMessageHandler { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestSymbolicLinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSymbolicLinkMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestSymbolicLinkMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSymbolicLinkMessageHandler.java index 60cc7df67..69760dbba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestSymbolicLinkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSymbolicLinkMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSymbolicLinkMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestSymbolicLinkMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestSymbolicLinkMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestSymbolicLinkMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSymbolicLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestSymbolicLinkMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestSymbolicLinkMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestSymbolicLinkMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestSymbolicLinkMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestWriteMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestWriteMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestWriteMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestWriteMessageHandler.java index a48df9cf1..899a25546 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpRequestWriteMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestWriteMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWriteMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpRequestWriteMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpRequestWriteMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpRequestWriteMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWriteMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestWriteMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestWriteMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestWriteMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestWriteMessageHandler extends SftpMessageHandler { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseAttributesMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseAttributesMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java index e6220be13..659e160ff 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseAttributesMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.response; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseAttributesMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpResponseAttributesMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpResponseAttributesMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpResponseAttributesMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseAttributesMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseAttributesMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseAttributesMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseAttributesMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseDataMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseDataMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseDataMessageHandler.java index 316b6bb56..727e6522c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseDataMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseDataMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.response; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseDataMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpResponseDataMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpResponseDataMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpResponseDataMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseDataMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseDataMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseDataMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseDataMessageHandler extends SftpMessageHandler { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseHandleMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseHandleMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseHandleMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseHandleMessageHandler.java index bfd1245f1..aaf425cbf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseHandleMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseHandleMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.response; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseHandleMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpResponseHandleMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpResponseHandleMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpResponseHandleMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseHandleMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseHandleMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseHandleMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseHandleMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseNameEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameEntryHandler.java similarity index 77% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseNameEntryHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameEntryHandler.java index 1dc7c2edf..b5004e845 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseNameEntryHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameEntryHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.response; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameEntry; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpResponseNameEntryParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpResponseNameEntryPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpResponseNameEntrySerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseNameEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseNameEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseNameEntrySerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseNameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseNameMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java index f49bea190..765d157da 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseNameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.response; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpResponseNameMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpResponseNameMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpResponseNameMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseNameMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseNameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseNameMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseNameMessageHandler extends SftpMessageHandler { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseStatusMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseStatusMessageHandler.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseStatusMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseStatusMessageHandler.java index fd2e3f060..faa36f72d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpResponseStatusMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseStatusMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.handler.response; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseStatusMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpResponseStatusMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpResponseStatusMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpResponseStatusMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseStatusMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseStatusMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseStatusMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseStatusMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseStatusMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestExtendedMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedMessage.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestExtendedMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedMessage.java index 5e038c096..50afac79e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestExtendedMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedMessage.java @@ -5,11 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.extended; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMessage; import java.nio.charset.StandardCharsets; public abstract class SftpRequestExtendedMessage> @@ -44,6 +46,10 @@ public void setExtendedRequestName(String extendedRequestName) { setExtendedRequestName(extendedRequestName, false); } + public void setExtendedRequestName(SftpExtension extension) { + setExtendedRequestName(extension.getName()); + } + public void setExtendedRequestName( ModifiableString extendedRequestName, boolean adjustLengthField) { if (adjustLengthField) { @@ -62,4 +68,8 @@ public void setExtendedRequestName(String extendedRequestName, boolean adjustLen ModifiableVariableFactory.safelySetValue( this.extendedRequestName, extendedRequestName); } + + public void setExtendedRequestName(SftpExtension extension, boolean adjustLengthField) { + setExtendedRequestName(extension.getName(), adjustLengthField); + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java index dfc5c862b..65cb7944e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java @@ -17,6 +17,7 @@ public class SftpExtensionVendorId extends SftpAbstractExtension { + private ModifiableInteger vendorStructureLength; private ModifiableInteger vendorNameLength; private ModifiableString vendorName; private ModifiableInteger productNameLength; @@ -25,6 +26,20 @@ public class SftpExtensionVendorId extends SftpAbstractExtension { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestFileSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestFileSetStatMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java index 2f4a8a4a5..6a1699a3c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestFileSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestFileSetStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestFileSetStatMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestFileStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestFileStatMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java index dab5d9547..d25f6f143 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestFileStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestFileStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestFileStatMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileStatMessage diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestLinkStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestLinkStatMessage.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestLinkStatMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestLinkStatMessage.java index b05593676..a6a1af069 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestLinkStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestLinkStatMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestLinkStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestLinkStatMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestLinkStatMessage diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMakeDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMakeDirMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java index ed2ed9729..a67810d99 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMakeDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestMakeDirMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMakeDirMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMessage.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMessage.java index d13662367..1b09ca2d7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMessage.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenDirMessage.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenDirMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenDirMessage.java index 04a071bf7..1db2d8b02 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenDirMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestOpenDirMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestOpenDirMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestOpenDirMessage diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java index 20fe9a45a..5a2a352b6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestOpenMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestOpenMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestOpenMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadDirMessage.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadDirMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadDirMessage.java index 38dabff71..8f5fd216e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadDirMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestReadDirMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestReadDirMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestReadDirMessage diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadLinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadLinkMessage.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadLinkMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadLinkMessage.java index 0b911060c..19b923f51 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadLinkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadLinkMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestReadLinkMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestReadLinkMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestReadLinkMessage diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadMessage.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadMessage.java index ad29a3eda..7884bdb4b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestReadMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestReadMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestReadMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestReadMessage extends SftpRequestWithHandleMessage { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRealPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRealPathMessage.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRealPathMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRealPathMessage.java index 351ff654f..75041cfca 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRealPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRealPathMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestRealPathMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestRealPathMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRealPathMessage diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRemoveMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveMessage.java similarity index 79% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRemoveMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveMessage.java index 7d72dbd2b..06d6abaee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRemoveMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestRemoveMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestRemoveMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRemoveMessage extends SftpRequestWithPathMessage { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRenameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRenameMessage.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRenameMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRenameMessage.java index 2148ba393..fe12782a3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRenameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRenameMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestRenameMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestRenameMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRmdirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRmdirMessage.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRmdirMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRmdirMessage.java index 306dd1a04..a6b1d6865 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestRmdirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRmdirMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestRemoveDirMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestRemoveDirMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRmdirMessage extends SftpRequestWithPathMessage { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestSetStatMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java index ba7ec4e17..8fbf788db 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestSetStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestSetStatMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestStatMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java index 8d7206274..397523d61 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestStatMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestStatMessage extends SftpRequestWithPathMessage { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestSymbolicLinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSymbolicLinkMessage.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestSymbolicLinkMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSymbolicLinkMessage.java index e75def26e..f365e7244 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestSymbolicLinkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSymbolicLinkMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestSymbolicLinkMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestSymbolicLinkMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -19,6 +19,9 @@ public class SftpRequestSymbolicLinkMessage // path is the link path + // Note that OpenSSH and some other Implementations (e.g. ProFTPD, Sun SSH) reverses the order + // of link path and target path + private ModifiableString targetPath; private ModifiableInteger targetPathLength; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWithHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithHandleMessage.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWithHandleMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithHandleMessage.java index c3f9f2189..823e9105e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWithHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithHandleMessage.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWithPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWithPathMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java index a8a626bae..3cb6441cf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWithPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWriteMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWriteMessage.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWriteMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWriteMessage.java index 8a2111d17..5dad19151 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpRequestWriteMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWriteMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpRequestWriteMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestWriteMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestWriteMessage extends SftpRequestWithHandleMessage { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseAttributesMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseAttributesMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java index d2f941863..e93887116 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseAttributesMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.response; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpResponseAttributesMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseAttributesMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseDataMessage.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseDataMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseDataMessage.java index 403331421..949f75b6f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseDataMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.response; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpResponseDataMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseDataMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseDataMessage extends SftpResponseMessage { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseHandleMessage.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseHandleMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseHandleMessage.java index 717c70b2f..70ae8768d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseHandleMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.response; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpResponseHandleMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseHandleMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseHandleMessage extends SftpResponseMessage { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseMessage.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseMessage.java index 120f52bd9..49c8989ea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseMessage.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.response; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseNameEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameEntry.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseNameEntry.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameEntry.java index 02a0b81b1..3399d914a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseNameEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameEntry.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.response; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpResponseNameEntryHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseNameEntryHandler; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseNameMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java index e2f7face2..a6724e0b4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseNameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.response; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpResponseNameMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseNameMessageHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import jakarta.xml.bind.annotation.XmlElement; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseStatusMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseStatusMessage.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseStatusMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseStatusMessage.java index 54379bf29..2ff50f5aa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpResponseStatusMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseStatusMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.message.response; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.constants.SftpStatusCode; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpResponseStatusMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseStatusMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java index 4727af202..4f0e3d999 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java @@ -109,7 +109,7 @@ private void parseExtensions() { new SftpExtensionHardlinkHandler(null) .getParser(getArray(), extensionStartPointer); break; - case FSYNC_OPENSSH_COM: + case F_SYNC_OPENSSH_COM: extensionParser = new SftpExtensionFileSyncHandler(null) .getParser(getArray(), extensionStartPointer); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestExtendedMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedMessageParser.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestExtendedMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedMessageParser.java index 3e580c23e..aca10acfa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestExtendedMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedMessageParser.java @@ -5,12 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestExtendedMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExtendedMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestMessageParser; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java index a441a5c30..9ddbc3c5d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java @@ -28,6 +28,11 @@ public SftpExtensionVendorIdParser(byte[] array, int startPosition) { super(SftpExtensionVendorId::new, array, startPosition); } + private void parseVendorStructureLength() { + extension.setVendorStructureLength(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("VendorStructureLength: {}", extension.getVendorStructureLength().getValue()); + } + private void parseVendorName() { extension.setVendorNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("VendorName length: {}", extension.getVendorNameLength().getValue()); @@ -68,6 +73,7 @@ private void parseProductBuildNumber() { @Override protected void parseExtensionValue() { + parseVendorStructureLength(); parseVendorName(); parseProductName(); parseProductVersion(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestCloseMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestCloseMessageParser.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestCloseMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestCloseMessageParser.java index b52462dc9..b0adfdaad 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestCloseMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestCloseMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestCloseMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestCloseMessage; public class SftpRequestCloseMessageParser extends SftpRequestWithHandleMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestFileSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileSetStatMessageParser.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestFileSetStatMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileSetStatMessageParser.java index e338da9d1..adf058ca1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestFileSetStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileSetStatMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; public class SftpRequestFileSetStatMessageParser diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestFileStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestFileStatMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java index 12ac0b21b..544eeff17 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestFileStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileStatMessage; public class SftpRequestFileStatMessageParser extends SftpRequestWithHandleMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestLinkStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestLinkStatMessageParser.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestLinkStatMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestLinkStatMessageParser.java index b7992b57f..f1b2579ec 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestLinkStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestLinkStatMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestLinkStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestLinkStatMessage; public class SftpRequestLinkStatMessageParser extends SftpRequestWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMakeDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMakeDirMessageParser.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMakeDirMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMakeDirMessageParser.java index d2e023f96..d05984de0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMakeDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMakeDirMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMakeDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMakeDirMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; public class SftpRequestMakeDirMessageParser diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMessageParser.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMessageParser.java index adc997ada..5fdc3592c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenDirMessageParser.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenDirMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenDirMessageParser.java index 42c09d5eb..1c89c4d1c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenDirMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenDirMessage; public class SftpRequestOpenDirMessageParser extends SftpRequestWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java index 4c6c24325..b1ab5fd74 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestOpenMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadDirMessageParser.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadDirMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadDirMessageParser.java index 036d4bc99..ea109e3b7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadDirMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadDirMessage; public class SftpRequestReadDirMessageParser extends SftpRequestWithHandleMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadLinkMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadLinkMessageParser.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadLinkMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadLinkMessageParser.java index 3ebd19cc6..a548ffa6c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadLinkMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadLinkMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadLinkMessage; public class SftpRequestReadLinkMessageParser extends SftpRequestWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadMessageParser.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadMessageParser.java index 340fa2ab6..143a1cf28 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestReadMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRealPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRealPathMessageParser.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRealPathMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRealPathMessageParser.java index 04ec8a773..193872597 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRealPathMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRealPathMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRealPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRealPathMessage; public class SftpRequestRealPathMessageParser extends SftpRequestWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveDirMessageParser.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveDirMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveDirMessageParser.java index 968a87269..dbe1c00e7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveDirMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRmdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRmdirMessage; public class SftpRequestRemoveDirMessageParser extends SftpRequestWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveMessageParser.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveMessageParser.java index 143625096..fa0f303d7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRemoveMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRemoveMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveMessage; public class SftpRequestRemoveMessageParser extends SftpRequestWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRenameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRenameMessageParser.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRenameMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRenameMessageParser.java index 03cfcf908..79d644f4a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestRenameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRenameMessageParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRenameMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSetStatMessageParser.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestSetStatMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSetStatMessageParser.java index ffdd811b4..2d9c39d84 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestSetStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSetStatMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; public class SftpRequestSetStatMessageParser diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestStatMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java index bf738db2c..bf5b4bea2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestStatMessage; public class SftpRequestStatMessageParser extends SftpRequestWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestSymbolicLinkMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSymbolicLinkMessageParser.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestSymbolicLinkMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSymbolicLinkMessageParser.java index b55e63367..47743592f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestSymbolicLinkMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSymbolicLinkMessageParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSymbolicLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSymbolicLinkMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithHandleMessageParser.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithHandleMessageParser.java index fd19ffd52..58eb9261a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithHandleMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithHandleMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWithHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWithHandleMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithPathMessageParser.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithPathMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithPathMessageParser.java index d132889f7..9848db493 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWithPathMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithPathMessageParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWithPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWithPathMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWriteMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWriteMessageParser.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWriteMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWriteMessageParser.java index b356cebf1..c8a4d9671 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpRequestWriteMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWriteMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.request; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWriteMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWriteMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseAttributesMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseAttributesMessageParser.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseAttributesMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseAttributesMessageParser.java index 6f22257c4..51e0715c7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseAttributesMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseAttributesMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.response; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; public class SftpResponseAttributesMessageParser diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseDataMessageParser.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseDataMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseDataMessageParser.java index c1317c922..0f7ace9cd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseDataMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.response; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseDataMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseHandleMessageParser.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseHandleMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseHandleMessageParser.java index 246271089..24d09a574 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseHandleMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseHandleMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.response; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseHandleMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseMessageParser.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseMessageParser.java index 66405b9f6..d27fd87b8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.response; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseNameEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameEntryParser.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseNameEntryParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameEntryParser.java index 74a08c763..9aadbd54b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseNameEntryParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameEntryParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.response; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameEntry; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; import de.rub.nds.sshattacker.core.protocol.common.Parser; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseNameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseNameMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java index 41db9a712..4b6385792 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseNameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.response; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseStatusMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseStatusMessageParser.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseStatusMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseStatusMessageParser.java index e2a85f83e..07ebb0385 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpResponseStatusMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseStatusMessageParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.parser.response; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseStatusMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseStatusMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestExtendedMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestExtendedMessagePreparator.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestExtendedMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestExtendedMessagePreparator.java index 0af73a1b3..95cd46312 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestExtendedMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestExtendedMessagePreparator.java @@ -5,11 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestExtendedMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExtendedMessage; +import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestMessagePreparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public abstract class SftpRequestExtendedMessagePreparator> diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java index 35314a66f..5607d7332 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionVendorId; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -47,5 +48,14 @@ public void prepareExtensionSpecificContents() { if (getObject().getProductBuildNumber() == null) { getObject().setProductBuildNumber(2024); } + + if (getObject().getVendorStructureLength() == null) { + getObject() + .setVendorStructureLength( + getObject().getVendorNameLength().getValue() + + getObject().getProductNameLength().getValue() + + getObject().getProductVersionLength().getValue() + + DataFormatConstants.UINT64_SIZE); + } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestCloseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestCloseMessagePreparator.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestCloseMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestCloseMessagePreparator.java index ab6d2a2d3..ca015d6f2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestCloseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestCloseMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestCloseMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestCloseMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestCloseMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestFileSetStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java index da6d76688..6b25cc848 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestFileSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileSetStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestFileSetStatMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestFileStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java index 4031c1534..d7d15cd04 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestFileStatMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestLinkStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestLinkStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java index 40cf5bd61..fc145876e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestLinkStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestLinkStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestLinkStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestLinkStatMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMakeDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMakeDirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java index 3b0d358fb..c99ad7924 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMakeDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMakeDirMessage; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMakeDirMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestMakeDirMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMessagePreparator.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMessagePreparator.java index 88165318a..8d30b99e7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public abstract class SftpRequestMessagePreparator> diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenDirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java index bc451dd7e..8784bedd9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenDirMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestOpenDirMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java index b8772df6d..c7fafa45c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenMessage; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestOpenMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadDirMessagePreparator.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadDirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadDirMessagePreparator.java index 931561480..7f8e6b42d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadDirMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadDirMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestReadDirMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadLinkMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java index e46593bdc..f705252fc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadLinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadLinkMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestReadLinkMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java index 88e53cf27..f750ce245 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestReadMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestReadMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRealPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRealPathMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java index 25ebdfce1..5aa4be235 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRealPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRealPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRealPathMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestRealPathMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveDirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java index 5b1389aef..038ae23d3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRmdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRmdirMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestRemoveDirMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java index 20f83db7e..629089591 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRemoveMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRemoveMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestRemoveMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRenameMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java index 8bf986f62..9b3330faf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRenameMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestRenameMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestSetStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java index 572862bda..5036dffb8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSetStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestSetStatMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java index d9b2cabf0..7f6d84d14 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestStatMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestSymbolicLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestSymbolicLinkMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java index 8ff2f916e..478950a6e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestSymbolicLinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSymbolicLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSymbolicLinkMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestSymbolicLinkMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestWriteMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestWriteMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java index d58cec524..cd8bb7305 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpRequestWriteMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWriteMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWriteMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestWriteMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseAttributesMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseAttributesMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java index f87a5bb00..72e8c5a7c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseAttributesMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseAttributesMessage; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseAttributesMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseDataMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java index c521c8d43..acf611afe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseDataMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseDataMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseHandleMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java index 6f4dc2d4c..7aa1843dd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseHandleMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseHandleMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java index 8e7260103..acf849dec 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public abstract class SftpResponseMessagePreparator> diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameEntryPreparator.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseNameEntryPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameEntryPreparator.java index b2d1939c7..b0dc8e7f1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameEntryPreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.response; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameEntry; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseNameMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java index 2b478e9fb..e832affdb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseNameMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseStatusMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseStatusMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java index 7ce2305ea..5979a3c54 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpResponseStatusMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.preperator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.constants.SftpStatusCode; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseStatusMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseStatusMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseStatusMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestExtendedMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedMessageSerializer.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestExtendedMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedMessageSerializer.java index 4cbf7a12f..76fd7a142 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestExtendedMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedMessageSerializer.java @@ -5,12 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestExtendedMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExtendedMessage; +import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestMessageSerializer; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java index 1c7f3d20d..9e8381680 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java @@ -24,6 +24,11 @@ public SftpExtensionVendorIdSerializer(SftpExtensionVendorId extension) { super(extension); } + private void serializeVendorStructureLength() { + LOGGER.debug("VendorStructureLength: {}", extension.getVendorStructureLength().getValue()); + appendInt(extension.getVendorStructureLength().getValue(), DataFormatConstants.UINT32_SIZE); + } + private void serializeVendorName() { LOGGER.debug("VendorName length: {}", extension.getVendorNameLength().getValue()); appendInt( @@ -63,6 +68,7 @@ private void serializeProductBuildNumber() { @Override protected void serializeExtensionValue() { + serializeVendorStructureLength(); serializeVendorName(); serializeProductName(); serializeProductVersion(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestCloseMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestCloseMessageSerializer.java similarity index 79% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestCloseMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestCloseMessageSerializer.java index dcdc69848..df93c7c26 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestCloseMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestCloseMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestCloseMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestCloseMessage; public class SftpRequestCloseMessageSerializer extends SftpRequestWithHandleMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestFileSetStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileSetStatMessageSerializer.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestFileSetStatMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileSetStatMessageSerializer.java index edb761a5e..30cd017ee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestFileSetStatMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileSetStatMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileSetStatMessage; public class SftpRequestFileSetStatMessageSerializer extends SftpRequestWithHandleMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestFileStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java similarity index 80% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestFileStatMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java index 23cabb71d..d29bf1076 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestFileStatMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestFileStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileStatMessage; public class SftpRequestFileStatMessageSerializer extends SftpRequestWithHandleMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestLinkStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestLinkStatMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestLinkStatMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestLinkStatMessageSerializer.java index 984f3d34b..f069b7081 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestLinkStatMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestLinkStatMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestLinkStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestLinkStatMessage; public class SftpRequestLinkStatMessageSerializer extends SftpRequestWithPathMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMakeDirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMakeDirMessageSerializer.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMakeDirMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMakeDirMessageSerializer.java index 0738c84d2..9fec6839a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMakeDirMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMakeDirMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMakeDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMakeDirMessage; public class SftpRequestMakeDirMessageSerializer extends SftpRequestWithPathMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMessageSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMessageSerializer.java index d784286fd..7ac55de6f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageSerializer; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenDirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenDirMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenDirMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenDirMessageSerializer.java index 5bb4b3e7d..8a3ad283a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenDirMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenDirMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenDirMessage; public class SftpRequestOpenDirMessageSerializer extends SftpRequestWithPathMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenMessageSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenMessageSerializer.java index fe28ec0fd..bedc5cec1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestOpenMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadDirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadDirMessageSerializer.java similarity index 79% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadDirMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadDirMessageSerializer.java index d28e24205..c8b6e9ba5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadDirMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadDirMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadDirMessage; public class SftpRequestReadDirMessageSerializer extends SftpRequestWithHandleMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadLinkMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadLinkMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadLinkMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadLinkMessageSerializer.java index cd20e134a..b5fb5ae06 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadLinkMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadLinkMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadLinkMessage; public class SftpRequestReadLinkMessageSerializer extends SftpRequestWithPathMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadMessageSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadMessageSerializer.java index 722b32c9d..f6a2c8742 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestReadMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestReadMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRealPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRealPathMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRealPathMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRealPathMessageSerializer.java index 10a854974..f8ed52ed1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRealPathMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRealPathMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRealPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRealPathMessage; public class SftpRequestRealPathMessageSerializer extends SftpRequestWithPathMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRemoveDirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveDirMessageSerializer.java similarity index 79% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRemoveDirMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveDirMessageSerializer.java index faf44d888..b41bfcb3e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRemoveDirMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveDirMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRmdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRmdirMessage; public class SftpRequestRemoveDirMessageSerializer extends SftpRequestWithPathMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRemoveMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRemoveMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveMessageSerializer.java index c75ec057e..91a051cfc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRemoveMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRemoveMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveMessage; public class SftpRequestRemoveMessageSerializer extends SftpRequestWithPathMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRenameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRenameMessageSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRenameMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRenameMessageSerializer.java index 59116760b..0b2017012 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestRenameMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRenameMessageSerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRenameMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestSetStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSetStatMessageSerializer.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestSetStatMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSetStatMessageSerializer.java index 5e24ae37c..f42168454 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestSetStatMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSetStatMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSetStatMessage; public class SftpRequestSetStatMessageSerializer extends SftpRequestWithPathMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestStatMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestStatMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestStatMessageSerializer.java index 04a948108..9e01f7503 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestStatMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestStatMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestStatMessage; public class SftpRequestStatMessageSerializer extends SftpRequestWithPathMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestSymbolicLinkMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSymbolicLinkMessageSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestSymbolicLinkMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSymbolicLinkMessageSerializer.java index af1c6fd86..2fcdbc092 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestSymbolicLinkMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSymbolicLinkMessageSerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestSymbolicLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSymbolicLinkMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithHandleMessageSerializer.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithHandleMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithHandleMessageSerializer.java index b3c734db5..da6f7af8a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithHandleMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithHandleMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWithHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWithHandleMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithPathMessageSerializer.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithPathMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithPathMessageSerializer.java index 4dcd2bb11..822770e23 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWithPathMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithPathMessageSerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWithPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWithPathMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWriteMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWriteMessageSerializer.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWriteMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWriteMessageSerializer.java index 4acb0c489..06447d817 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpRequestWriteMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWriteMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.request; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestWriteMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWriteMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseAttributesMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseAttributesMessageSerializer.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseAttributesMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseAttributesMessageSerializer.java index f7a1d14cd..1460b2281 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseAttributesMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseAttributesMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.response; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; public class SftpResponseAttributesMessageSerializer extends SftpResponseMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseDataMessageSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseDataMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseDataMessageSerializer.java index 580937981..cd05704ab 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseDataMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.response; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseDataMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseHandleMessageSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseHandleMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseHandleMessageSerializer.java index e90ecf083..861d1898d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseHandleMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseHandleMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.response; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseHandleMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseMessageSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseMessageSerializer.java index c55ebc3bb..c29d6321b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.response; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageSerializer; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseNameEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameEntrySerializer.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseNameEntrySerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameEntrySerializer.java index f5cf3672e..d45979a67 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseNameEntrySerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameEntrySerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.response; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Serializer; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseNameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameMessageSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseNameMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameMessageSerializer.java index ac2e32aff..ecc34c11b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseNameMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.response; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseStatusMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseStatusMessageSerializer.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseStatusMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseStatusMessageSerializer.java index 651ed5d14..cb2d85dfe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpResponseStatusMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseStatusMessageSerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.serializer.response; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseStatusMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseStatusMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java index 5cdec955b..b4b937d39 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java @@ -14,9 +14,9 @@ import de.rub.nds.sshattacker.core.constants.PacketLayerType; import de.rub.nds.sshattacker.core.constants.RunningModeType; import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpRequestOpenMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpResponseHandleMessage; import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseHandleMessage; import de.rub.nds.sshattacker.core.exceptions.ConfigurationException; import de.rub.nds.sshattacker.core.protocol.authentication.message.*; import de.rub.nds.sshattacker.core.protocol.connection.message.*; From 1e3fa62161eeecad195ed84ffdb2c6874d6e4de7 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Fri, 1 Nov 2024 20:00:07 +0100 Subject: [PATCH 032/203] add most of missing Extended requests. check-file-handle, check-file-name is still missing --- .../SftpRequestCopyDataMessageHandler.java | 53 ++++++ .../SftpRequestCopyFileMessageHandler.java | 53 ++++++ .../SftpRequestExpandPathMessageHandler.java | 53 ++++++ .../SftpRequestFileStatVfsMessageHandler.java | 53 ++++++ .../SftpRequestFileSyncMessageHandler.java | 53 ++++++ ...ftpRequestGetTempFolderMessageHandler.java | 53 ++++++ .../SftpRequestHardlinkMessageHandler.java | 53 ++++++ ...ftpRequestHomeDirectoryMessageHandler.java | 53 ++++++ .../SftpRequestLimitsMessageHandler.java | 51 ++++++ .../SftpRequestLinkSetStatMessageHandler.java | 53 ++++++ ...tpRequestMakeTempFolderMessageHandler.java | 53 ++++++ .../SftpRequestPosixRenameMessageHandler.java | 53 ++++++ ...tpRequestSpaceAvailableMessageHandler.java | 53 ++++++ .../SftpRequestStatVfsMessageHandler.java | 52 ++++++ ...pRequestUsersGroupsByIdMessageHandler.java | 53 ++++++ .../SftpRequestVendorIdMessageHandler.java | 53 ++++++ .../extended/SftpRequestCopyDataMessage.java | 112 ++++++++++++ .../extended/SftpRequestCopyFileMessage.java | 92 ++++++++++ .../SftpRequestExpandPathMessage.java | 20 +++ .../SftpRequestExtendedWithHandleMessage.java | 59 +++++++ .../SftpRequestExtendedWithPathMessage.java | 59 +++++++ .../SftpRequestFileStatVfsMessage.java | 20 +++ .../extended/SftpRequestFileSyncMessage.java | 20 +++ .../SftpRequestGetTempFolderMessage.java | 20 +++ .../extended/SftpRequestHardlinkMessage.java | 68 +++++++ .../SftpRequestHomeDirectoryMessage.java | 66 +++++++ .../extended/SftpRequestLimitsMessage.java | 19 ++ .../SftpRequestLinkSetStatMessage.java | 41 +++++ .../SftpRequestMakeTempFolderMessage.java | 20 +++ .../SftpRequestPosixRenameMessage.java | 68 +++++++ .../SftpRequestSpaceAvailableMessage.java | 20 +++ .../extended/SftpRequestStatVfsMessage.java | 20 +++ .../SftpRequestUsersGroupsByIdMessage.java | 87 +++++++++ .../extended/SftpRequestVendorIdMessage.java | 167 ++++++++++++++++++ .../SftpRequestCopyDataMessageParser.java | 65 +++++++ .../SftpRequestCopyFileMessageParser.java | 57 ++++++ .../SftpRequestExpandPathMessageParser.java | 30 ++++ ...equestExtendedWithHandleMessageParser.java | 46 +++++ ...pRequestExtendedWithPathMessageParser.java | 47 +++++ .../SftpRequestFileStatVfsMessageParser.java | 30 ++++ .../SftpRequestFileSyncMessageParser.java | 30 ++++ ...SftpRequestGetTempFolderMessageParser.java | 30 ++++ .../SftpRequestHardlinkMessageParser.java | 48 +++++ ...SftpRequestHomeDirectoryMessageParser.java | 48 +++++ .../SftpRequestLimitsMessageParser.java | 30 ++++ .../SftpRequestLinkSetStatMessageParser.java | 40 +++++ ...ftpRequestMakeTempFolderMessageParser.java | 30 ++++ .../SftpRequestPosixRenameMessageParser.java | 48 +++++ ...ftpRequestSpaceAvailableMessageParser.java | 30 ++++ .../SftpRequestStatVfsMessageParser.java | 30 ++++ ...tpRequestUsersGroupsByIdMessageParser.java | 59 +++++++ .../SftpRequestVendorIdMessageParser.java | 78 ++++++++ .../SftpRequestCopyDataMessagePreparator.java | 52 ++++++ .../SftpRequestCopyFileMessagePreparator.java | 43 +++++ ...ftpRequestExpandPathMessagePreparator.java | 31 ++++ ...tpRequestFileStatVfsMessagePreparator.java | 32 ++++ .../SftpRequestFileSyncMessagePreparator.java | 32 ++++ ...RequestGetTempFolderMessagePreparator.java | 24 +++ .../SftpRequestHardlinkMessagePreparator.java | 38 ++++ ...RequestHomeDirectoryMessagePreparator.java | 31 ++++ .../SftpRequestLimitsMessagePreparator.java | 23 +++ ...tpRequestLinkSetStatMessagePreparator.java | 37 ++++ ...equestMakeTempFolderMessagePreparator.java | 24 +++ ...tpRequestPosixRenameMessagePreparator.java | 38 ++++ ...equestSpaceAvailableMessagePreparator.java | 31 ++++ .../SftpRequestStatVfsMessagePreparator.java | 30 ++++ ...questUsersGroupsByIdMessagePreparator.java | 39 ++++ .../SftpRequestVendorIdMessagePreparator.java | 50 ++++++ .../SftpRequestCopyDataMessageSerializer.java | 58 ++++++ .../SftpRequestCopyFileMessageSerializer.java | 51 ++++++ ...ftpRequestExpandPathMessageSerializer.java | 21 +++ ...stExtendedWithHandleMessageSerializer.java | 42 +++++ ...uestExtendedWithPathMessageSerializer.java | 42 +++++ ...tpRequestFileStatVfsMessageSerializer.java | 21 +++ .../SftpRequestFileSyncMessageSerializer.java | 21 +++ ...RequestGetTempFolderMessageSerializer.java | 21 +++ .../SftpRequestHardlinkMessageSerializer.java | 38 ++++ ...RequestHomeDirectoryMessageSerializer.java | 38 ++++ .../SftpRequestLimitsMessageSerializer.java | 21 +++ ...tpRequestLinkSetStatMessageSerializer.java | 27 +++ ...equestMakeTempFolderMessageSerializer.java | 21 +++ ...tpRequestPosixRenameMessageSerializer.java | 38 ++++ ...equestSpaceAvailableMessageSerializer.java | 21 +++ .../SftpRequestStatVfsMessageSerializer.java | 21 +++ ...questUsersGroupsByIdMessageSerializer.java | 49 +++++ .../SftpRequestVendorIdMessageSerializer.java | 68 +++++++ 86 files changed, 3773 insertions(+) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestCopyDataMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestCopyFileMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestExpandPathMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestFileStatVfsMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestFileSyncMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestGetTempFolderMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestHardlinkMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestHomeDirectoryMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestLimitsMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestLinkSetStatMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestMakeTempFolderMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestPosixRenameMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestSpaceAvailableMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestStatVfsMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestUsersGroupsByIdMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestVendorIdMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestCopyDataMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestCopyFileMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExpandPathMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedWithHandleMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedWithPathMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestFileStatVfsMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestFileSyncMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestGetTempFolderMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestHardlinkMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestHomeDirectoryMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestLimitsMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestLinkSetStatMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestMakeTempFolderMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestPosixRenameMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestSpaceAvailableMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestStatVfsMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestUsersGroupsByIdMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestVendorIdMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestCopyDataMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestCopyFileMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExpandPathMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedWithHandleMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedWithPathMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestFileStatVfsMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestFileSyncMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestGetTempFolderMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestHardlinkMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestHomeDirectoryMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestLimitsMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestLinkSetStatMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestMakeTempFolderMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestPosixRenameMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestSpaceAvailableMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestStatVfsMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestUsersGroupsByIdMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestVendorIdMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestCopyDataMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestCopyFileMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestExpandPathMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestFileStatVfsMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestFileSyncMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestGetTempFolderMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestHardlinkMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestHomeDirectoryMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestLimitsMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestLinkSetStatMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestMakeTempFolderMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestPosixRenameMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestSpaceAvailableMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestStatVfsMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestUsersGroupsByIdMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestVendorIdMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestCopyDataMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestCopyFileMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExpandPathMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedWithHandleMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedWithPathMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestFileStatVfsMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestFileSyncMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestGetTempFolderMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestHardlinkMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestHomeDirectoryMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestLimitsMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestLinkSetStatMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestMakeTempFolderMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestPosixRenameMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestSpaceAvailableMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestStatVfsMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestUsersGroupsByIdMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestVendorIdMessageSerializer.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestCopyDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestCopyDataMessageHandler.java new file mode 100644 index 000000000..10b338d2e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestCopyDataMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestCopyDataMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestCopyDataMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestCopyDataMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestCopyDataMessageHandler + extends SftpMessageHandler { + + public SftpRequestCopyDataMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestCopyDataMessageHandler( + SshContext context, SftpRequestCopyDataMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestCopyDataMessage + } + + @Override + public SftpRequestCopyDataMessageParser getParser(byte[] array) { + return new SftpRequestCopyDataMessageParser(array); + } + + @Override + public SftpRequestCopyDataMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestCopyDataMessageParser(array, startPosition); + } + + @Override + public SftpRequestCopyDataMessagePreparator getPreparator() { + return new SftpRequestCopyDataMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestCopyDataMessageSerializer getSerializer() { + return new SftpRequestCopyDataMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestCopyFileMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestCopyFileMessageHandler.java new file mode 100644 index 000000000..aa79b0219 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestCopyFileMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestCopyFileMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestCopyFileMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestCopyFileMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestCopyFileMessageHandler + extends SftpMessageHandler { + + public SftpRequestCopyFileMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestCopyFileMessageHandler( + SshContext context, SftpRequestCopyFileMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestCopyFileMessage + } + + @Override + public SftpRequestCopyFileMessageParser getParser(byte[] array) { + return new SftpRequestCopyFileMessageParser(array); + } + + @Override + public SftpRequestCopyFileMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestCopyFileMessageParser(array, startPosition); + } + + @Override + public SftpRequestCopyFileMessagePreparator getPreparator() { + return new SftpRequestCopyFileMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestCopyFileMessageSerializer getSerializer() { + return new SftpRequestCopyFileMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestExpandPathMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestExpandPathMessageHandler.java new file mode 100644 index 000000000..17b318a1b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestExpandPathMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExpandPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestExpandPathMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestExpandPathMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestExpandPathMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestExpandPathMessageHandler + extends SftpMessageHandler { + + public SftpRequestExpandPathMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestExpandPathMessageHandler( + SshContext context, SftpRequestExpandPathMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestExpandPathMessage + } + + @Override + public SftpRequestExpandPathMessageParser getParser(byte[] array) { + return new SftpRequestExpandPathMessageParser(array); + } + + @Override + public SftpRequestExpandPathMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestExpandPathMessageParser(array, startPosition); + } + + @Override + public SftpRequestExpandPathMessagePreparator getPreparator() { + return new SftpRequestExpandPathMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestExpandPathMessageSerializer getSerializer() { + return new SftpRequestExpandPathMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestFileStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestFileStatVfsMessageHandler.java new file mode 100644 index 000000000..73bf7278e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestFileStatVfsMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestFileStatVfsMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestFileStatVfsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestFileStatVfsMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestFileStatVfsMessageHandler + extends SftpMessageHandler { + + public SftpRequestFileStatVfsMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestFileStatVfsMessageHandler( + SshContext context, SftpRequestFileStatVfsMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestFileStatVfsMessage + } + + @Override + public SftpRequestFileStatVfsMessageParser getParser(byte[] array) { + return new SftpRequestFileStatVfsMessageParser(array); + } + + @Override + public SftpRequestFileStatVfsMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestFileStatVfsMessageParser(array, startPosition); + } + + @Override + public SftpRequestFileStatVfsMessagePreparator getPreparator() { + return new SftpRequestFileStatVfsMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestFileStatVfsMessageSerializer getSerializer() { + return new SftpRequestFileStatVfsMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestFileSyncMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestFileSyncMessageHandler.java new file mode 100644 index 000000000..0a9a92346 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestFileSyncMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileSyncMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestFileSyncMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestFileSyncMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestFileSyncMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestFileSyncMessageHandler + extends SftpMessageHandler { + + public SftpRequestFileSyncMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestFileSyncMessageHandler( + SshContext context, SftpRequestFileSyncMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestFileSyncMessage + } + + @Override + public SftpRequestFileSyncMessageParser getParser(byte[] array) { + return new SftpRequestFileSyncMessageParser(array); + } + + @Override + public SftpRequestFileSyncMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestFileSyncMessageParser(array, startPosition); + } + + @Override + public SftpRequestFileSyncMessagePreparator getPreparator() { + return new SftpRequestFileSyncMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestFileSyncMessageSerializer getSerializer() { + return new SftpRequestFileSyncMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestGetTempFolderMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestGetTempFolderMessageHandler.java new file mode 100644 index 000000000..580dd5235 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestGetTempFolderMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestGetTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestGetTempFolderMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestGetTempFolderMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestGetTempFolderMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestGetTempFolderMessageHandler + extends SftpMessageHandler { + + public SftpRequestGetTempFolderMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestGetTempFolderMessageHandler( + SshContext context, SftpRequestGetTempFolderMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestGetTempFolderMessage + } + + @Override + public SftpRequestGetTempFolderMessageParser getParser(byte[] array) { + return new SftpRequestGetTempFolderMessageParser(array); + } + + @Override + public SftpRequestGetTempFolderMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestGetTempFolderMessageParser(array, startPosition); + } + + @Override + public SftpRequestGetTempFolderMessagePreparator getPreparator() { + return new SftpRequestGetTempFolderMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestGetTempFolderMessageSerializer getSerializer() { + return new SftpRequestGetTempFolderMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestHardlinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestHardlinkMessageHandler.java new file mode 100644 index 000000000..14c4484b8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestHardlinkMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHardlinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestHardlinkMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestHardlinkMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestHardlinkMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestHardlinkMessageHandler + extends SftpMessageHandler { + + public SftpRequestHardlinkMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestHardlinkMessageHandler( + SshContext context, SftpRequestHardlinkMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestHardlinkMessage + } + + @Override + public SftpRequestHardlinkMessageParser getParser(byte[] array) { + return new SftpRequestHardlinkMessageParser(array); + } + + @Override + public SftpRequestHardlinkMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestHardlinkMessageParser(array, startPosition); + } + + @Override + public SftpRequestHardlinkMessagePreparator getPreparator() { + return new SftpRequestHardlinkMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestHardlinkMessageSerializer getSerializer() { + return new SftpRequestHardlinkMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestHomeDirectoryMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestHomeDirectoryMessageHandler.java new file mode 100644 index 000000000..7b4e0775e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestHomeDirectoryMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHomeDirectoryMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestHomeDirectoryMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestHomeDirectoryMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestHomeDirectoryMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestHomeDirectoryMessageHandler + extends SftpMessageHandler { + + public SftpRequestHomeDirectoryMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestHomeDirectoryMessageHandler( + SshContext context, SftpRequestHomeDirectoryMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestHomeDirectoryMessage + } + + @Override + public SftpRequestHomeDirectoryMessageParser getParser(byte[] array) { + return new SftpRequestHomeDirectoryMessageParser(array); + } + + @Override + public SftpRequestHomeDirectoryMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestHomeDirectoryMessageParser(array, startPosition); + } + + @Override + public SftpRequestHomeDirectoryMessagePreparator getPreparator() { + return new SftpRequestHomeDirectoryMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestHomeDirectoryMessageSerializer getSerializer() { + return new SftpRequestHomeDirectoryMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestLimitsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestLimitsMessageHandler.java new file mode 100644 index 000000000..a0d1fc8b4 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestLimitsMessageHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestLimitsMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestLimitsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestLimitsMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestLimitsMessageHandler extends SftpMessageHandler { + + public SftpRequestLimitsMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestLimitsMessageHandler(SshContext context, SftpRequestLimitsMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestLimitsMessage + } + + @Override + public SftpRequestLimitsMessageParser getParser(byte[] array) { + return new SftpRequestLimitsMessageParser(array); + } + + @Override + public SftpRequestLimitsMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestLimitsMessageParser(array, startPosition); + } + + @Override + public SftpRequestLimitsMessagePreparator getPreparator() { + return new SftpRequestLimitsMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestLimitsMessageSerializer getSerializer() { + return new SftpRequestLimitsMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestLinkSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestLinkSetStatMessageHandler.java new file mode 100644 index 000000000..15164f5f9 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestLinkSetStatMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLinkSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestLinkSetStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestLinkSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestLinkSetStatMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestLinkSetStatMessageHandler + extends SftpMessageHandler { + + public SftpRequestLinkSetStatMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestLinkSetStatMessageHandler( + SshContext context, SftpRequestLinkSetStatMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestLinkSetStatMessage + } + + @Override + public SftpRequestLinkSetStatMessageParser getParser(byte[] array) { + return new SftpRequestLinkSetStatMessageParser(array); + } + + @Override + public SftpRequestLinkSetStatMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestLinkSetStatMessageParser(array, startPosition); + } + + @Override + public SftpRequestLinkSetStatMessagePreparator getPreparator() { + return new SftpRequestLinkSetStatMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestLinkSetStatMessageSerializer getSerializer() { + return new SftpRequestLinkSetStatMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestMakeTempFolderMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestMakeTempFolderMessageHandler.java new file mode 100644 index 000000000..bce3191bb --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestMakeTempFolderMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestMakeTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestMakeTempFolderMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestMakeTempFolderMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestMakeTempFolderMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestMakeTempFolderMessageHandler + extends SftpMessageHandler { + + public SftpRequestMakeTempFolderMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestMakeTempFolderMessageHandler( + SshContext context, SftpRequestMakeTempFolderMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestMakeTempFolderMessage + } + + @Override + public SftpRequestMakeTempFolderMessageParser getParser(byte[] array) { + return new SftpRequestMakeTempFolderMessageParser(array); + } + + @Override + public SftpRequestMakeTempFolderMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestMakeTempFolderMessageParser(array, startPosition); + } + + @Override + public SftpRequestMakeTempFolderMessagePreparator getPreparator() { + return new SftpRequestMakeTempFolderMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestMakeTempFolderMessageSerializer getSerializer() { + return new SftpRequestMakeTempFolderMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestPosixRenameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestPosixRenameMessageHandler.java new file mode 100644 index 000000000..a27f80175 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestPosixRenameMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestPosixRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestPosixRenameMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestPosixRenameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestPosixRenameMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestPosixRenameMessageHandler + extends SftpMessageHandler { + + public SftpRequestPosixRenameMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestPosixRenameMessageHandler( + SshContext context, SftpRequestPosixRenameMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestPosixRenameMessage + } + + @Override + public SftpRequestPosixRenameMessageParser getParser(byte[] array) { + return new SftpRequestPosixRenameMessageParser(array); + } + + @Override + public SftpRequestPosixRenameMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestPosixRenameMessageParser(array, startPosition); + } + + @Override + public SftpRequestPosixRenameMessagePreparator getPreparator() { + return new SftpRequestPosixRenameMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestPosixRenameMessageSerializer getSerializer() { + return new SftpRequestPosixRenameMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestSpaceAvailableMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestSpaceAvailableMessageHandler.java new file mode 100644 index 000000000..825c2de4e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestSpaceAvailableMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestSpaceAvailableMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestSpaceAvailableMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestSpaceAvailableMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestSpaceAvailableMessageHandler + extends SftpMessageHandler { + + public SftpRequestSpaceAvailableMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestSpaceAvailableMessageHandler( + SshContext context, SftpRequestSpaceAvailableMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestSpaceAvailableMessage + } + + @Override + public SftpRequestSpaceAvailableMessageParser getParser(byte[] array) { + return new SftpRequestSpaceAvailableMessageParser(array); + } + + @Override + public SftpRequestSpaceAvailableMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestSpaceAvailableMessageParser(array, startPosition); + } + + @Override + public SftpRequestSpaceAvailableMessagePreparator getPreparator() { + return new SftpRequestSpaceAvailableMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestSpaceAvailableMessageSerializer getSerializer() { + return new SftpRequestSpaceAvailableMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestStatVfsMessageHandler.java new file mode 100644 index 000000000..69b33c517 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestStatVfsMessageHandler.java @@ -0,0 +1,52 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestStatVfsMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestStatVfsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestStatVfsMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestStatVfsMessageHandler + extends SftpMessageHandler { + + public SftpRequestStatVfsMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestStatVfsMessageHandler(SshContext context, SftpRequestStatVfsMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestStatVfsMessage + } + + @Override + public SftpRequestStatVfsMessageParser getParser(byte[] array) { + return new SftpRequestStatVfsMessageParser(array); + } + + @Override + public SftpRequestStatVfsMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestStatVfsMessageParser(array, startPosition); + } + + @Override + public SftpRequestStatVfsMessagePreparator getPreparator() { + return new SftpRequestStatVfsMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestStatVfsMessageSerializer getSerializer() { + return new SftpRequestStatVfsMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestUsersGroupsByIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestUsersGroupsByIdMessageHandler.java new file mode 100644 index 000000000..a9c2ef152 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestUsersGroupsByIdMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestUsersGroupsByIdMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestUsersGroupsByIdMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestUsersGroupsByIdMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestUsersGroupsByIdMessageHandler + extends SftpMessageHandler { + + public SftpRequestUsersGroupsByIdMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestUsersGroupsByIdMessageHandler( + SshContext context, SftpRequestUsersGroupsByIdMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestUsersGroupsByIdMessage + } + + @Override + public SftpRequestUsersGroupsByIdMessageParser getParser(byte[] array) { + return new SftpRequestUsersGroupsByIdMessageParser(array); + } + + @Override + public SftpRequestUsersGroupsByIdMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestUsersGroupsByIdMessageParser(array, startPosition); + } + + @Override + public SftpRequestUsersGroupsByIdMessagePreparator getPreparator() { + return new SftpRequestUsersGroupsByIdMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestUsersGroupsByIdMessageSerializer getSerializer() { + return new SftpRequestUsersGroupsByIdMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestVendorIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestVendorIdMessageHandler.java new file mode 100644 index 000000000..50f12e9d6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestVendorIdMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestVendorIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestVendorIdMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestVendorIdMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestVendorIdMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestVendorIdMessageHandler + extends SftpMessageHandler { + + public SftpRequestVendorIdMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestVendorIdMessageHandler( + SshContext context, SftpRequestVendorIdMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestVendorIdMessage + } + + @Override + public SftpRequestVendorIdMessageParser getParser(byte[] array) { + return new SftpRequestVendorIdMessageParser(array); + } + + @Override + public SftpRequestVendorIdMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestVendorIdMessageParser(array, startPosition); + } + + @Override + public SftpRequestVendorIdMessagePreparator getPreparator() { + return new SftpRequestVendorIdMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestVendorIdMessageSerializer getSerializer() { + return new SftpRequestVendorIdMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestCopyDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestCopyDataMessage.java new file mode 100644 index 000000000..1dbddf0c3 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestCopyDataMessage.java @@ -0,0 +1,112 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestCopyDataMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestCopyDataMessage + extends SftpRequestExtendedWithHandleMessage { + + // handle is the read from handle + + private ModifiableLong readFromOffset; + private ModifiableLong readDataLength; + private ModifiableInteger writeToHandleLength; + private ModifiableByteArray writeToHandle; + private ModifiableLong writeToOffset; + + public ModifiableLong getReadFromOffset() { + return readFromOffset; + } + + public void setReadFromOffset(ModifiableLong readFromOffset) { + this.readFromOffset = readFromOffset; + } + + public void setReadFromOffset(long readFromOffset) { + this.readFromOffset = + ModifiableVariableFactory.safelySetValue(this.readFromOffset, readFromOffset); + } + + public ModifiableLong getReadDataLength() { + return readDataLength; + } + + public void setReadDataLength(ModifiableLong readDataLength) { + this.readDataLength = readDataLength; + } + + public void setReadDataLength(long readDataLength) { + this.readDataLength = + ModifiableVariableFactory.safelySetValue(this.readDataLength, readDataLength); + } + + public ModifiableInteger getWriteToHandleLength() { + return writeToHandleLength; + } + + public void setWriteToHandleLength(ModifiableInteger writeToHandleLength) { + this.writeToHandleLength = writeToHandleLength; + } + + public void setWriteToHandleLength(int writeToHandleLength) { + this.writeToHandleLength = + ModifiableVariableFactory.safelySetValue( + this.writeToHandleLength, writeToHandleLength); + } + + public ModifiableByteArray getWriteToHandle() { + return writeToHandle; + } + + public void setWriteToHandle(ModifiableByteArray writeToHandle) { + setWriteToHandle(writeToHandle, false); + } + + public void setWriteToHandle(byte[] writeToHandle) { + setWriteToHandle(writeToHandle, false); + } + + public void setWriteToHandle(ModifiableByteArray writeToHandle, boolean adjustLengthField) { + this.writeToHandle = writeToHandle; + if (adjustLengthField) { + setWriteToHandleLength(this.writeToHandle.getValue().length); + } + } + + public void setWriteToHandle(byte[] writeToHandle, boolean adjustLengthField) { + this.writeToHandle = + ModifiableVariableFactory.safelySetValue(this.writeToHandle, writeToHandle); + if (adjustLengthField) { + setWriteToHandleLength(this.writeToHandle.getValue().length); + } + } + + public ModifiableLong getWriteToOffset() { + return writeToOffset; + } + + public void setWriteToOffset(ModifiableLong writeToOffset) { + this.writeToOffset = writeToOffset; + } + + public void setWriteToOffset(long writeToOffset) { + this.writeToOffset = + ModifiableVariableFactory.safelySetValue(this.writeToOffset, writeToOffset); + } + + @Override + public SftpRequestCopyDataMessageHandler getHandler(SshContext context) { + return new SftpRequestCopyDataMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestCopyFileMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestCopyFileMessage.java new file mode 100644 index 000000000..89c1c009c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestCopyFileMessage.java @@ -0,0 +1,92 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestCopyFileMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.util.Converter; +import java.nio.charset.StandardCharsets; + +public class SftpRequestCopyFileMessage + extends SftpRequestExtendedWithPathMessage { + + // path is the source path + + private ModifiableInteger destinationPathLength; + private ModifiableString destinationPath; + private ModifiableByte overwriteDestination; + + public ModifiableByte getOverwriteDestination() { + return overwriteDestination; + } + + public void setOverwriteDestination(ModifiableByte overwriteDestination) { + this.overwriteDestination = overwriteDestination; + } + + public void setOverwriteDestination(byte overwriteDestination) { + this.overwriteDestination = + ModifiableVariableFactory.safelySetValue( + this.overwriteDestination, overwriteDestination); + } + + public void setOverwriteDestination(boolean overwriteDestination) { + setOverwriteDestination(Converter.booleanToByte(overwriteDestination)); + } + + public ModifiableInteger getDestinationPathLength() { + return destinationPathLength; + } + + public void setDestinationPathLength(ModifiableInteger destinationPathLength) { + this.destinationPathLength = destinationPathLength; + } + + public void setDestinationPathLength(int destinationPathLength) { + this.destinationPathLength = + ModifiableVariableFactory.safelySetValue( + this.destinationPathLength, destinationPathLength); + } + + public ModifiableString getDestinationPath() { + return destinationPath; + } + + public void setDestinationPath(ModifiableString destinationPath) { + setDestinationPath(destinationPath, false); + } + + public void setDestinationPath(String destinationPath) { + setDestinationPath(destinationPath, false); + } + + public void setDestinationPath(ModifiableString destinationPath, boolean adjustLengthField) { + if (adjustLengthField) { + setDestinationPathLength( + destinationPath.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.destinationPath = destinationPath; + } + + public void setDestinationPath(String destinationPath, boolean adjustLengthField) { + if (adjustLengthField) { + setDestinationPathLength(destinationPath.getBytes(StandardCharsets.UTF_8).length); + } + this.destinationPath = + ModifiableVariableFactory.safelySetValue(this.destinationPath, destinationPath); + } + + @Override + public SftpRequestCopyFileMessageHandler getHandler(SshContext context) { + return new SftpRequestCopyFileMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExpandPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExpandPathMessage.java new file mode 100644 index 000000000..48291221b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExpandPathMessage.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestExpandPathMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestExpandPathMessage + extends SftpRequestExtendedWithPathMessage { + + @Override + public SftpRequestExpandPathMessageHandler getHandler(SshContext context) { + return new SftpRequestExpandPathMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedWithHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedWithHandleMessage.java new file mode 100644 index 000000000..d44894224 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedWithHandleMessage.java @@ -0,0 +1,59 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; + +public abstract class SftpRequestExtendedWithHandleMessage< + T extends SftpRequestExtendedWithHandleMessage> + extends SftpRequestExtendedMessage { + + private ModifiableInteger handleLength; + private ModifiableByteArray handle; + + public ModifiableInteger getHandleLength() { + return handleLength; + } + + public void setHandleLength(ModifiableInteger handleLength) { + this.handleLength = handleLength; + } + + public void setHandleLength(int handleLength) { + this.handleLength = + ModifiableVariableFactory.safelySetValue(this.handleLength, handleLength); + } + + public ModifiableByteArray getHandle() { + return handle; + } + + public void setHandle(ModifiableByteArray handle) { + setHandle(handle, false); + } + + public void setHandle(byte[] handle) { + setHandle(handle, false); + } + + public void setHandle(ModifiableByteArray handle, boolean adjustLengthField) { + this.handle = handle; + if (adjustLengthField) { + setHandleLength(this.handle.getValue().length); + } + } + + public void setHandle(byte[] handle, boolean adjustLengthField) { + this.handle = ModifiableVariableFactory.safelySetValue(this.handle, handle); + if (adjustLengthField) { + setHandleLength(this.handle.getValue().length); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedWithPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedWithPathMessage.java new file mode 100644 index 000000000..c1c350f56 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedWithPathMessage.java @@ -0,0 +1,59 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import java.nio.charset.StandardCharsets; + +public abstract class SftpRequestExtendedWithPathMessage< + T extends SftpRequestExtendedWithPathMessage> + extends SftpRequestExtendedMessage { + + private ModifiableInteger pathLength; + private ModifiableString path; + + public ModifiableInteger getPathLength() { + return pathLength; + } + + public void setPathLength(ModifiableInteger pathLength) { + this.pathLength = pathLength; + } + + public void setPathLength(int pathLength) { + this.pathLength = ModifiableVariableFactory.safelySetValue(this.pathLength, pathLength); + } + + public ModifiableString getPath() { + return path; + } + + public void setPath(ModifiableString path) { + setPath(path, false); + } + + public void setPath(String path) { + setPath(path, false); + } + + public void setPath(ModifiableString path, boolean adjustLengthField) { + if (adjustLengthField) { + setPathLength(path.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.path = path; + } + + public void setPath(String path, boolean adjustLengthField) { + if (adjustLengthField) { + setPathLength(path.getBytes(StandardCharsets.UTF_8).length); + } + this.path = ModifiableVariableFactory.safelySetValue(this.path, path); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestFileStatVfsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestFileStatVfsMessage.java new file mode 100644 index 000000000..d36fc2821 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestFileStatVfsMessage.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestFileStatVfsMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestFileStatVfsMessage + extends SftpRequestExtendedWithHandleMessage { + + @Override + public SftpRequestFileStatVfsMessageHandler getHandler(SshContext context) { + return new SftpRequestFileStatVfsMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestFileSyncMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestFileSyncMessage.java new file mode 100644 index 000000000..a580889ab --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestFileSyncMessage.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestFileSyncMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestFileSyncMessage + extends SftpRequestExtendedWithHandleMessage { + + @Override + public SftpRequestFileSyncMessageHandler getHandler(SshContext context) { + return new SftpRequestFileSyncMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestGetTempFolderMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestGetTempFolderMessage.java new file mode 100644 index 000000000..6d8ecbb3b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestGetTempFolderMessage.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestGetTempFolderMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestGetTempFolderMessage + extends SftpRequestExtendedMessage { + + @Override + public SftpRequestGetTempFolderMessageHandler getHandler(SshContext context) { + return new SftpRequestGetTempFolderMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestHardlinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestHardlinkMessage.java new file mode 100644 index 000000000..01a4685df --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestHardlinkMessage.java @@ -0,0 +1,68 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestHardlinkMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; + +public class SftpRequestHardlinkMessage + extends SftpRequestExtendedWithPathMessage { + + // path is the old path + + private ModifiableInteger newPathLength; + private ModifiableString newPath; + + public ModifiableInteger getNewPathLength() { + return newPathLength; + } + + public void setNewPathLength(ModifiableInteger newPathLength) { + this.newPathLength = newPathLength; + } + + public void setNewPathLength(int newPathLength) { + this.newPathLength = + ModifiableVariableFactory.safelySetValue(this.newPathLength, newPathLength); + } + + public ModifiableString getNewPath() { + return newPath; + } + + public void setNewPath(ModifiableString newPath) { + setNewPath(newPath, false); + } + + public void setNewPath(String newPath) { + setNewPath(newPath, false); + } + + public void setNewPath(ModifiableString newPath, boolean adjustLengthField) { + if (adjustLengthField) { + setNewPathLength(newPath.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.newPath = newPath; + } + + public void setNewPath(String newPath, boolean adjustLengthField) { + if (adjustLengthField) { + setNewPathLength(newPath.getBytes(StandardCharsets.UTF_8).length); + } + this.newPath = ModifiableVariableFactory.safelySetValue(this.newPath, newPath); + } + + @Override + public SftpRequestHardlinkMessageHandler getHandler(SshContext context) { + return new SftpRequestHardlinkMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestHomeDirectoryMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestHomeDirectoryMessage.java new file mode 100644 index 000000000..77d6f4b3d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestHomeDirectoryMessage.java @@ -0,0 +1,66 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestHomeDirectoryMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; + +public class SftpRequestHomeDirectoryMessage + extends SftpRequestExtendedMessage { + + private ModifiableInteger usernameLength; + private ModifiableString username; + + public ModifiableInteger getUsernameLength() { + return usernameLength; + } + + public void setUsernameLength(ModifiableInteger usernameLength) { + this.usernameLength = usernameLength; + } + + public void setUsernameLength(int usernameLength) { + this.usernameLength = + ModifiableVariableFactory.safelySetValue(this.usernameLength, usernameLength); + } + + public ModifiableString getUsername() { + return username; + } + + public void setUsername(ModifiableString username) { + setUsername(username, false); + } + + public void setUsername(String username) { + setUsername(username, false); + } + + public void setUsername(ModifiableString username, boolean adjustLengthField) { + if (adjustLengthField) { + setUsernameLength(username.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.username = username; + } + + public void setUsername(String username, boolean adjustLengthField) { + if (adjustLengthField) { + setUsernameLength(username.getBytes(StandardCharsets.UTF_8).length); + } + this.username = ModifiableVariableFactory.safelySetValue(this.username, username); + } + + @Override + public SftpRequestHomeDirectoryMessageHandler getHandler(SshContext context) { + return new SftpRequestHomeDirectoryMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestLimitsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestLimitsMessage.java new file mode 100644 index 000000000..7cbcf2167 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestLimitsMessage.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestLimitsMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestLimitsMessage extends SftpRequestExtendedMessage { + + @Override + public SftpRequestLimitsMessageHandler getHandler(SshContext context) { + return new SftpRequestLimitsMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestLinkSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestLinkSetStatMessage.java new file mode 100644 index 000000000..c6b7c9ec4 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestLinkSetStatMessage.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestLinkSetStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.util.List; + +public class SftpRequestLinkSetStatMessage + extends SftpRequestExtendedWithPathMessage { + + @HoldsModifiableVariable private SftpFileAttributes attributes; + + public SftpFileAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SftpFileAttributes attributes) { + this.attributes = attributes; + } + + @Override + public SftpRequestLinkSetStatMessageHandler getHandler(SshContext context) { + return new SftpRequestLinkSetStatMessageHandler(context); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + holders.addAll(attributes.getAllModifiableVariableHolders()); + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestMakeTempFolderMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestMakeTempFolderMessage.java new file mode 100644 index 000000000..c8a6c3022 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestMakeTempFolderMessage.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestMakeTempFolderMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestMakeTempFolderMessage + extends SftpRequestExtendedMessage { + + @Override + public SftpRequestMakeTempFolderMessageHandler getHandler(SshContext context) { + return new SftpRequestMakeTempFolderMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestPosixRenameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestPosixRenameMessage.java new file mode 100644 index 000000000..40f2cc98c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestPosixRenameMessage.java @@ -0,0 +1,68 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestPosixRenameMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; + +public class SftpRequestPosixRenameMessage + extends SftpRequestExtendedWithPathMessage { + + // path is the old path + + private ModifiableInteger newPathLength; + private ModifiableString newPath; + + public ModifiableInteger getNewPathLength() { + return newPathLength; + } + + public void setNewPathLength(ModifiableInteger newPathLength) { + this.newPathLength = newPathLength; + } + + public void setNewPathLength(int newPathLength) { + this.newPathLength = + ModifiableVariableFactory.safelySetValue(this.newPathLength, newPathLength); + } + + public ModifiableString getNewPath() { + return newPath; + } + + public void setNewPath(ModifiableString newPath) { + setNewPath(newPath, false); + } + + public void setNewPath(String newPath) { + setNewPath(newPath, false); + } + + public void setNewPath(ModifiableString newPath, boolean adjustLengthField) { + if (adjustLengthField) { + setNewPathLength(newPath.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.newPath = newPath; + } + + public void setNewPath(String newPath, boolean adjustLengthField) { + if (adjustLengthField) { + setNewPathLength(newPath.getBytes(StandardCharsets.UTF_8).length); + } + this.newPath = ModifiableVariableFactory.safelySetValue(this.newPath, newPath); + } + + @Override + public SftpRequestPosixRenameMessageHandler getHandler(SshContext context) { + return new SftpRequestPosixRenameMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestSpaceAvailableMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestSpaceAvailableMessage.java new file mode 100644 index 000000000..793160780 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestSpaceAvailableMessage.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestSpaceAvailableMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestSpaceAvailableMessage + extends SftpRequestExtendedWithPathMessage { + + @Override + public SftpRequestSpaceAvailableMessageHandler getHandler(SshContext context) { + return new SftpRequestSpaceAvailableMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestStatVfsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestStatVfsMessage.java new file mode 100644 index 000000000..94bf32c9a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestStatVfsMessage.java @@ -0,0 +1,20 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestStatVfsMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestStatVfsMessage + extends SftpRequestExtendedWithPathMessage { + + @Override + public SftpRequestStatVfsMessageHandler getHandler(SshContext context) { + return new SftpRequestStatVfsMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestUsersGroupsByIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestUsersGroupsByIdMessage.java new file mode 100644 index 000000000..ec994d407 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestUsersGroupsByIdMessage.java @@ -0,0 +1,87 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestUsersGroupsByIdMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.util.ArrayList; +import java.util.List; + +public class SftpRequestUsersGroupsByIdMessage + extends SftpRequestExtendedMessage { + + private ModifiableInteger userIdsLength; + private List userIds = new ArrayList<>(); + private ModifiableInteger groupIdsLength; + private List groupIds = new ArrayList<>(); + + public ModifiableInteger getUserIdsLength() { + return userIdsLength; + } + + public void setUserIdsLength(ModifiableInteger userIdsLength) { + this.userIdsLength = userIdsLength; + } + + public void setUserIdsLength(int userIdsLength) { + this.userIdsLength = + ModifiableVariableFactory.safelySetValue(this.userIdsLength, userIdsLength); + } + + public ModifiableInteger getGroupIdsLength() { + return groupIdsLength; + } + + public void setGroupIdsLength(ModifiableInteger groupIdsLength) { + this.groupIdsLength = groupIdsLength; + } + + public void setGroupIdsLength(int groupIdsLength) { + this.groupIdsLength = + ModifiableVariableFactory.safelySetValue(this.groupIdsLength, groupIdsLength); + } + + public List getUserIds() { + return userIds; + } + + public void setUserIds(List userIds) { + this.userIds = userIds; + } + + public void addUserId(int userId) { + userIds.add(ModifiableVariableFactory.safelySetValue(null, userId)); + } + + public void addUserId(ModifiableInteger userId) { + userIds.add(userId); + } + + public List getGroupIds() { + return groupIds; + } + + public void setGroupIds(List groupIds) { + this.groupIds = groupIds; + } + + public void addGroupId(int groupId) { + groupIds.add(ModifiableVariableFactory.safelySetValue(null, groupId)); + } + + public void addGroupId(ModifiableInteger groupId) { + groupIds.add(groupId); + } + + @Override + public SftpRequestUsersGroupsByIdMessageHandler getHandler(SshContext context) { + return new SftpRequestUsersGroupsByIdMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestVendorIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestVendorIdMessage.java new file mode 100644 index 000000000..f6e8283c3 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestVendorIdMessage.java @@ -0,0 +1,167 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestVendorIdMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; + +public class SftpRequestVendorIdMessage + extends SftpRequestExtendedMessage { + + private ModifiableInteger vendorNameLength; + private ModifiableString vendorName; + private ModifiableInteger productNameLength; + private ModifiableString productName; + private ModifiableInteger productVersionLength; + private ModifiableString productVersion; + private ModifiableLong productBuildNumber; + + public ModifiableInteger getVendorNameLength() { + return vendorNameLength; + } + + public void setVendorNameLength(ModifiableInteger vendorNameLength) { + this.vendorNameLength = vendorNameLength; + } + + public void setVendorNameLength(int vendorNameLength) { + this.vendorNameLength = + ModifiableVariableFactory.safelySetValue(this.vendorNameLength, vendorNameLength); + } + + public ModifiableString getVendorName() { + return vendorName; + } + + public void setVendorName(ModifiableString vendorName) { + setVendorName(vendorName, false); + } + + public void setVendorName(String vendorName) { + setVendorName(vendorName, false); + } + + public void setVendorName(ModifiableString vendorName, boolean adjustLengthField) { + if (adjustLengthField) { + setVendorNameLength(vendorName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.vendorName = vendorName; + } + + public void setVendorName(String vendorName, boolean adjustLengthField) { + if (adjustLengthField) { + setVendorNameLength(vendorName.getBytes(StandardCharsets.UTF_8).length); + } + this.vendorName = ModifiableVariableFactory.safelySetValue(this.vendorName, vendorName); + } + + public ModifiableInteger getProductNameLength() { + return productNameLength; + } + + public void setProductNameLength(ModifiableInteger productNameLength) { + this.productNameLength = productNameLength; + } + + public void setProductNameLength(int productNameLength) { + this.productNameLength = + ModifiableVariableFactory.safelySetValue(this.productNameLength, productNameLength); + } + + public ModifiableString getProductName() { + return productName; + } + + public void setProductName(ModifiableString productName) { + setProductName(productName, false); + } + + public void setProductName(String productName) { + setProductName(productName, false); + } + + public void setProductName(ModifiableString productName, boolean adjustLengthField) { + if (adjustLengthField) { + setProductNameLength(productName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.productName = productName; + } + + public void setProductName(String productName, boolean adjustLengthField) { + if (adjustLengthField) { + setProductNameLength(productName.getBytes(StandardCharsets.UTF_8).length); + } + this.productName = ModifiableVariableFactory.safelySetValue(this.productName, productName); + } + + public ModifiableInteger getProductVersionLength() { + return productVersionLength; + } + + public void setProductVersionLength(ModifiableInteger productVersionLength) { + this.productVersionLength = productVersionLength; + } + + public void setProductVersionLength(int productVersionLength) { + this.productVersionLength = + ModifiableVariableFactory.safelySetValue( + this.productVersionLength, productVersionLength); + } + + public ModifiableString getProductVersion() { + return productVersion; + } + + public void setProductVersion(ModifiableString productVersion) { + setProductVersion(productVersion, false); + } + + public void setProductVersion(String productVersion) { + setProductVersion(productVersion, false); + } + + public void setProductVersion(ModifiableString productVersion, boolean adjustLengthField) { + if (adjustLengthField) { + setProductVersionLength( + productVersion.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.productVersion = productVersion; + } + + public void setProductVersion(String productVersion, boolean adjustLengthField) { + if (adjustLengthField) { + setProductVersionLength(productVersion.getBytes(StandardCharsets.UTF_8).length); + } + this.productVersion = + ModifiableVariableFactory.safelySetValue(this.productVersion, productVersion); + } + + public ModifiableLong getProductBuildNumber() { + return productBuildNumber; + } + + public void setProductBuildNumber(ModifiableLong productBuildNumber) { + this.productBuildNumber = productBuildNumber; + } + + public void setProductBuildNumber(long productBuildNumber) { + this.productBuildNumber = + ModifiableVariableFactory.safelySetValue( + this.productBuildNumber, productBuildNumber); + } + + @Override + public SftpRequestVendorIdMessageHandler getHandler(SshContext context) { + return new SftpRequestVendorIdMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestCopyDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestCopyDataMessageParser.java new file mode 100644 index 000000000..da2e4ed6d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestCopyDataMessageParser.java @@ -0,0 +1,65 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyDataMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestCopyDataMessageParser + extends SftpRequestExtendedWithHandleMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestCopyDataMessageParser(byte[] array) { + super(array); + } + + public SftpRequestCopyDataMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseReadFromOffset() { + message.setReadFromOffset(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("ReadFromOffset: {}", message.getReadFromOffset().getValue()); + } + + private void parseReadDataLength() { + message.setReadDataLength(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("ReadDataLength: {}", message.getReadDataLength().getValue()); + } + + private void parseWriteToHandle() { + message.setWriteToHandleLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("WriteToHandle length: {}", message.getWriteToHandleLength().getValue()); + message.setWriteToHandle(parseByteArrayField(message.getWriteToHandleLength().getValue())); + LOGGER.debug( + "WriteToHandle: {}", + () -> ArrayConverter.bytesToRawHexString(message.getWriteToHandle().getValue())); + } + + private void parseWriteToOffset() { + message.setWriteToOffset(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("WriteToOffset: {}", message.getWriteToOffset().getValue()); + } + + @Override + protected SftpRequestCopyDataMessage createMessage() { + return new SftpRequestCopyDataMessage(); + } + + @Override + protected void parseRequestExtendedWithHandleSpecificContents() { + parseReadFromOffset(); + parseReadDataLength(); + parseWriteToHandle(); + parseWriteToOffset(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestCopyFileMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestCopyFileMessageParser.java new file mode 100644 index 000000000..f2f56e98d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestCopyFileMessageParser.java @@ -0,0 +1,57 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyFileMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestCopyFileMessageParser + extends SftpRequestExtendedWithPathMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestCopyFileMessageParser(byte[] array) { + super(array); + } + + public SftpRequestCopyFileMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestCopyFileMessage createMessage() { + return new SftpRequestCopyFileMessage(); + } + + private void parseDestinationPath() { + message.setDestinationPathLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("DestinationPath length: {}", message.getDestinationPathLength().getValue()); + message.setDestinationPath( + parseByteString( + message.getDestinationPathLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug( + "DestinationPath: {}", + () -> backslashEscapeString(message.getDestinationPath().getValue())); + } + + private void parseOverwriteDestination() { + message.setOverwriteDestination(parseByteField(1)); + LOGGER.debug("OverwriteDestination: {}", message.getOverwriteDestination().getValue()); + } + + @Override + protected void parseRequestExtendedWithPathSpecificContents() { + parseDestinationPath(); + parseOverwriteDestination(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExpandPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExpandPathMessageParser.java new file mode 100644 index 000000000..49a1a7cf9 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExpandPathMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExpandPathMessage; + +public class SftpRequestExpandPathMessageParser + extends SftpRequestExtendedWithPathMessageParser { + + public SftpRequestExpandPathMessageParser(byte[] array) { + super(array); + } + + public SftpRequestExpandPathMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestExpandPathMessage createMessage() { + return new SftpRequestExpandPathMessage(); + } + + @Override + protected void parseRequestExtendedWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedWithHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedWithHandleMessageParser.java new file mode 100644 index 000000000..aa9f2e52c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedWithHandleMessageParser.java @@ -0,0 +1,46 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExtendedWithHandleMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpRequestExtendedWithHandleMessageParser< + T extends SftpRequestExtendedWithHandleMessage> + extends SftpRequestExtendedMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpRequestExtendedWithHandleMessageParser(byte[] array) { + super(array); + } + + protected SftpRequestExtendedWithHandleMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseHandle() { + message.setHandleLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("Handle length: {}", message.getHandleLength().getValue()); + message.setHandle(parseByteArrayField(message.getHandleLength().getValue())); + LOGGER.debug( + "Handle: {}", + () -> ArrayConverter.bytesToRawHexString(message.getHandle().getValue())); + } + + @Override + protected void parseRequestExtendedSpecificContents() { + parseHandle(); + parseRequestExtendedWithHandleSpecificContents(); + } + + protected abstract void parseRequestExtendedWithHandleSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedWithPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedWithPathMessageParser.java new file mode 100644 index 000000000..bfaa2514a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedWithPathMessageParser.java @@ -0,0 +1,47 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExtendedWithPathMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpRequestExtendedWithPathMessageParser< + T extends SftpRequestExtendedWithPathMessage> + extends SftpRequestExtendedMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpRequestExtendedWithPathMessageParser(byte[] array) { + super(array); + } + + protected SftpRequestExtendedWithPathMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parsePath() { + message.setPathLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("Path length: {}", message.getPathLength().getValue()); + message.setPath( + parseByteString(message.getPathLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug("Path: {}", () -> backslashEscapeString(message.getPath().getValue())); + } + + @Override + protected void parseRequestExtendedSpecificContents() { + parsePath(); + parseRequestExtendedWithPathSpecificContents(); + } + + protected abstract void parseRequestExtendedWithPathSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestFileStatVfsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestFileStatVfsMessageParser.java new file mode 100644 index 000000000..61e250821 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestFileStatVfsMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileStatVfsMessage; + +public class SftpRequestFileStatVfsMessageParser + extends SftpRequestExtendedWithHandleMessageParser { + + public SftpRequestFileStatVfsMessageParser(byte[] array) { + super(array); + } + + public SftpRequestFileStatVfsMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestFileStatVfsMessage createMessage() { + return new SftpRequestFileStatVfsMessage(); + } + + @Override + protected void parseRequestExtendedWithHandleSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestFileSyncMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestFileSyncMessageParser.java new file mode 100644 index 000000000..65f1b82d4 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestFileSyncMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileSyncMessage; + +public class SftpRequestFileSyncMessageParser + extends SftpRequestExtendedWithHandleMessageParser { + + public SftpRequestFileSyncMessageParser(byte[] array) { + super(array); + } + + public SftpRequestFileSyncMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestFileSyncMessage createMessage() { + return new SftpRequestFileSyncMessage(); + } + + @Override + protected void parseRequestExtendedWithHandleSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestGetTempFolderMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestGetTempFolderMessageParser.java new file mode 100644 index 000000000..1da7286d6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestGetTempFolderMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestGetTempFolderMessage; + +public class SftpRequestGetTempFolderMessageParser + extends SftpRequestExtendedMessageParser { + + public SftpRequestGetTempFolderMessageParser(byte[] array) { + super(array); + } + + public SftpRequestGetTempFolderMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestGetTempFolderMessage createMessage() { + return new SftpRequestGetTempFolderMessage(); + } + + @Override + protected void parseRequestExtendedSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestHardlinkMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestHardlinkMessageParser.java new file mode 100644 index 000000000..77b37aa55 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestHardlinkMessageParser.java @@ -0,0 +1,48 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHardlinkMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestHardlinkMessageParser + extends SftpRequestExtendedWithPathMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestHardlinkMessageParser(byte[] array) { + super(array); + } + + public SftpRequestHardlinkMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestHardlinkMessage createMessage() { + return new SftpRequestHardlinkMessage(); + } + + private void parseNewPath() { + message.setNewPathLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("NewPath length: {}", message.getNewPathLength().getValue()); + message.setNewPath( + parseByteString(message.getNewPathLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug("NewPath: {}", () -> backslashEscapeString(message.getNewPath().getValue())); + } + + @Override + protected void parseRequestExtendedWithPathSpecificContents() { + parseNewPath(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestHomeDirectoryMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestHomeDirectoryMessageParser.java new file mode 100644 index 000000000..491c58bc5 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestHomeDirectoryMessageParser.java @@ -0,0 +1,48 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHomeDirectoryMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestHomeDirectoryMessageParser + extends SftpRequestExtendedMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestHomeDirectoryMessageParser(byte[] array) { + super(array); + } + + public SftpRequestHomeDirectoryMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestHomeDirectoryMessage createMessage() { + return new SftpRequestHomeDirectoryMessage(); + } + + private void parseUsername() { + message.setUsernameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("Username length: {}", message.getUsernameLength().getValue()); + message.setUsername( + parseByteString(message.getUsernameLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug("Username: {}", () -> backslashEscapeString(message.getUsername().getValue())); + } + + @Override + protected void parseRequestExtendedSpecificContents() { + parseUsername(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestLimitsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestLimitsMessageParser.java new file mode 100644 index 000000000..e0e82889b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestLimitsMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLimitsMessage; + +public class SftpRequestLimitsMessageParser + extends SftpRequestExtendedMessageParser { + + public SftpRequestLimitsMessageParser(byte[] array) { + super(array); + } + + public SftpRequestLimitsMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestLimitsMessage createMessage() { + return new SftpRequestLimitsMessage(); + } + + @Override + protected void parseRequestExtendedSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestLinkSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestLinkSetStatMessageParser.java new file mode 100644 index 000000000..3c6f9aee1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestLinkSetStatMessageParser.java @@ -0,0 +1,40 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLinkSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; + +public class SftpRequestLinkSetStatMessageParser + extends SftpRequestExtendedWithPathMessageParser { + + public SftpRequestLinkSetStatMessageParser(byte[] array) { + super(array); + } + + public SftpRequestLinkSetStatMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestLinkSetStatMessage createMessage() { + return new SftpRequestLinkSetStatMessage(); + } + + private void parseAttributes() { + SftpFileAttributesParser attributesParser = + new SftpFileAttributesParser(getArray(), getPointer()); + message.setAttributes(attributesParser.parse()); + setPointer(attributesParser.getPointer()); + } + + @Override + protected void parseRequestExtendedWithPathSpecificContents() { + parseAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestMakeTempFolderMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestMakeTempFolderMessageParser.java new file mode 100644 index 000000000..0252c8520 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestMakeTempFolderMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestMakeTempFolderMessage; + +public class SftpRequestMakeTempFolderMessageParser + extends SftpRequestExtendedMessageParser { + + public SftpRequestMakeTempFolderMessageParser(byte[] array) { + super(array); + } + + public SftpRequestMakeTempFolderMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestMakeTempFolderMessage createMessage() { + return new SftpRequestMakeTempFolderMessage(); + } + + @Override + protected void parseRequestExtendedSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestPosixRenameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestPosixRenameMessageParser.java new file mode 100644 index 000000000..04e88800d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestPosixRenameMessageParser.java @@ -0,0 +1,48 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestPosixRenameMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestPosixRenameMessageParser + extends SftpRequestExtendedWithPathMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestPosixRenameMessageParser(byte[] array) { + super(array); + } + + public SftpRequestPosixRenameMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestPosixRenameMessage createMessage() { + return new SftpRequestPosixRenameMessage(); + } + + private void parseNewPath() { + message.setNewPathLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("NewPath length: {}", message.getNewPathLength().getValue()); + message.setNewPath( + parseByteString(message.getNewPathLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug("NewPath: {}", () -> backslashEscapeString(message.getNewPath().getValue())); + } + + @Override + protected void parseRequestExtendedWithPathSpecificContents() { + parseNewPath(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestSpaceAvailableMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestSpaceAvailableMessageParser.java new file mode 100644 index 000000000..65bc88204 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestSpaceAvailableMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestSpaceAvailableMessage; + +public class SftpRequestSpaceAvailableMessageParser + extends SftpRequestExtendedWithPathMessageParser { + + public SftpRequestSpaceAvailableMessageParser(byte[] array) { + super(array); + } + + public SftpRequestSpaceAvailableMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestSpaceAvailableMessage createMessage() { + return new SftpRequestSpaceAvailableMessage(); + } + + @Override + protected void parseRequestExtendedWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestStatVfsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestStatVfsMessageParser.java new file mode 100644 index 000000000..65f272aca --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestStatVfsMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestStatVfsMessage; + +public class SftpRequestStatVfsMessageParser + extends SftpRequestExtendedWithPathMessageParser { + + public SftpRequestStatVfsMessageParser(byte[] array) { + super(array); + } + + public SftpRequestStatVfsMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestStatVfsMessage createMessage() { + return new SftpRequestStatVfsMessage(); + } + + @Override + protected void parseRequestExtendedWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestUsersGroupsByIdMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestUsersGroupsByIdMessageParser.java new file mode 100644 index 000000000..4bc5032b3 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestUsersGroupsByIdMessageParser.java @@ -0,0 +1,59 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestUsersGroupsByIdMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestUsersGroupsByIdMessageParser + extends SftpRequestExtendedMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestUsersGroupsByIdMessageParser(byte[] array) { + super(array); + } + + public SftpRequestUsersGroupsByIdMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestUsersGroupsByIdMessage createMessage() { + return new SftpRequestUsersGroupsByIdMessage(); + } + + private void parseUserIds() { + message.setUserIdsLength(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("UserIdsLength: {}", message.getUserIdsLength().getValue()); + int userIdsCount = message.getUserIdsLength().getValue() / DataFormatConstants.UINT32_SIZE; + for (int i = 0; i < userIdsCount; i++) { + message.addUserId(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("UserId[{}]: {}", i, message.getUserIdsLength().getValue()); + } + } + + private void parseGroupIds() { + message.setGroupIdsLength(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("GroupIdsLength: {}", message.getGroupIdsLength().getValue()); + int groupIdsCount = + message.getGroupIdsLength().getValue() / DataFormatConstants.UINT32_SIZE; + for (int i = 0; i < groupIdsCount; i++) { + message.addGroupId(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("GroupId[{}]: {}", i, message.getGroupIdsLength().getValue()); + } + } + + @Override + protected void parseRequestExtendedSpecificContents() { + parseUserIds(); + parseGroupIds(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestVendorIdMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestVendorIdMessageParser.java new file mode 100644 index 000000000..bcc6f7ba6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestVendorIdMessageParser.java @@ -0,0 +1,78 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestVendorIdMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestVendorIdMessageParser + extends SftpRequestExtendedMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestVendorIdMessageParser(byte[] array) { + super(array); + } + + public SftpRequestVendorIdMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestVendorIdMessage createMessage() { + return new SftpRequestVendorIdMessage(); + } + + private void parseVendorName() { + message.setVendorNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("VendorName length: {}", message.getVendorNameLength().getValue()); + message.setVendorName( + parseByteString(message.getVendorNameLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug( + "VendorName: {}", () -> backslashEscapeString(message.getVendorName().getValue())); + } + + private void parseProductName() { + message.setProductNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("ProductName length: {}", message.getProductNameLength().getValue()); + message.setProductName( + parseByteString(message.getProductNameLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug( + "ProductName: {}", + () -> backslashEscapeString(message.getProductName().getValue())); + } + + private void parseProductVersion() { + message.setProductVersionLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("ProductVersion length: {}", message.getProductVersionLength().getValue()); + message.setProductVersion( + parseByteString( + message.getProductVersionLength().getValue(), StandardCharsets.UTF_8)); + LOGGER.debug( + "ProductVersion: {}", + () -> backslashEscapeString(message.getProductVersion().getValue())); + } + + private void parseProductBuildNumber() { + message.setProductBuildNumber(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("ProductBuildNumber: {}", message.getProductBuildNumber().getValue()); + } + + @Override + protected void parseRequestExtendedSpecificContents() { + parseVendorName(); + parseProductName(); + parseProductVersion(); + parseProductBuildNumber(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestCopyDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestCopyDataMessagePreparator.java new file mode 100644 index 000000000..a63a0d486 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestCopyDataMessagePreparator.java @@ -0,0 +1,52 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyDataMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestCopyDataMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestCopyDataMessagePreparator( + Chooser chooser, SftpRequestCopyDataMessage message) { + super(chooser, message, SftpExtension.COPY_DATA); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getHandle() == null) { + // TODO Get valid Handle + getObject().setHandle(new byte[100], true); + } + if (getObject().getHandleLength() == null) { + getObject().setHandleLength(getObject().getHandle().getValue().length); + } + + if (getObject().getReadFromOffset() == null) { + getObject().setReadFromOffset(0); + } + + if (getObject().getReadDataLength() == null) { + getObject().setReadDataLength(1000000); + } + + if (getObject().getWriteToHandle() == null) { + // TODO Get valid WriteToHandle + getObject().setWriteToHandle(new byte[100], true); + } + if (getObject().getWriteToHandleLength() == null) { + getObject().setWriteToHandleLength(getObject().getWriteToHandle().getValue().length); + } + + if (getObject().getWriteToOffset() == null) { + getObject().setWriteToOffset(0); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestCopyFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestCopyFileMessagePreparator.java new file mode 100644 index 000000000..3c24326c6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestCopyFileMessagePreparator.java @@ -0,0 +1,43 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyFileMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestCopyFileMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestCopyFileMessagePreparator( + Chooser chooser, SftpRequestCopyFileMessage message) { + super(chooser, message, SftpExtension.COPY_FILE); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/etc/passwd", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + + if (getObject().getDestinationPath() == null) { + getObject().setDestinationPath("/tmp/passwd", true); + } + if (getObject().getDestinationPathLength() == null) { + getObject() + .setDestinationPathLength(getObject().getDestinationPath().getValue().length()); + } + + if (getObject().getOverwriteDestination() == null) { + getObject().setOverwriteDestination(true); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestExpandPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestExpandPathMessagePreparator.java new file mode 100644 index 000000000..d618d6958 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestExpandPathMessagePreparator.java @@ -0,0 +1,31 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExpandPathMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestExpandPathMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestExpandPathMessagePreparator( + Chooser chooser, SftpRequestExpandPathMessage message) { + super(chooser, message, SftpExtension.EXPAND_PATH); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("~/.config/passwd", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestFileStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestFileStatVfsMessagePreparator.java new file mode 100644 index 000000000..9f8702225 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestFileStatVfsMessagePreparator.java @@ -0,0 +1,32 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileStatVfsMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestFileStatVfsMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestFileStatVfsMessagePreparator( + Chooser chooser, SftpRequestFileStatVfsMessage message) { + super(chooser, message, SftpExtension.F_STAT_VFS_OPENSSH_COM); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getHandle() == null) { + // TODO Get valid Handle + getObject().setHandle(new byte[100], true); + } + if (getObject().getHandleLength() == null) { + getObject().setHandleLength(getObject().getHandle().getValue().length); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestFileSyncMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestFileSyncMessagePreparator.java new file mode 100644 index 000000000..9c22f3175 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestFileSyncMessagePreparator.java @@ -0,0 +1,32 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileSyncMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestFileSyncMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestFileSyncMessagePreparator( + Chooser chooser, SftpRequestFileSyncMessage message) { + super(chooser, message, SftpExtension.F_SYNC_OPENSSH_COM); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getHandle() == null) { + // TODO Get valid Handle + getObject().setHandle(new byte[100], true); + } + if (getObject().getHandleLength() == null) { + getObject().setHandleLength(getObject().getHandle().getValue().length); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestGetTempFolderMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestGetTempFolderMessagePreparator.java new file mode 100644 index 000000000..b3742827e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestGetTempFolderMessagePreparator.java @@ -0,0 +1,24 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestGetTempFolderMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestGetTempFolderMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestGetTempFolderMessagePreparator( + Chooser chooser, SftpRequestGetTempFolderMessage message) { + super(chooser, message, SftpExtension.GET_TEMP_FOLDER); + } + + @Override + public void prepareRequestExtendedSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestHardlinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestHardlinkMessagePreparator.java new file mode 100644 index 000000000..8f17b6a13 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestHardlinkMessagePreparator.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHardlinkMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestHardlinkMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestHardlinkMessagePreparator( + Chooser chooser, SftpRequestHardlinkMessage message) { + super(chooser, message, SftpExtension.HARDLINK_OPENSSH_COM); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/etc/passwd", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + + if (getObject().getNewPath() == null) { + getObject().setNewPath("/etc/passwd-new", true); + } + if (getObject().getNewPathLength() == null) { + getObject().setNewPathLength(getObject().getNewPath().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestHomeDirectoryMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestHomeDirectoryMessagePreparator.java new file mode 100644 index 000000000..5e08fb96b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestHomeDirectoryMessagePreparator.java @@ -0,0 +1,31 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHomeDirectoryMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestHomeDirectoryMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestHomeDirectoryMessagePreparator( + Chooser chooser, SftpRequestHomeDirectoryMessage message) { + super(chooser, message, SftpExtension.HOME_DIRECTORY); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getUsername() == null) { + getObject().setUsername("ssh-attacker", true); + } + if (getObject().getUsernameLength() == null) { + getObject().setUsernameLength(getObject().getUsername().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestLimitsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestLimitsMessagePreparator.java new file mode 100644 index 000000000..dedf875f1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestLimitsMessagePreparator.java @@ -0,0 +1,23 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLimitsMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestLimitsMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestLimitsMessagePreparator(Chooser chooser, SftpRequestLimitsMessage message) { + super(chooser, message, SftpExtension.LIMITS); + } + + @Override + public void prepareRequestExtendedSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestLinkSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestLinkSetStatMessagePreparator.java new file mode 100644 index 000000000..890ae9de0 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestLinkSetStatMessagePreparator.java @@ -0,0 +1,37 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLinkSetStatMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestLinkSetStatMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestLinkSetStatMessagePreparator( + Chooser chooser, SftpRequestLinkSetStatMessage message) { + super(chooser, message, SftpExtension.L_SET_STAT); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/bin/python3", true); + } + + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + if (getObject().getAttributes() == null) { + getObject().setAttributes(new SftpFileAttributes()); + } + getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestMakeTempFolderMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestMakeTempFolderMessagePreparator.java new file mode 100644 index 000000000..9f6177704 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestMakeTempFolderMessagePreparator.java @@ -0,0 +1,24 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestMakeTempFolderMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestMakeTempFolderMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestMakeTempFolderMessagePreparator( + Chooser chooser, SftpRequestMakeTempFolderMessage message) { + super(chooser, message, SftpExtension.MAKE_TEMP_FOLDER); + } + + @Override + public void prepareRequestExtendedSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestPosixRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestPosixRenameMessagePreparator.java new file mode 100644 index 000000000..7774e28af --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestPosixRenameMessagePreparator.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestPosixRenameMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestPosixRenameMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestPosixRenameMessagePreparator( + Chooser chooser, SftpRequestPosixRenameMessage message) { + super(chooser, message, SftpExtension.POSIX_RENAME_OPENSSH_COM); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/etc/passwd", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + + if (getObject().getNewPath() == null) { + getObject().setNewPath("/etc/passwd-new", true); + } + if (getObject().getNewPathLength() == null) { + getObject().setNewPathLength(getObject().getNewPath().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestSpaceAvailableMessagePreparator.java new file mode 100644 index 000000000..48cd4c6e0 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestSpaceAvailableMessagePreparator.java @@ -0,0 +1,31 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestSpaceAvailableMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestSpaceAvailableMessagePreparator( + Chooser chooser, SftpRequestSpaceAvailableMessage message) { + super(chooser, message, SftpExtension.SPACE_AVAILABLE); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/tmp", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestStatVfsMessagePreparator.java new file mode 100644 index 000000000..032990321 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestStatVfsMessagePreparator.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestStatVfsMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestStatVfsMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestStatVfsMessagePreparator(Chooser chooser, SftpRequestStatVfsMessage message) { + super(chooser, message, SftpExtension.STAT_VFS_OPENSSH_COM); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/etc/", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestUsersGroupsByIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestUsersGroupsByIdMessagePreparator.java new file mode 100644 index 000000000..362692691 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestUsersGroupsByIdMessagePreparator.java @@ -0,0 +1,39 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestUsersGroupsByIdMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestUsersGroupsByIdMessagePreparator( + Chooser chooser, SftpRequestUsersGroupsByIdMessage message) { + super(chooser, message, SftpExtension.USERS_GROUPS_BY_ID); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getUserIds().isEmpty()) { + getObject().addUserId(0); + getObject().addUserId(1000); + } + if (getObject().getGroupIds().isEmpty()) { + getObject().addGroupId(0); + } + getObject() + .setUserIdsLength( + getObject().getUserIds().size() * DataFormatConstants.UINT32_SIZE); + getObject() + .setGroupIdsLength( + getObject().getGroupIds().size() * DataFormatConstants.UINT32_SIZE); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestVendorIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestVendorIdMessagePreparator.java new file mode 100644 index 000000000..4736e4b4a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestVendorIdMessagePreparator.java @@ -0,0 +1,50 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestVendorIdMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestVendorIdMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestVendorIdMessagePreparator( + Chooser chooser, SftpRequestVendorIdMessage message) { + super(chooser, message, SftpExtension.VENDOR_ID); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getVendorName() == null) { + getObject().setVendorName("NDS RUB", true); + } + if (getObject().getVendorNameLength() == null) { + getObject().setVendorNameLength(getObject().getVendorName().getValue().length()); + } + + if (getObject().getProductName() == null) { + getObject().setProductName("SSH-Attacker", true); + } + if (getObject().getProductNameLength() == null) { + getObject().setProductNameLength(getObject().getProductName().getValue().length()); + } + + if (getObject().getProductVersion() == null) { + getObject().setProductVersion("1.0", true); + } + if (getObject().getProductVersionLength() == null) { + getObject() + .setProductVersionLength(getObject().getProductVersion().getValue().length()); + } + + if (getObject().getProductBuildNumber() == null) { + getObject().setProductBuildNumber(2024); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestCopyDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestCopyDataMessageSerializer.java new file mode 100644 index 000000000..b67bff637 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestCopyDataMessageSerializer.java @@ -0,0 +1,58 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyDataMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestCopyDataMessageSerializer + extends SftpRequestExtendedWithHandleMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestCopyDataMessageSerializer(SftpRequestCopyDataMessage message) { + super(message); + } + + private void serializeReadFromOffset() { + LOGGER.debug("ReadFromOffset: {}", message.getReadFromOffset().getValue()); + appendLong(message.getReadFromOffset().getValue(), DataFormatConstants.UINT64_SIZE); + } + + private void serializeReadDataLength() { + LOGGER.debug("ReadDataLength: {}", message.getReadDataLength().getValue()); + appendLong(message.getReadDataLength().getValue(), DataFormatConstants.UINT64_SIZE); + } + + private void serializeWriteToHandle() { + LOGGER.debug("WriteToHandle length: {}", message.getWriteToHandleLength().getValue()); + appendInt( + message.getWriteToHandleLength().getValue(), + DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "WriteToHandle: {}", + () -> ArrayConverter.bytesToRawHexString(message.getWriteToHandle().getValue())); + appendBytes(message.getWriteToHandle().getValue()); + } + + private void serializeWriteToOffset() { + LOGGER.debug("WriteToOffset: {}", message.getWriteToOffset().getValue()); + appendLong(message.getWriteToOffset().getValue(), DataFormatConstants.UINT64_SIZE); + } + + @Override + protected void serializeRequestExtendedWithHandleSpecificContents() { + serializeReadFromOffset(); + serializeReadDataLength(); + serializeWriteToHandle(); + serializeWriteToOffset(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestCopyFileMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestCopyFileMessageSerializer.java new file mode 100644 index 000000000..d2552a184 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestCopyFileMessageSerializer.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyFileMessage; +import de.rub.nds.sshattacker.core.util.Converter; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestCopyFileMessageSerializer + extends SftpRequestExtendedWithPathMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestCopyFileMessageSerializer(SftpRequestCopyFileMessage message) { + super(message); + } + + private void serializeDestinationPath() { + LOGGER.debug("DestinationPath length: {}", message.getDestinationPathLength().getValue()); + appendInt( + message.getDestinationPathLength().getValue(), + DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "DestinationPath: {}", + () -> backslashEscapeString(message.getDestinationPath().getValue())); + appendString(message.getDestinationPath().getValue(), StandardCharsets.UTF_8); + } + + private void serializeOverwriteDestination() { + LOGGER.debug( + "OverwriteDestination: {}", + Converter.byteToBoolean(message.getOverwriteDestination().getValue())); + appendByte(message.getOverwriteDestination().getValue()); + } + + @Override + protected void serializeRequestExtendedWithPathSpecificContents() { + serializeDestinationPath(); + serializeOverwriteDestination(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExpandPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExpandPathMessageSerializer.java new file mode 100644 index 000000000..3eac8a876 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExpandPathMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExpandPathMessage; + +public class SftpRequestExpandPathMessageSerializer + extends SftpRequestExtendedWithPathMessageSerializer { + + public SftpRequestExpandPathMessageSerializer(SftpRequestExpandPathMessage message) { + super(message); + } + + @Override + protected void serializeRequestExtendedWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedWithHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedWithHandleMessageSerializer.java new file mode 100644 index 000000000..f529b6121 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedWithHandleMessageSerializer.java @@ -0,0 +1,42 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExtendedWithHandleMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpRequestExtendedWithHandleMessageSerializer< + T extends SftpRequestExtendedWithHandleMessage> + extends SftpRequestExtendedMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpRequestExtendedWithHandleMessageSerializer(T message) { + super(message); + } + + private void serializeHandle() { + LOGGER.debug("Handle length: {}", message.getHandleLength().getValue()); + appendInt(message.getHandleLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "Handle: {}", + () -> ArrayConverter.bytesToRawHexString(message.getHandle().getValue())); + appendBytes(message.getHandle().getValue()); + } + + @Override + protected void serializeRequestExtendedSpecificContents() { + serializeHandle(); + serializeRequestExtendedWithHandleSpecificContents(); + } + + protected abstract void serializeRequestExtendedWithHandleSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedWithPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedWithPathMessageSerializer.java new file mode 100644 index 000000000..b21634086 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedWithPathMessageSerializer.java @@ -0,0 +1,42 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExtendedWithPathMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class SftpRequestExtendedWithPathMessageSerializer< + T extends SftpRequestExtendedWithPathMessage> + extends SftpRequestExtendedMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + protected SftpRequestExtendedWithPathMessageSerializer(T message) { + super(message); + } + + private void serializePath() { + LOGGER.debug("Path length: {}", message.getPathLength().getValue()); + appendInt(message.getPathLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("Path: {}", () -> backslashEscapeString(message.getPath().getValue())); + appendString(message.getPath().getValue(), StandardCharsets.UTF_8); + } + + @Override + protected void serializeRequestExtendedSpecificContents() { + serializePath(); + serializeRequestExtendedWithPathSpecificContents(); + } + + protected abstract void serializeRequestExtendedWithPathSpecificContents(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestFileStatVfsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestFileStatVfsMessageSerializer.java new file mode 100644 index 000000000..72d00e0da --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestFileStatVfsMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileStatVfsMessage; + +public class SftpRequestFileStatVfsMessageSerializer + extends SftpRequestExtendedWithHandleMessageSerializer { + + public SftpRequestFileStatVfsMessageSerializer(SftpRequestFileStatVfsMessage message) { + super(message); + } + + @Override + protected void serializeRequestExtendedWithHandleSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestFileSyncMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestFileSyncMessageSerializer.java new file mode 100644 index 000000000..084f0fa7c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestFileSyncMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileSyncMessage; + +public class SftpRequestFileSyncMessageSerializer + extends SftpRequestExtendedWithHandleMessageSerializer { + + public SftpRequestFileSyncMessageSerializer(SftpRequestFileSyncMessage message) { + super(message); + } + + @Override + protected void serializeRequestExtendedWithHandleSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestGetTempFolderMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestGetTempFolderMessageSerializer.java new file mode 100644 index 000000000..ba40e9610 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestGetTempFolderMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestGetTempFolderMessage; + +public class SftpRequestGetTempFolderMessageSerializer + extends SftpRequestExtendedMessageSerializer { + + public SftpRequestGetTempFolderMessageSerializer(SftpRequestGetTempFolderMessage message) { + super(message); + } + + @Override + protected void serializeRequestExtendedSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestHardlinkMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestHardlinkMessageSerializer.java new file mode 100644 index 000000000..6f5ac08c5 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestHardlinkMessageSerializer.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHardlinkMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestHardlinkMessageSerializer + extends SftpRequestExtendedWithPathMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestHardlinkMessageSerializer(SftpRequestHardlinkMessage message) { + super(message); + } + + private void serializeNewPath() { + LOGGER.debug("NewPath length: {}", message.getNewPathLength().getValue()); + appendInt(message.getNewPathLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("NewPath: {}", () -> backslashEscapeString(message.getNewPath().getValue())); + appendString(message.getNewPath().getValue(), StandardCharsets.UTF_8); + } + + @Override + protected void serializeRequestExtendedWithPathSpecificContents() { + serializeNewPath(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestHomeDirectoryMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestHomeDirectoryMessageSerializer.java new file mode 100644 index 000000000..af6b4903e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestHomeDirectoryMessageSerializer.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHomeDirectoryMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestHomeDirectoryMessageSerializer + extends SftpRequestExtendedMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestHomeDirectoryMessageSerializer(SftpRequestHomeDirectoryMessage message) { + super(message); + } + + private void serializeUsername() { + LOGGER.debug("Username length: {}", message.getUsernameLength().getValue()); + appendInt(message.getUsernameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("Username: {}", () -> backslashEscapeString(message.getUsername().getValue())); + appendString(message.getUsername().getValue(), StandardCharsets.UTF_8); + } + + @Override + protected void serializeRequestExtendedSpecificContents() { + serializeUsername(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestLimitsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestLimitsMessageSerializer.java new file mode 100644 index 000000000..9276dd667 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestLimitsMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLimitsMessage; + +public class SftpRequestLimitsMessageSerializer + extends SftpRequestExtendedMessageSerializer { + + public SftpRequestLimitsMessageSerializer(SftpRequestLimitsMessage message) { + super(message); + } + + @Override + protected void serializeRequestExtendedSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestLinkSetStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestLinkSetStatMessageSerializer.java new file mode 100644 index 000000000..cb76c81a8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestLinkSetStatMessageSerializer.java @@ -0,0 +1,27 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLinkSetStatMessage; + +public class SftpRequestLinkSetStatMessageSerializer + extends SftpRequestExtendedWithPathMessageSerializer { + + public SftpRequestLinkSetStatMessageSerializer(SftpRequestLinkSetStatMessage message) { + super(message); + } + + private void serializeAttributes() { + appendBytes(message.getAttributes().getHandler(null).getSerializer().serialize()); + } + + @Override + protected void serializeRequestExtendedWithPathSpecificContents() { + serializeAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestMakeTempFolderMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestMakeTempFolderMessageSerializer.java new file mode 100644 index 000000000..9d627df1b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestMakeTempFolderMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestMakeTempFolderMessage; + +public class SftpRequestMakeTempFolderMessageSerializer + extends SftpRequestExtendedMessageSerializer { + + public SftpRequestMakeTempFolderMessageSerializer(SftpRequestMakeTempFolderMessage message) { + super(message); + } + + @Override + protected void serializeRequestExtendedSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestPosixRenameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestPosixRenameMessageSerializer.java new file mode 100644 index 000000000..b6f71e3c2 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestPosixRenameMessageSerializer.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestPosixRenameMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestPosixRenameMessageSerializer + extends SftpRequestExtendedWithPathMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestPosixRenameMessageSerializer(SftpRequestPosixRenameMessage message) { + super(message); + } + + private void serializeNewPath() { + LOGGER.debug("NewPath length: {}", message.getNewPathLength().getValue()); + appendInt(message.getNewPathLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("NewPath: {}", () -> backslashEscapeString(message.getNewPath().getValue())); + appendString(message.getNewPath().getValue(), StandardCharsets.UTF_8); + } + + @Override + protected void serializeRequestExtendedWithPathSpecificContents() { + serializeNewPath(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestSpaceAvailableMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestSpaceAvailableMessageSerializer.java new file mode 100644 index 000000000..0fa592ee1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestSpaceAvailableMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestSpaceAvailableMessage; + +public class SftpRequestSpaceAvailableMessageSerializer + extends SftpRequestExtendedWithPathMessageSerializer { + + public SftpRequestSpaceAvailableMessageSerializer(SftpRequestSpaceAvailableMessage message) { + super(message); + } + + @Override + protected void serializeRequestExtendedWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestStatVfsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestStatVfsMessageSerializer.java new file mode 100644 index 000000000..6d76653ba --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestStatVfsMessageSerializer.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestStatVfsMessage; + +public class SftpRequestStatVfsMessageSerializer + extends SftpRequestExtendedWithPathMessageSerializer { + + public SftpRequestStatVfsMessageSerializer(SftpRequestStatVfsMessage message) { + super(message); + } + + @Override + protected void serializeRequestExtendedWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestUsersGroupsByIdMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestUsersGroupsByIdMessageSerializer.java new file mode 100644 index 000000000..03f0531c4 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestUsersGroupsByIdMessageSerializer.java @@ -0,0 +1,49 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestUsersGroupsByIdMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestUsersGroupsByIdMessageSerializer + extends SftpRequestExtendedMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestUsersGroupsByIdMessageSerializer(SftpRequestUsersGroupsByIdMessage message) { + super(message); + } + + private void serializeUserIdsLength() { + LOGGER.debug("UserIdsLength: {}", message.getUserIdsLength().getValue()); + appendInt(message.getUserIdsLength().getValue(), DataFormatConstants.UINT32_SIZE); + + for (int i = 0; i < message.getUserIds().size(); i++) { + LOGGER.debug("UserId[{}]: {}", i, message.getUserIdsLength().getValue()); + appendInt(message.getUserIdsLength().getValue(), DataFormatConstants.UINT32_SIZE); + } + } + + private void serializeGroupIdsLength() { + LOGGER.debug("GroupIdsLength: {}", message.getGroupIdsLength().getValue()); + appendInt(message.getGroupIdsLength().getValue(), DataFormatConstants.UINT32_SIZE); + + for (int i = 0; i < message.getGroupIds().size(); i++) { + LOGGER.debug("GroupId[{}]: {}", i, message.getGroupIdsLength().getValue()); + appendInt(message.getGroupIdsLength().getValue(), DataFormatConstants.UINT32_SIZE); + } + } + + @Override + protected void serializeRequestExtendedSpecificContents() { + serializeUserIdsLength(); + serializeGroupIdsLength(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestVendorIdMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestVendorIdMessageSerializer.java new file mode 100644 index 000000000..c5df1e285 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestVendorIdMessageSerializer.java @@ -0,0 +1,68 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestVendorIdMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestVendorIdMessageSerializer + extends SftpRequestExtendedMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestVendorIdMessageSerializer(SftpRequestVendorIdMessage message) { + super(message); + } + + private void serializeVendorName() { + LOGGER.debug("VendorName length: {}", message.getVendorNameLength().getValue()); + appendInt(message.getVendorNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "VendorName: {}", () -> backslashEscapeString(message.getVendorName().getValue())); + appendString(message.getVendorName().getValue(), StandardCharsets.UTF_8); + } + + private void serializeProductName() { + LOGGER.debug("ProductName length: {}", message.getProductNameLength().getValue()); + appendInt( + message.getProductNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "ProductName: {}", + () -> backslashEscapeString(message.getProductName().getValue())); + appendString(message.getProductName().getValue(), StandardCharsets.UTF_8); + } + + private void serializeProductVersion() { + LOGGER.debug("ProductVersion length: {}", message.getProductVersionLength().getValue()); + appendInt( + message.getProductVersionLength().getValue(), + DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "ProductVersion: {}", + () -> backslashEscapeString(message.getProductVersion().getValue())); + appendString(message.getProductVersion().getValue(), StandardCharsets.UTF_8); + } + + private void serializeProductBuildNumber() { + LOGGER.debug("ProductBuildNumber: {}", message.getProductBuildNumber().getValue()); + appendLong(message.getProductBuildNumber().getValue(), DataFormatConstants.UINT64_SIZE); + } + + @Override + protected void serializeRequestExtendedSpecificContents() { + serializeVendorName(); + serializeProductName(); + serializeProductVersion(); + serializeProductBuildNumber(); + } +} From 08b101d86e7a969cbe6e8a65bcd7b1f5df5b35df Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 2 Nov 2024 13:48:26 +0100 Subject: [PATCH 033/203] move extended Requests into extended_request package --- .../core/data/sftp/SftpMessageParser.java | 55 +++++++++++++++++++ .../SftpRequestCopyDataMessageHandler.java | 10 ++-- .../SftpRequestCopyFileMessageHandler.java | 10 ++-- .../SftpRequestExpandPathMessageHandler.java | 10 ++-- .../SftpRequestFileStatVfsMessageHandler.java | 10 ++-- .../SftpRequestFileSyncMessageHandler.java | 10 ++-- ...ftpRequestGetTempFolderMessageHandler.java | 10 ++-- .../SftpRequestHardlinkMessageHandler.java | 10 ++-- ...ftpRequestHomeDirectoryMessageHandler.java | 10 ++-- .../SftpRequestLimitsMessageHandler.java | 10 ++-- .../SftpRequestLinkSetStatMessageHandler.java | 10 ++-- ...tpRequestMakeTempFolderMessageHandler.java | 10 ++-- .../SftpRequestPosixRenameMessageHandler.java | 10 ++-- ...tpRequestSpaceAvailableMessageHandler.java | 10 ++-- .../SftpRequestStatVfsMessageHandler.java | 10 ++-- ...pRequestUsersGroupsByIdMessageHandler.java | 10 ++-- .../SftpRequestVendorIdMessageHandler.java | 10 ++-- .../SftpRequestCopyDataMessage.java | 4 +- .../SftpRequestCopyFileMessage.java | 4 +- .../SftpRequestExpandPathMessage.java | 4 +- .../SftpRequestExtendedMessage.java | 2 +- .../SftpRequestExtendedWithHandleMessage.java | 2 +- .../SftpRequestExtendedWithPathMessage.java | 2 +- .../SftpRequestFileStatVfsMessage.java | 4 +- .../SftpRequestFileSyncMessage.java | 4 +- .../SftpRequestGetTempFolderMessage.java | 4 +- .../SftpRequestHardlinkMessage.java | 4 +- .../SftpRequestHomeDirectoryMessage.java | 4 +- .../SftpRequestLimitsMessage.java | 4 +- .../SftpRequestLinkSetStatMessage.java | 4 +- .../SftpRequestMakeTempFolderMessage.java | 4 +- .../SftpRequestPosixRenameMessage.java | 4 +- .../SftpRequestSpaceAvailableMessage.java | 4 +- .../SftpRequestStatVfsMessage.java | 4 +- .../SftpRequestUsersGroupsByIdMessage.java | 30 +++++----- .../SftpRequestVendorIdMessage.java | 4 +- .../SftpRequestCopyDataMessageParser.java | 4 +- .../SftpRequestCopyFileMessageParser.java | 4 +- .../SftpRequestExpandPathMessageParser.java | 4 +- .../SftpRequestExtendedMessageParser.java | 4 +- ...equestExtendedWithHandleMessageParser.java | 4 +- ...pRequestExtendedWithPathMessageParser.java | 4 +- .../SftpRequestFileStatVfsMessageParser.java | 4 +- .../SftpRequestFileSyncMessageParser.java | 4 +- ...SftpRequestGetTempFolderMessageParser.java | 4 +- .../SftpRequestHardlinkMessageParser.java | 4 +- ...SftpRequestHomeDirectoryMessageParser.java | 4 +- .../SftpRequestLimitsMessageParser.java | 4 +- .../SftpRequestLinkSetStatMessageParser.java | 4 +- ...ftpRequestMakeTempFolderMessageParser.java | 4 +- .../SftpRequestPosixRenameMessageParser.java | 4 +- ...ftpRequestSpaceAvailableMessageParser.java | 4 +- .../SftpRequestStatVfsMessageParser.java | 4 +- ...tpRequestUsersGroupsByIdMessageParser.java | 14 +++-- .../SftpRequestVendorIdMessageParser.java | 4 +- .../SftpRequestCopyDataMessagePreparator.java | 4 +- .../SftpRequestCopyFileMessagePreparator.java | 4 +- ...ftpRequestExpandPathMessagePreparator.java | 4 +- .../SftpRequestExtendedMessagePreparator.java | 6 +- ...tpRequestFileStatVfsMessagePreparator.java | 4 +- .../SftpRequestFileSyncMessagePreparator.java | 4 +- ...RequestGetTempFolderMessagePreparator.java | 4 +- .../SftpRequestHardlinkMessagePreparator.java | 4 +- ...RequestHomeDirectoryMessagePreparator.java | 4 +- .../SftpRequestLimitsMessagePreparator.java | 4 +- ...tpRequestLinkSetStatMessagePreparator.java | 4 +- ...equestMakeTempFolderMessagePreparator.java | 4 +- ...tpRequestPosixRenameMessagePreparator.java | 4 +- ...equestSpaceAvailableMessagePreparator.java | 4 +- .../SftpRequestStatVfsMessagePreparator.java | 4 +- ...questUsersGroupsByIdMessagePreparator.java | 4 +- .../SftpRequestVendorIdMessagePreparator.java | 4 +- .../SftpRequestCopyDataMessageSerializer.java | 4 +- .../SftpRequestCopyFileMessageSerializer.java | 4 +- ...ftpRequestExpandPathMessageSerializer.java | 4 +- .../SftpRequestExtendedMessageSerializer.java | 4 +- ...stExtendedWithHandleMessageSerializer.java | 4 +- ...uestExtendedWithPathMessageSerializer.java | 4 +- ...tpRequestFileStatVfsMessageSerializer.java | 4 +- .../SftpRequestFileSyncMessageSerializer.java | 4 +- ...RequestGetTempFolderMessageSerializer.java | 4 +- .../SftpRequestHardlinkMessageSerializer.java | 4 +- ...RequestHomeDirectoryMessageSerializer.java | 4 +- .../SftpRequestLimitsMessageSerializer.java | 4 +- ...tpRequestLinkSetStatMessageSerializer.java | 4 +- ...equestMakeTempFolderMessageSerializer.java | 4 +- ...tpRequestPosixRenameMessageSerializer.java | 4 +- ...equestSpaceAvailableMessageSerializer.java | 4 +- .../SftpRequestStatVfsMessageSerializer.java | 4 +- ...questUsersGroupsByIdMessageSerializer.java | 4 +- .../SftpRequestVendorIdMessageSerializer.java | 4 +- .../RsaKeyExchangePubkeyMessageParser.java | 4 +- 92 files changed, 302 insertions(+), 245 deletions(-) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestCopyDataMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestCopyFileMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestExpandPathMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestFileStatVfsMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestFileSyncMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestGetTempFolderMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestHardlinkMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestHomeDirectoryMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestLimitsMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestLinkSetStatMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestMakeTempFolderMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestPosixRenameMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestSpaceAvailableMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestStatVfsMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestUsersGroupsByIdMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{extended => extended_request}/SftpRequestVendorIdMessageHandler.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestCopyDataMessage.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestCopyFileMessage.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestExpandPathMessage.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestExtendedMessage.java (97%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestExtendedWithHandleMessage.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestExtendedWithPathMessage.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestFileStatVfsMessage.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestFileSyncMessage.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestGetTempFolderMessage.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestHardlinkMessage.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestHomeDirectoryMessage.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestLimitsMessage.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestLinkSetStatMessage.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestMakeTempFolderMessage.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestPosixRenameMessage.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestSpaceAvailableMessage.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestStatVfsMessage.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestUsersGroupsByIdMessage.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{extended => extended_request}/SftpRequestVendorIdMessage.java (97%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestCopyDataMessageParser.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestCopyFileMessageParser.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestExpandPathMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestExtendedMessageParser.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestExtendedWithHandleMessageParser.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestExtendedWithPathMessageParser.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestFileStatVfsMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestFileSyncMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestGetTempFolderMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestHardlinkMessageParser.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestHomeDirectoryMessageParser.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestLimitsMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestLinkSetStatMessageParser.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestMakeTempFolderMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestPosixRenameMessageParser.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestSpaceAvailableMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestStatVfsMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestUsersGroupsByIdMessageParser.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{extended => extended_request}/SftpRequestVendorIdMessageParser.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestCopyDataMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestCopyFileMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestExpandPathMessagePreparator.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestExtendedMessagePreparator.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestFileStatVfsMessagePreparator.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestFileSyncMessagePreparator.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestGetTempFolderMessagePreparator.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestHardlinkMessagePreparator.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestHomeDirectoryMessagePreparator.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestLimitsMessagePreparator.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestLinkSetStatMessagePreparator.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestMakeTempFolderMessagePreparator.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestPosixRenameMessagePreparator.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestSpaceAvailableMessagePreparator.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestStatVfsMessagePreparator.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestUsersGroupsByIdMessagePreparator.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{extended => extended_request}/SftpRequestVendorIdMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestCopyDataMessageSerializer.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestCopyFileMessageSerializer.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestExpandPathMessageSerializer.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestExtendedMessageSerializer.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestExtendedWithHandleMessageSerializer.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestExtendedWithPathMessageSerializer.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestFileStatVfsMessageSerializer.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestFileSyncMessageSerializer.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestGetTempFolderMessageSerializer.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestHardlinkMessageSerializer.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestHomeDirectoryMessageSerializer.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestLimitsMessageSerializer.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestLinkSetStatMessageSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestMakeTempFolderMessageSerializer.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestPosixRenameMessageSerializer.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestSpaceAvailableMessageSerializer.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestStatVfsMessageSerializer.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestUsersGroupsByIdMessageSerializer.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{extended => extended_request}/SftpRequestVendorIdMessageSerializer.java (96%) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java index c40a8584c..39cfa8923 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java @@ -7,10 +7,13 @@ */ package de.rub.nds.sshattacker.core.data.sftp; +import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.constants.SshMessageConstants; import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUnknownMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.*; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.*; import de.rub.nds.sshattacker.core.data.sftp.parser.request.*; import de.rub.nds.sshattacker.core.data.sftp.parser.response.*; import de.rub.nds.sshattacker.core.exceptions.ParserException; @@ -98,6 +101,8 @@ public static SftpMessage delegateParsing(AbstractDataPacket packet, SshConte return new SftpResponseNameMessageParser(raw).parse(); case SSH_FXP_ATTRS: return new SftpResponseAttributesMessageParser(raw).parse(); + case SSH_FXP_EXTENDED: + return handleExtendedRequestMessageParsing(raw); default: LOGGER.debug( "Received unimplemented SFTP Message {} ({})", @@ -110,4 +115,54 @@ public static SftpMessage delegateParsing(AbstractDataPacket packet, SshConte return new SftpUnknownMessageParser(raw).parse(); } } + + public static SftpMessage handleExtendedRequestMessageParsing(byte[] raw) { + SftpRequestUnknownMessage message = new SftpRequestUnknownMessageParser(raw).parse(); + String extendedRequestTypeString = message.getExtendedRequestName().getValue(); + SftpExtension extendedRequestType = SftpExtension.fromName(extendedRequestTypeString); + switch (extendedRequestType) { + case VENDOR_ID: + return new SftpRequestVendorIdMessageParser(raw).parse(); + case CHECK_FILE_HANDLE: + return new SftpRequestCheckFileHandleMessageParser(raw).parse(); + case CHECK_FILE_NAME: + return new SftpRequestCheckFileNameMessageParser(raw).parse(); + case SPACE_AVAILABLE: + return new SftpRequestSpaceAvailableMessageParser(raw).parse(); + case HOME_DIRECTORY: + return new SftpRequestHomeDirectoryMessageParser(raw).parse(); + case COPY_FILE: + return new SftpRequestCopyFileMessageParser(raw).parse(); + case COPY_DATA: + return new SftpRequestCopyDataMessageParser(raw).parse(); + case GET_TEMP_FOLDER: + return new SftpRequestGetTempFolderMessageParser(raw).parse(); + case MAKE_TEMP_FOLDER: + return new SftpRequestMakeTempFolderMessageParser(raw).parse(); + // vendor specific + case POSIX_RENAME_OPENSSH_COM: + return new SftpRequestPosixRenameMessageParser(raw).parse(); + case STAT_VFS_OPENSSH_COM: + return new SftpRequestStatVfsMessageParser(raw).parse(); + case F_STAT_VFS_OPENSSH_COM: + return new SftpRequestFileStatVfsMessageParser(raw).parse(); + case HARDLINK_OPENSSH_COM: + return new SftpRequestHardlinkMessageParser(raw).parse(); + case F_SYNC_OPENSSH_COM: + return new SftpRequestFileSyncMessageParser(raw).parse(); + case L_SET_STAT: + return new SftpRequestLinkSetStatMessageParser(raw).parse(); + case LIMITS: + return new SftpRequestLimitsMessageParser(raw).parse(); + case EXPAND_PATH: + return new SftpRequestExpandPathMessageParser(raw).parse(); + case USERS_GROUPS_BY_ID: + return new SftpRequestUsersGroupsByIdMessageParser(raw).parse(); + default: + LOGGER.debug( + "Received unimplemented extended request message type: {}", + extendedRequestTypeString); + return message; + } + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestCopyDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyDataMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestCopyDataMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyDataMessageHandler.java index 10b338d2e..9fed7ffa8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestCopyDataMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyDataMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyDataMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestCopyDataMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestCopyDataMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestCopyDataMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestCopyDataMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestCopyDataMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestCopyDataMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestCopyDataMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestCopyFileMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyFileMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestCopyFileMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyFileMessageHandler.java index aa79b0219..d4965f269 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestCopyFileMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyFileMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyFileMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestCopyFileMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestCopyFileMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestCopyFileMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestCopyFileMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestCopyFileMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestCopyFileMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestCopyFileMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestExpandPathMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestExpandPathMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestExpandPathMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestExpandPathMessageHandler.java index 17b318a1b..03ce8e7b1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestExpandPathMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestExpandPathMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExpandPathMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestExpandPathMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestExpandPathMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestExpandPathMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExpandPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestExpandPathMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestExpandPathMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestExpandPathMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestExpandPathMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestFileStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestFileStatVfsMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java index 73bf7278e..8360f9aa1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestFileStatVfsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileStatVfsMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestFileStatVfsMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestFileStatVfsMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestFileStatVfsMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestFileStatVfsMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestFileStatVfsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestFileStatVfsMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileStatVfsMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestFileSyncMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileSyncMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestFileSyncMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileSyncMessageHandler.java index 0a9a92346..aa275d911 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestFileSyncMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileSyncMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileSyncMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestFileSyncMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestFileSyncMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestFileSyncMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileSyncMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestFileSyncMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestFileSyncMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestFileSyncMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileSyncMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestGetTempFolderMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestGetTempFolderMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java index 580dd5235..5479a2c88 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestGetTempFolderMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestGetTempFolderMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestGetTempFolderMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestGetTempFolderMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestGetTempFolderMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestGetTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestGetTempFolderMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestGetTempFolderMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestGetTempFolderMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestGetTempFolderMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestHardlinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHardlinkMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestHardlinkMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHardlinkMessageHandler.java index 14c4484b8..40e819997 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestHardlinkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHardlinkMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHardlinkMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestHardlinkMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestHardlinkMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestHardlinkMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHardlinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestHardlinkMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestHardlinkMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestHardlinkMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestHardlinkMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestHomeDirectoryMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestHomeDirectoryMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java index 7b4e0775e..8781d5c0f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestHomeDirectoryMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHomeDirectoryMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestHomeDirectoryMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestHomeDirectoryMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestHomeDirectoryMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHomeDirectoryMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestHomeDirectoryMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestHomeDirectoryMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestHomeDirectoryMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestHomeDirectoryMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestLimitsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLimitsMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestLimitsMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLimitsMessageHandler.java index a0d1fc8b4..8b529f8f8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestLimitsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLimitsMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLimitsMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestLimitsMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestLimitsMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestLimitsMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestLimitsMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestLimitsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestLimitsMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestLimitsMessageHandler extends SftpMessageHandler { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestLinkSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestLinkSetStatMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java index 15164f5f9..e17d46281 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestLinkSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLinkSetStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestLinkSetStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestLinkSetStatMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestLinkSetStatMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLinkSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestLinkSetStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestLinkSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestLinkSetStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestLinkSetStatMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestMakeTempFolderMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestMakeTempFolderMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java index bce3191bb..39b06f811 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestMakeTempFolderMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestMakeTempFolderMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestMakeTempFolderMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestMakeTempFolderMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestMakeTempFolderMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestMakeTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestMakeTempFolderMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestMakeTempFolderMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestMakeTempFolderMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestMakeTempFolderMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestPosixRenameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestPosixRenameMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestPosixRenameMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestPosixRenameMessageHandler.java index a27f80175..7ce90c489 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestPosixRenameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestPosixRenameMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestPosixRenameMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestPosixRenameMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestPosixRenameMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestPosixRenameMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestPosixRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestPosixRenameMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestPosixRenameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestPosixRenameMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestPosixRenameMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestSpaceAvailableMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestSpaceAvailableMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java index 825c2de4e..5b355f731 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestSpaceAvailableMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestSpaceAvailableMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestSpaceAvailableMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestSpaceAvailableMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestSpaceAvailableMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestSpaceAvailableMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestSpaceAvailableMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestSpaceAvailableMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestSpaceAvailableMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestStatVfsMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestStatVfsMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestStatVfsMessageHandler.java index 69b33c517..4f594286a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestStatVfsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestStatVfsMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestStatVfsMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestStatVfsMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestStatVfsMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestStatVfsMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestStatVfsMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestStatVfsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestStatVfsMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestStatVfsMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestUsersGroupsByIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestUsersGroupsByIdMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java index a9c2ef152..12cea2268 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestUsersGroupsByIdMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestUsersGroupsByIdMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestUsersGroupsByIdMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestUsersGroupsByIdMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestUsersGroupsByIdMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestUsersGroupsByIdMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestUsersGroupsByIdMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestUsersGroupsByIdMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestUsersGroupsByIdMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestVendorIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestVendorIdMessageHandler.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestVendorIdMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestVendorIdMessageHandler.java index 50f12e9d6..2e904ad9b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended/SftpRequestVendorIdMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestVendorIdMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended; +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestVendorIdMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended.SftpRequestVendorIdMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended.SftpRequestVendorIdMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended.SftpRequestVendorIdMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestVendorIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestVendorIdMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestVendorIdMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestVendorIdMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestVendorIdMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestCopyDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestCopyDataMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java index 1dbddf0c3..6d04abf64 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestCopyDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestCopyDataMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCopyDataMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestCopyDataMessage diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestCopyFileMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestCopyFileMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java index 89c1c009c..a2ed127c5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestCopyFileMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestCopyFileMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCopyFileMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExpandPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExpandPathMessage.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExpandPathMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExpandPathMessage.java index 48291221b..00cad72b4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExpandPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExpandPathMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestExpandPathMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestExpandPathMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestExpandPathMessage diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedMessage.java similarity index 97% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedMessage.java index 50afac79e..595d0be24 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedMessage.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedWithHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithHandleMessage.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedWithHandleMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithHandleMessage.java index d44894224..4646b7818 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedWithHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithHandleMessage.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedWithPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedWithPathMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java index c1c350f56..a4288557d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestExtendedWithPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestFileStatVfsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileStatVfsMessage.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestFileStatVfsMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileStatVfsMessage.java index d36fc2821..ddf8f587f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestFileStatVfsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileStatVfsMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestFileStatVfsMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestFileStatVfsMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileStatVfsMessage diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestFileSyncMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileSyncMessage.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestFileSyncMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileSyncMessage.java index a580889ab..839a5e2ad 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestFileSyncMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileSyncMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestFileSyncMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestFileSyncMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileSyncMessage diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestGetTempFolderMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestGetTempFolderMessage.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestGetTempFolderMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestGetTempFolderMessage.java index 6d8ecbb3b..a27865071 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestGetTempFolderMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestGetTempFolderMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestGetTempFolderMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestGetTempFolderMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestGetTempFolderMessage diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestHardlinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestHardlinkMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java index 01a4685df..c118a454a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestHardlinkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestHardlinkMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestHardlinkMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestHomeDirectoryMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestHomeDirectoryMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java index 77d6f4b3d..d5e45e8fa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestHomeDirectoryMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestHomeDirectoryMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestHomeDirectoryMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestLimitsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLimitsMessage.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestLimitsMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLimitsMessage.java index 7cbcf2167..15a979c04 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestLimitsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLimitsMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestLimitsMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestLimitsMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestLimitsMessage extends SftpRequestExtendedMessage { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestLinkSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestLinkSetStatMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java index c6b7c9ec4..931cbbeba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestLinkSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestLinkSetStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestLinkSetStatMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestMakeTempFolderMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestMakeTempFolderMessage.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestMakeTempFolderMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestMakeTempFolderMessage.java index c8a6c3022..3c9ac8d3f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestMakeTempFolderMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestMakeTempFolderMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestMakeTempFolderMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestMakeTempFolderMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestMakeTempFolderMessage diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestPosixRenameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestPosixRenameMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java index 40f2cc98c..81b48e256 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestPosixRenameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestPosixRenameMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestPosixRenameMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestSpaceAvailableMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestSpaceAvailableMessage.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestSpaceAvailableMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestSpaceAvailableMessage.java index 793160780..0435dcafc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestSpaceAvailableMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestSpaceAvailableMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestSpaceAvailableMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestSpaceAvailableMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestSpaceAvailableMessage diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestStatVfsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestStatVfsMessage.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestStatVfsMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestStatVfsMessage.java index 94bf32c9a..7b98e90cc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestStatVfsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestStatVfsMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestStatVfsMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestStatVfsMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestStatVfsMessage diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestUsersGroupsByIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestUsersGroupsByIdMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java index ec994d407..a1bf9b9a9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestUsersGroupsByIdMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestUsersGroupsByIdMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestUsersGroupsByIdMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.util.ArrayList; import java.util.List; @@ -35,19 +35,6 @@ public void setUserIdsLength(int userIdsLength) { ModifiableVariableFactory.safelySetValue(this.userIdsLength, userIdsLength); } - public ModifiableInteger getGroupIdsLength() { - return groupIdsLength; - } - - public void setGroupIdsLength(ModifiableInteger groupIdsLength) { - this.groupIdsLength = groupIdsLength; - } - - public void setGroupIdsLength(int groupIdsLength) { - this.groupIdsLength = - ModifiableVariableFactory.safelySetValue(this.groupIdsLength, groupIdsLength); - } - public List getUserIds() { return userIds; } @@ -64,6 +51,19 @@ public void addUserId(ModifiableInteger userId) { userIds.add(userId); } + public ModifiableInteger getGroupIdsLength() { + return groupIdsLength; + } + + public void setGroupIdsLength(ModifiableInteger groupIdsLength) { + this.groupIdsLength = groupIdsLength; + } + + public void setGroupIdsLength(int groupIdsLength) { + this.groupIdsLength = + ModifiableVariableFactory.safelySetValue(this.groupIdsLength, groupIdsLength); + } + public List getGroupIds() { return groupIds; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestVendorIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestVendorIdMessage.java similarity index 97% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestVendorIdMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestVendorIdMessage.java index f6e8283c3..76105399a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended/SftpRequestVendorIdMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestVendorIdMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended; +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended.SftpRequestVendorIdMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestVendorIdMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestCopyDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyDataMessageParser.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestCopyDataMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyDataMessageParser.java index da2e4ed6d..5b6a3f0cc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestCopyDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyDataMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyDataMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestCopyFileMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyFileMessageParser.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestCopyFileMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyFileMessageParser.java index f2f56e98d..012b2650a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestCopyFileMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyFileMessageParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyFileMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExpandPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExpandPathMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExpandPathMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExpandPathMessageParser.java index 49a1a7cf9..f588042f7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExpandPathMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExpandPathMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExpandPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExpandPathMessage; public class SftpRequestExpandPathMessageParser extends SftpRequestExtendedWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedMessageParser.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedMessageParser.java index aca10acfa..452fd1078 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedMessageParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExtendedMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestMessageParser; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedWithHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithHandleMessageParser.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedWithHandleMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithHandleMessageParser.java index aa9f2e52c..eb9142a11 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedWithHandleMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithHandleMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExtendedWithHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedWithHandleMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedWithPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithPathMessageParser.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedWithPathMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithPathMessageParser.java index bfaa2514a..728893049 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestExtendedWithPathMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithPathMessageParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExtendedWithPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedWithPathMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestFileStatVfsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestFileStatVfsMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestFileStatVfsMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestFileStatVfsMessageParser.java index 61e250821..6a7db3d9f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestFileStatVfsMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestFileStatVfsMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileStatVfsMessage; public class SftpRequestFileStatVfsMessageParser extends SftpRequestExtendedWithHandleMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestFileSyncMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestFileSyncMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestFileSyncMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestFileSyncMessageParser.java index 65f1b82d4..0c3f549e6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestFileSyncMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestFileSyncMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileSyncMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileSyncMessage; public class SftpRequestFileSyncMessageParser extends SftpRequestExtendedWithHandleMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestGetTempFolderMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestGetTempFolderMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestGetTempFolderMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestGetTempFolderMessageParser.java index 1da7286d6..80ff4240f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestGetTempFolderMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestGetTempFolderMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestGetTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestGetTempFolderMessage; public class SftpRequestGetTempFolderMessageParser extends SftpRequestExtendedMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestHardlinkMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHardlinkMessageParser.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestHardlinkMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHardlinkMessageParser.java index 77b37aa55..7b8c20202 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestHardlinkMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHardlinkMessageParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHardlinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHardlinkMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestHomeDirectoryMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHomeDirectoryMessageParser.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestHomeDirectoryMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHomeDirectoryMessageParser.java index 491c58bc5..22c653bb9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestHomeDirectoryMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHomeDirectoryMessageParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHomeDirectoryMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHomeDirectoryMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestLimitsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLimitsMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestLimitsMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLimitsMessageParser.java index e0e82889b..e4f83c2f3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestLimitsMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLimitsMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLimitsMessage; public class SftpRequestLimitsMessageParser extends SftpRequestExtendedMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestLinkSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLinkSetStatMessageParser.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestLinkSetStatMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLinkSetStatMessageParser.java index 3c6f9aee1..0c9f1a174 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestLinkSetStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLinkSetStatMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLinkSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLinkSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; public class SftpRequestLinkSetStatMessageParser diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestMakeTempFolderMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestMakeTempFolderMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestMakeTempFolderMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestMakeTempFolderMessageParser.java index 0252c8520..a8c6ca971 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestMakeTempFolderMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestMakeTempFolderMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestMakeTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestMakeTempFolderMessage; public class SftpRequestMakeTempFolderMessageParser extends SftpRequestExtendedMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestPosixRenameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestPosixRenameMessageParser.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestPosixRenameMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestPosixRenameMessageParser.java index 04e88800d..5f2a62973 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestPosixRenameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestPosixRenameMessageParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestPosixRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestPosixRenameMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestSpaceAvailableMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestSpaceAvailableMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestSpaceAvailableMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestSpaceAvailableMessageParser.java index 65bc88204..d86aa9197 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestSpaceAvailableMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestSpaceAvailableMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestSpaceAvailableMessage; public class SftpRequestSpaceAvailableMessageParser extends SftpRequestExtendedWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestStatVfsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestStatVfsMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestStatVfsMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestStatVfsMessageParser.java index 65f272aca..d66c67954 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestStatVfsMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestStatVfsMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestStatVfsMessage; public class SftpRequestStatVfsMessageParser extends SftpRequestExtendedWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestUsersGroupsByIdMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestUsersGroupsByIdMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java index 4bc5032b3..955c28ee3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestUsersGroupsByIdMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUsersGroupsByIdMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -35,8 +35,9 @@ private void parseUserIds() { LOGGER.debug("UserIdsLength: {}", message.getUserIdsLength().getValue()); int userIdsCount = message.getUserIdsLength().getValue() / DataFormatConstants.UINT32_SIZE; for (int i = 0; i < userIdsCount; i++) { - message.addUserId(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("UserId[{}]: {}", i, message.getUserIdsLength().getValue()); + int userId = parseIntField(DataFormatConstants.UINT32_SIZE); + message.addUserId(userId); + LOGGER.debug("UserId[{}]: {}", i, userId); } } @@ -46,8 +47,9 @@ private void parseGroupIds() { int groupIdsCount = message.getGroupIdsLength().getValue() / DataFormatConstants.UINT32_SIZE; for (int i = 0; i < groupIdsCount; i++) { - message.addGroupId(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("GroupId[{}]: {}", i, message.getGroupIdsLength().getValue()); + int groupId = parseIntField(DataFormatConstants.UINT32_SIZE); + message.addGroupId(groupId); + LOGGER.debug("GroupId[{}]: {}", i, groupId); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestVendorIdMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestVendorIdMessageParser.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestVendorIdMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestVendorIdMessageParser.java index bcc6f7ba6..9cd72ae25 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended/SftpRequestVendorIdMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestVendorIdMessageParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended; +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestVendorIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestVendorIdMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestCopyDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestCopyDataMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java index a63a0d486..e8472ae2e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestCopyDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyDataMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestCopyDataMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestCopyFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestCopyFileMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java index 3c24326c6..4c828ed0a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestCopyFileMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyFileMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestCopyFileMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestExpandPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestExpandPathMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java index d618d6958..5e10d029f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestExpandPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExpandPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExpandPathMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestExpandPathMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestExtendedMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExtendedMessagePreparator.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestExtendedMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExtendedMessagePreparator.java index 95cd46312..d56238863 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestExtendedMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExtendedMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExtendedMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedMessage; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestMessagePreparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -31,7 +31,7 @@ protected SftpRequestExtendedMessagePreparator( @Override public void prepareRequestSpecificContents() { - getObject().setExtendedRequestName(extendedRequestName); + getObject().setExtendedRequestName(extendedRequestName, true); prepareRequestExtendedSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestFileStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestFileStatVfsMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java index 9f8702225..f5a009943 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestFileStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileStatVfsMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestFileStatVfsMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestFileSyncMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestFileSyncMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java index 9c22f3175..cd28b8cb8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestFileSyncMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileSyncMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileSyncMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestFileSyncMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestGetTempFolderMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestGetTempFolderMessagePreparator.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestGetTempFolderMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestGetTempFolderMessagePreparator.java index b3742827e..2230c0d18 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestGetTempFolderMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestGetTempFolderMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestGetTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestGetTempFolderMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestGetTempFolderMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestHardlinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestHardlinkMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java index 8f17b6a13..c7da80aaf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestHardlinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHardlinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHardlinkMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestHardlinkMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestHomeDirectoryMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestHomeDirectoryMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java index 5e08fb96b..7f8475fbd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestHomeDirectoryMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHomeDirectoryMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHomeDirectoryMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestHomeDirectoryMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestLimitsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLimitsMessagePreparator.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestLimitsMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLimitsMessagePreparator.java index dedf875f1..85e86d658 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestLimitsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLimitsMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLimitsMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestLimitsMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestLinkSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestLinkSetStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java index 890ae9de0..e69948720 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestLinkSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLinkSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLinkSetStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestLinkSetStatMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestMakeTempFolderMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestMakeTempFolderMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java index 9f6177704..a1a9b692f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestMakeTempFolderMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestMakeTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestMakeTempFolderMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestMakeTempFolderMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestPosixRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestPosixRenameMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java index 7774e28af..8f27fbf9e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestPosixRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestPosixRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestPosixRenameMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestPosixRenameMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestSpaceAvailableMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java index 48cd4c6e0..8e5eb13d1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestSpaceAvailableMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestSpaceAvailableMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestSpaceAvailableMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestStatVfsMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java index 032990321..21d5239bc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestStatVfsMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestStatVfsMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestUsersGroupsByIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestUsersGroupsByIdMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java index 362692691..d14e95578 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestUsersGroupsByIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUsersGroupsByIdMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestUsersGroupsByIdMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestVendorIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestVendorIdMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java index 4736e4b4a..b115d31d6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended/SftpRequestVendorIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended; +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestVendorIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestVendorIdMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestVendorIdMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestCopyDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyDataMessageSerializer.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestCopyDataMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyDataMessageSerializer.java index b67bff637..fceafd270 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestCopyDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyDataMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyDataMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestCopyFileMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyFileMessageSerializer.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestCopyFileMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyFileMessageSerializer.java index d2552a184..eba008bcb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestCopyFileMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyFileMessageSerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestCopyFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyFileMessage; import de.rub.nds.sshattacker.core.util.Converter; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExpandPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExpandPathMessageSerializer.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExpandPathMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExpandPathMessageSerializer.java index 3eac8a876..91550730a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExpandPathMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExpandPathMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExpandPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExpandPathMessage; public class SftpRequestExpandPathMessageSerializer extends SftpRequestExtendedWithPathMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedMessageSerializer.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedMessageSerializer.java index 76fd7a142..bfd9dba96 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedMessageSerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExtendedMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedMessage; import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestMessageSerializer; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedWithHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithHandleMessageSerializer.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedWithHandleMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithHandleMessageSerializer.java index f529b6121..d8da8cb4b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedWithHandleMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithHandleMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExtendedWithHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedWithHandleMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedWithPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithPathMessageSerializer.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedWithPathMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithPathMessageSerializer.java index b21634086..4a381e8b4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestExtendedWithPathMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithPathMessageSerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestExtendedWithPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedWithPathMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestFileStatVfsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestFileStatVfsMessageSerializer.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestFileStatVfsMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestFileStatVfsMessageSerializer.java index 72d00e0da..0baa6e86b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestFileStatVfsMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestFileStatVfsMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileStatVfsMessage; public class SftpRequestFileStatVfsMessageSerializer extends SftpRequestExtendedWithHandleMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestFileSyncMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestFileSyncMessageSerializer.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestFileSyncMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestFileSyncMessageSerializer.java index 084f0fa7c..d9021e0e6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestFileSyncMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestFileSyncMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestFileSyncMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileSyncMessage; public class SftpRequestFileSyncMessageSerializer extends SftpRequestExtendedWithHandleMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestGetTempFolderMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestGetTempFolderMessageSerializer.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestGetTempFolderMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestGetTempFolderMessageSerializer.java index ba40e9610..8ebe7e440 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestGetTempFolderMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestGetTempFolderMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestGetTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestGetTempFolderMessage; public class SftpRequestGetTempFolderMessageSerializer extends SftpRequestExtendedMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestHardlinkMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHardlinkMessageSerializer.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestHardlinkMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHardlinkMessageSerializer.java index 6f5ac08c5..18482a060 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestHardlinkMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHardlinkMessageSerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHardlinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHardlinkMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestHomeDirectoryMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHomeDirectoryMessageSerializer.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestHomeDirectoryMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHomeDirectoryMessageSerializer.java index af6b4903e..94bc6e3a2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestHomeDirectoryMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHomeDirectoryMessageSerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestHomeDirectoryMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHomeDirectoryMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestLimitsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestLimitsMessageSerializer.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestLimitsMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestLimitsMessageSerializer.java index 9276dd667..3617bddad 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestLimitsMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestLimitsMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLimitsMessage; public class SftpRequestLimitsMessageSerializer extends SftpRequestExtendedMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestLinkSetStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestLinkSetStatMessageSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestLinkSetStatMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestLinkSetStatMessageSerializer.java index cb76c81a8..76c994dc5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestLinkSetStatMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestLinkSetStatMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestLinkSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLinkSetStatMessage; public class SftpRequestLinkSetStatMessageSerializer extends SftpRequestExtendedWithPathMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestMakeTempFolderMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestMakeTempFolderMessageSerializer.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestMakeTempFolderMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestMakeTempFolderMessageSerializer.java index 9d627df1b..59d48939c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestMakeTempFolderMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestMakeTempFolderMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestMakeTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestMakeTempFolderMessage; public class SftpRequestMakeTempFolderMessageSerializer extends SftpRequestExtendedMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestPosixRenameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestPosixRenameMessageSerializer.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestPosixRenameMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestPosixRenameMessageSerializer.java index b6f71e3c2..f60f0a239 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestPosixRenameMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestPosixRenameMessageSerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestPosixRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestPosixRenameMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestSpaceAvailableMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestSpaceAvailableMessageSerializer.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestSpaceAvailableMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestSpaceAvailableMessageSerializer.java index 0fa592ee1..dfdbba610 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestSpaceAvailableMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestSpaceAvailableMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestSpaceAvailableMessage; public class SftpRequestSpaceAvailableMessageSerializer extends SftpRequestExtendedWithPathMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestStatVfsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestStatVfsMessageSerializer.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestStatVfsMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestStatVfsMessageSerializer.java index 6d76653ba..417b63341 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestStatVfsMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestStatVfsMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestStatVfsMessage; public class SftpRequestStatVfsMessageSerializer extends SftpRequestExtendedWithPathMessageSerializer { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestUsersGroupsByIdMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestUsersGroupsByIdMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java index 03f0531c4..d08390c15 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestUsersGroupsByIdMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUsersGroupsByIdMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestVendorIdMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestVendorIdMessageSerializer.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestVendorIdMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestVendorIdMessageSerializer.java index c5df1e285..f7f625eea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended/SftpRequestVendorIdMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestVendorIdMessageSerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended; +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended.SftpRequestVendorIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestVendorIdMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangePubkeyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangePubkeyMessageParser.java index 5991efad9..c3c6376f4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangePubkeyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangePubkeyMessageParser.java @@ -35,7 +35,7 @@ private void parseHostKeyBytes() { message.setHostKeyBytesLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); LOGGER.debug("Host key bytes length: {}", message.getHostKeyBytesLength().getValue()); message.setHostKeyBytes(parseByteArrayField(message.getHostKeyBytesLength().getValue())); - LOGGER.debug("Host key bytes: {}", message.getHostKeyBytes()); + LOGGER.debug("Host key bytes: {}", message.getHostKeyBytes().getValue()); } private void parseTransientPublicKey() { @@ -46,7 +46,7 @@ private void parseTransientPublicKey() { message.getTransientPublicKeyBytesLength().getValue()); message.setTransientPublicKeyBytes( parseByteArrayField(message.getTransientPublicKeyBytesLength().getValue())); - LOGGER.debug("Transient public key: {}", message.getTransientPublicKeyBytes()); + LOGGER.debug("Transient public key: {}", message.getTransientPublicKeyBytes().getValue()); } @Override From b265f1935cd3fbf0083a2d09574320da0e8b7b93 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 2 Nov 2024 13:49:14 +0100 Subject: [PATCH 034/203] Add missing SFTP extended Responses --- .../core/constants/HashAlgorithm.java | 60 ++++++ .../core/constants/SftpVfsFlag.java | 35 ++++ ...pRequestCheckFileHandleMessageHandler.java | 53 ++++++ ...ftpRequestCheckFileNameMessageHandler.java | 53 ++++++ .../SftpRequestUnknownMessageHandler.java | 52 +++++ .../SftpResponseCheckFileMessageHandler.java | 53 ++++++ .../SftpResponseLimitsMessageHandler.java | 52 +++++ ...pResponseSpaceAvailableMessageHandler.java | 53 ++++++ .../SftpResponseStatVfsMessageHandler.java | 53 ++++++ .../SftpResponseUnknownMessageHandler.java | 53 ++++++ ...ResponseUsersGroupsByIdMessageHandler.java | 53 ++++++ .../SftpRequestCheckFileHandleMessage.java | 135 +++++++++++++ .../SftpRequestCheckFileNameMessage.java | 135 +++++++++++++ .../SftpRequestUnknownMessage.java | 38 ++++ .../SftpResponseCheckFileMessage.java | 94 ++++++++++ .../SftpResponseLimitsMessage.java | 82 ++++++++ .../SftpResponseSpaceAvailableMessage.java | 99 ++++++++++ .../SftpResponseStatVfsMessage.java | 177 ++++++++++++++++++ .../SftpResponseUnknownMessage.java | 37 ++++ .../SftpResponseUsersGroupsByIdMessage.java | 89 +++++++++ ...tpRequestCheckFileHandleMessageParser.java | 69 +++++++ ...SftpRequestCheckFileNameMessageParser.java | 69 +++++++ .../SftpRequestUnknownMessageParser.java | 46 +++++ .../SftpResponseCheckFileMessageParser.java | 62 ++++++ .../SftpResponseLimitsMessageParser.java | 48 +++++ ...tpResponseSpaceAvailableMessageParser.java | 53 ++++++ .../SftpResponseStatVfsMessageParser.java | 103 ++++++++++ .../SftpResponseUnknownMessageParser.java | 43 +++++ ...pResponseUsersGroupsByIdMessageParser.java | 70 +++++++ ...questCheckFileHandleMessagePreparator.java | 54 ++++++ ...RequestCheckFileNameMessagePreparator.java | 53 ++++++ .../SftpRequestUnknownMessagePreparator.java | 35 ++++ ...ftpResponseCheckFileMessagePreparator.java | 37 ++++ ...SftpResponseExtendedMessagePreparator.java | 21 +++ .../SftpResponseLimitsMessagePreparator.java | 38 ++++ ...sponseSpaceAvailableMessagePreparator.java | 43 +++++ .../SftpResponseStatVfsMessagePreparator.java | 58 ++++++ .../SftpResponseUnknownMessagePreparator.java | 27 +++ ...ponseUsersGroupsByIdMessagePreparator.java | 48 +++++ ...questCheckFileHandleMessageSerializer.java | 60 ++++++ ...RequestCheckFileNameMessageSerializer.java | 60 ++++++ .../SftpRequestUnknownMessageSerializer.java | 33 ++++ ...ftpResponseCheckFileMessageSerializer.java | 52 +++++ .../SftpResponseLimitsMessageSerializer.java | 39 ++++ ...sponseSpaceAvailableMessageSerializer.java | 46 +++++ .../SftpResponseStatVfsMessageSerializer.java | 60 ++++++ .../SftpResponseUnknownMessageSerializer.java | 34 ++++ ...ponseUsersGroupsByIdMessageSerializer.java | 57 ++++++ 48 files changed, 2874 insertions(+) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/HashAlgorithm.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpVfsFlag.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUnknownMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseSpaceAvailableMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseStatVfsMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUnknownMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileNameMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUnknownMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseCheckFileMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseLimitsMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseStatVfsMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUnknownMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseExtendedMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUnknownMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseLimitsMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUnknownMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/HashAlgorithm.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/HashAlgorithm.java new file mode 100644 index 000000000..fd292cc63 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/HashAlgorithm.java @@ -0,0 +1,60 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.constants; + +import java.util.Collections; +import java.util.Map; +import java.util.TreeMap; + +/** These values are also used for hash-algorithm-list of SFTP check-file messages */ +public enum HashAlgorithm { + /* + * Sources: + * - https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-extensions-00#section-3 + * - https://datatracker.ietf.org/doc/html/rfc1321 + */ + // [ RFC 1321 ] + MD5("md5"), + // [ FIPS-180-2 ] + SHA_1("sha1"), + SHA_224("sha224"), + SHA_256("sha256"), + SHA_384("sha384"), + SHA_512("sha512"), + // [ ISO.3309.1991 ] + CRC32("crc32"); + + private final String name; + + public static final Map map; + + static { + Map mutableMap = new TreeMap<>(); + for (HashAlgorithm algorithm : values()) { + mutableMap.put(algorithm.name, algorithm); + } + map = Collections.unmodifiableMap(mutableMap); + } + + HashAlgorithm(String name) { + this.name = name; + } + + @Override + public String toString() { + return name; + } + + public String getName() { + return name; + } + + public static HashAlgorithm fromName(String name) { + return map.get(name); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpVfsFlag.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpVfsFlag.java new file mode 100644 index 000000000..bb194c4f2 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpVfsFlag.java @@ -0,0 +1,35 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.constants; + +public enum SftpVfsFlag { + SSH_FXE_STATVFS_ST_RDONLY(0x0000000000000001), + SSH_FXE_STATVFS_ST_NOSUID(0x0000000000000002); + + private final long value; + + SftpVfsFlag(long value) { + this.value = value; + } + + public long getValue() { + return value; + } + + public static boolean isFlagSet(long flags, SftpVfsFlag flag) { + return (flags & flag.value) != 0; + } + + public static long flagsToLong(SftpVfsFlag... vfsFlags) { + long result = 0; + for (SftpVfsFlag vfsFlag : vfsFlags) { + result |= vfsFlag.value; + } + return result; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java new file mode 100644 index 000000000..8296cd546 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestCheckFileHandleMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestCheckFileHandleMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestCheckFileHandleMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestCheckFileHandleMessageHandler + extends SftpMessageHandler { + + public SftpRequestCheckFileHandleMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestCheckFileHandleMessageHandler( + SshContext context, SftpRequestCheckFileHandleMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestCheckFileHandleMessage + } + + @Override + public SftpRequestCheckFileHandleMessageParser getParser(byte[] array) { + return new SftpRequestCheckFileHandleMessageParser(array); + } + + @Override + public SftpRequestCheckFileHandleMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestCheckFileHandleMessageParser(array, startPosition); + } + + @Override + public SftpRequestCheckFileHandleMessagePreparator getPreparator() { + return new SftpRequestCheckFileHandleMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestCheckFileHandleMessageSerializer getSerializer() { + return new SftpRequestCheckFileHandleMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java new file mode 100644 index 000000000..074af5e76 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestCheckFileNameMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestCheckFileNameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestCheckFileNameMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestCheckFileNameMessageHandler + extends SftpMessageHandler { + + public SftpRequestCheckFileNameMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestCheckFileNameMessageHandler( + SshContext context, SftpRequestCheckFileNameMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestCheckFileNameMessage + } + + @Override + public SftpRequestCheckFileNameMessageParser getParser(byte[] array) { + return new SftpRequestCheckFileNameMessageParser(array); + } + + @Override + public SftpRequestCheckFileNameMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestCheckFileNameMessageParser(array, startPosition); + } + + @Override + public SftpRequestCheckFileNameMessagePreparator getPreparator() { + return new SftpRequestCheckFileNameMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestCheckFileNameMessageSerializer getSerializer() { + return new SftpRequestCheckFileNameMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUnknownMessageHandler.java new file mode 100644 index 000000000..f54cabfec --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUnknownMessageHandler.java @@ -0,0 +1,52 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestUnknownMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestUnknownMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestUnknownMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestUnknownMessageHandler + extends SftpMessageHandler { + + public SftpRequestUnknownMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestUnknownMessageHandler(SshContext context, SftpRequestUnknownMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestUnknownMessage + } + + @Override + public SftpRequestUnknownMessageParser getParser(byte[] array) { + return new SftpRequestUnknownMessageParser(array); + } + + @Override + public SftpRequestUnknownMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestUnknownMessageParser(array, startPosition); + } + + @Override + public SftpRequestUnknownMessagePreparator getPreparator() { + return new SftpRequestUnknownMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestUnknownMessageSerializer getSerializer() { + return new SftpRequestUnknownMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java new file mode 100644 index 000000000..f225f6f97 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseCheckFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseCheckFileMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseCheckFileMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response.SftpResponseCheckFileMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseCheckFileMessageHandler + extends SftpMessageHandler { + + public SftpResponseCheckFileMessageHandler(SshContext context) { + super(context); + } + + public SftpResponseCheckFileMessageHandler( + SshContext context, SftpResponseCheckFileMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpResponseCheckFileMessage + } + + @Override + public SftpResponseCheckFileMessageParser getParser(byte[] array) { + return new SftpResponseCheckFileMessageParser(array); + } + + @Override + public SftpResponseCheckFileMessageParser getParser(byte[] array, int startPosition) { + return new SftpResponseCheckFileMessageParser(array, startPosition); + } + + @Override + public SftpResponseCheckFileMessagePreparator getPreparator() { + return new SftpResponseCheckFileMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpResponseCheckFileMessageSerializer getSerializer() { + return new SftpResponseCheckFileMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java new file mode 100644 index 000000000..f4c2d84a8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java @@ -0,0 +1,52 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseLimitsMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseLimitsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response.SftpResponseLimitsMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseLimitsMessageHandler + extends SftpMessageHandler { + + public SftpResponseLimitsMessageHandler(SshContext context) { + super(context); + } + + public SftpResponseLimitsMessageHandler(SshContext context, SftpResponseLimitsMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpResponseLimitsMessage + } + + @Override + public SftpResponseLimitsMessageParser getParser(byte[] array) { + return new SftpResponseLimitsMessageParser(array); + } + + @Override + public SftpResponseLimitsMessageParser getParser(byte[] array, int startPosition) { + return new SftpResponseLimitsMessageParser(array, startPosition); + } + + @Override + public SftpResponseLimitsMessagePreparator getPreparator() { + return new SftpResponseLimitsMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpResponseLimitsMessageSerializer getSerializer() { + return new SftpResponseLimitsMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java new file mode 100644 index 000000000..9a4f7144d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseSpaceAvailableMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseSpaceAvailableMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response.SftpResponseSpaceAvailableMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseSpaceAvailableMessageHandler + extends SftpMessageHandler { + + public SftpResponseSpaceAvailableMessageHandler(SshContext context) { + super(context); + } + + public SftpResponseSpaceAvailableMessageHandler( + SshContext context, SftpResponseSpaceAvailableMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpResponseSpaceAvailableMessage + } + + @Override + public SftpResponseSpaceAvailableMessageParser getParser(byte[] array) { + return new SftpResponseSpaceAvailableMessageParser(array); + } + + @Override + public SftpResponseSpaceAvailableMessageParser getParser(byte[] array, int startPosition) { + return new SftpResponseSpaceAvailableMessageParser(array, startPosition); + } + + @Override + public SftpResponseSpaceAvailableMessagePreparator getPreparator() { + return new SftpResponseSpaceAvailableMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpResponseSpaceAvailableMessageSerializer getSerializer() { + return new SftpResponseSpaceAvailableMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java new file mode 100644 index 000000000..8d1afb28c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseStatVfsMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseStatVfsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response.SftpResponseStatVfsMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseStatVfsMessageHandler + extends SftpMessageHandler { + + public SftpResponseStatVfsMessageHandler(SshContext context) { + super(context); + } + + public SftpResponseStatVfsMessageHandler( + SshContext context, SftpResponseStatVfsMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpResponseStatVfsMessage + } + + @Override + public SftpResponseStatVfsMessageParser getParser(byte[] array) { + return new SftpResponseStatVfsMessageParser(array); + } + + @Override + public SftpResponseStatVfsMessageParser getParser(byte[] array, int startPosition) { + return new SftpResponseStatVfsMessageParser(array, startPosition); + } + + @Override + public SftpResponseStatVfsMessagePreparator getPreparator() { + return new SftpResponseStatVfsMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpResponseStatVfsMessageSerializer getSerializer() { + return new SftpResponseStatVfsMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java new file mode 100644 index 000000000..0635a3129 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseUnknownMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseUnknownMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response.SftpResponseUnknownMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseUnknownMessageHandler + extends SftpMessageHandler { + + public SftpResponseUnknownMessageHandler(SshContext context) { + super(context); + } + + public SftpResponseUnknownMessageHandler( + SshContext context, SftpResponseUnknownMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpResponseUnknownMessage + } + + @Override + public SftpResponseUnknownMessageParser getParser(byte[] array) { + return new SftpResponseUnknownMessageParser(array); + } + + @Override + public SftpResponseUnknownMessageParser getParser(byte[] array, int startPosition) { + return new SftpResponseUnknownMessageParser(array, startPosition); + } + + @Override + public SftpResponseUnknownMessagePreparator getPreparator() { + return new SftpResponseUnknownMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpResponseUnknownMessageSerializer getSerializer() { + return new SftpResponseUnknownMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java new file mode 100644 index 000000000..216c27726 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseUsersGroupsByIdMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseUsersGroupsByIdMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response.SftpResponseUsersGroupsByIdMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseUsersGroupsByIdMessageHandler + extends SftpMessageHandler { + + public SftpResponseUsersGroupsByIdMessageHandler(SshContext context) { + super(context); + } + + public SftpResponseUsersGroupsByIdMessageHandler( + SshContext context, SftpResponseUsersGroupsByIdMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpResponseUsersGroupsByIdMessage + } + + @Override + public SftpResponseUsersGroupsByIdMessageParser getParser(byte[] array) { + return new SftpResponseUsersGroupsByIdMessageParser(array); + } + + @Override + public SftpResponseUsersGroupsByIdMessageParser getParser(byte[] array, int startPosition) { + return new SftpResponseUsersGroupsByIdMessageParser(array, startPosition); + } + + @Override + public SftpResponseUsersGroupsByIdMessagePreparator getPreparator() { + return new SftpResponseUsersGroupsByIdMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpResponseUsersGroupsByIdMessageSerializer getSerializer() { + return new SftpResponseUsersGroupsByIdMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java new file mode 100644 index 000000000..9927ebbc6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java @@ -0,0 +1,135 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.constants.CharConstants; +import de.rub.nds.sshattacker.core.constants.HashAlgorithm; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCheckFileHandleMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.stream.Collectors; + +public class SftpRequestCheckFileHandleMessage + extends SftpRequestExtendedWithHandleMessage { + + private ModifiableInteger hashAlgorithmsLength; + private ModifiableString hashAlgorithms; + private ModifiableLong startOffset; + private ModifiableLong length; + private ModifiableInteger blockSize; + + public ModifiableInteger getHashAlgorithmsLength() { + return hashAlgorithmsLength; + } + + public void setHashAlgorithmsLength(ModifiableInteger hashAlgorithmsLength) { + this.hashAlgorithmsLength = hashAlgorithmsLength; + } + + public void setHashAlgorithmsLength(int hashAlgorithmsLength) { + this.hashAlgorithmsLength = + ModifiableVariableFactory.safelySetValue( + this.hashAlgorithmsLength, hashAlgorithmsLength); + } + + public ModifiableString getHashAlgorithms() { + return hashAlgorithms; + } + + public void setHashAlgorithms(ModifiableString hashAlgorithms) { + setHashAlgorithms(hashAlgorithms, false); + } + + public void setHashAlgorithms(String hashAlgorithms) { + setHashAlgorithms(hashAlgorithms, false); + } + + public void setHashAlgorithms(String[] hashAlgorithms) { + setHashAlgorithms(hashAlgorithms, false); + } + + public void setHashAlgorithms(List hashAlgorithms) { + setHashAlgorithms(hashAlgorithms, false); + } + + public void setHashAlgorithms(ModifiableString hashAlgorithms, boolean adjustLengthField) { + this.hashAlgorithms = hashAlgorithms; + if (adjustLengthField) { + setHashAlgorithmsLength( + this.hashAlgorithms.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + + public void setHashAlgorithms(String hashAlgorithms, boolean adjustLengthField) { + this.hashAlgorithms = + ModifiableVariableFactory.safelySetValue(this.hashAlgorithms, hashAlgorithms); + if (adjustLengthField) { + setHashAlgorithmsLength( + this.hashAlgorithms.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + + public void setHashAlgorithms(String[] hashAlgorithms, boolean adjustLengthField) { + String nameList = String.join("" + CharConstants.ALGORITHM_SEPARATOR, hashAlgorithms); + setHashAlgorithms(nameList, adjustLengthField); + } + + public void setHashAlgorithms(List hashAlgorithms, boolean adjustLengthField) { + String nameList = + hashAlgorithms.stream() + .map(HashAlgorithm::toString) + .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); + setHashAlgorithms(nameList, adjustLengthField); + } + + public ModifiableLong getStartOffset() { + return startOffset; + } + + public void setStartOffset(ModifiableLong startOffset) { + this.startOffset = startOffset; + } + + public void setStartOffset(long startOffset) { + this.startOffset = ModifiableVariableFactory.safelySetValue(this.startOffset, startOffset); + } + + public ModifiableLong getLength() { + return length; + } + + public void setLength(ModifiableLong length) { + this.length = length; + } + + public void setLength(long length) { + this.length = ModifiableVariableFactory.safelySetValue(this.length, length); + } + + public ModifiableInteger getBlockSize() { + return blockSize; + } + + public void setBlockSize(ModifiableInteger blockSize) { + this.blockSize = blockSize; + } + + public void setBlockSize(int blockSize) { + this.blockSize = ModifiableVariableFactory.safelySetValue(this.blockSize, blockSize); + } + + @Override + public SftpRequestCheckFileHandleMessageHandler getHandler(SshContext context) { + return new SftpRequestCheckFileHandleMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java new file mode 100644 index 000000000..ecd8b8489 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java @@ -0,0 +1,135 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.constants.CharConstants; +import de.rub.nds.sshattacker.core.constants.HashAlgorithm; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCheckFileNameMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.stream.Collectors; + +public class SftpRequestCheckFileNameMessage + extends SftpRequestExtendedWithPathMessage { + + private ModifiableInteger hashAlgorithmsLength; + private ModifiableString hashAlgorithms; + private ModifiableLong startOffset; + private ModifiableLong length; + private ModifiableInteger blockSize; + + public ModifiableInteger getHashAlgorithmsLength() { + return hashAlgorithmsLength; + } + + public void setHashAlgorithmsLength(ModifiableInteger hashAlgorithmsLength) { + this.hashAlgorithmsLength = hashAlgorithmsLength; + } + + public void setHashAlgorithmsLength(int hashAlgorithmsLength) { + this.hashAlgorithmsLength = + ModifiableVariableFactory.safelySetValue( + this.hashAlgorithmsLength, hashAlgorithmsLength); + } + + public ModifiableString getHashAlgorithms() { + return hashAlgorithms; + } + + public void setHashAlgorithms(ModifiableString hashAlgorithms) { + setHashAlgorithms(hashAlgorithms, false); + } + + public void setHashAlgorithms(String hashAlgorithms) { + setHashAlgorithms(hashAlgorithms, false); + } + + public void setHashAlgorithms(String[] hashAlgorithms) { + setHashAlgorithms(hashAlgorithms, false); + } + + public void setHashAlgorithms(List hashAlgorithms) { + setHashAlgorithms(hashAlgorithms, false); + } + + public void setHashAlgorithms(ModifiableString hashAlgorithms, boolean adjustLengthField) { + this.hashAlgorithms = hashAlgorithms; + if (adjustLengthField) { + setHashAlgorithmsLength( + this.hashAlgorithms.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + + public void setHashAlgorithms(String hashAlgorithms, boolean adjustLengthField) { + this.hashAlgorithms = + ModifiableVariableFactory.safelySetValue(this.hashAlgorithms, hashAlgorithms); + if (adjustLengthField) { + setHashAlgorithmsLength( + this.hashAlgorithms.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + + public void setHashAlgorithms(String[] hashAlgorithms, boolean adjustLengthField) { + String nameList = String.join("" + CharConstants.ALGORITHM_SEPARATOR, hashAlgorithms); + setHashAlgorithms(nameList, adjustLengthField); + } + + public void setHashAlgorithms(List hashAlgorithms, boolean adjustLengthField) { + String nameList = + hashAlgorithms.stream() + .map(HashAlgorithm::toString) + .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); + setHashAlgorithms(nameList, adjustLengthField); + } + + public ModifiableLong getStartOffset() { + return startOffset; + } + + public void setStartOffset(ModifiableLong startOffset) { + this.startOffset = startOffset; + } + + public void setStartOffset(long startOffset) { + this.startOffset = ModifiableVariableFactory.safelySetValue(this.startOffset, startOffset); + } + + public ModifiableLong getLength() { + return length; + } + + public void setLength(ModifiableLong length) { + this.length = length; + } + + public void setLength(long length) { + this.length = ModifiableVariableFactory.safelySetValue(this.length, length); + } + + public ModifiableInteger getBlockSize() { + return blockSize; + } + + public void setBlockSize(ModifiableInteger blockSize) { + this.blockSize = blockSize; + } + + public void setBlockSize(int blockSize) { + this.blockSize = ModifiableVariableFactory.safelySetValue(this.blockSize, blockSize); + } + + @Override + public SftpRequestCheckFileNameMessageHandler getHandler(SshContext context) { + return new SftpRequestCheckFileNameMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java new file mode 100644 index 000000000..8b2cb86a4 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestUnknownMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestUnknownMessage + extends SftpRequestExtendedMessage { + + private ModifiableByteArray requestSpecificData; + + public ModifiableByteArray getRequestSpecificData() { + return requestSpecificData; + } + + public void setRequestSpecificData(ModifiableByteArray requestSpecificData) { + this.requestSpecificData = requestSpecificData; + } + + public void setRequestSpecificData(byte[] requestSpecificData) { + this.requestSpecificData = + ModifiableVariableFactory.safelySetValue( + this.requestSpecificData, requestSpecificData); + } + + @Override + public SftpRequestUnknownMessageHandler getHandler(SshContext context) { + return new SftpRequestUnknownMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java new file mode 100644 index 000000000..19db15867 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java @@ -0,0 +1,94 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended_response; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.constants.HashAlgorithm; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseCheckFileMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; + +public class SftpResponseCheckFileMessage + extends SftpResponseMessage { + private ModifiableInteger usedHashAlgorithmLength; + private ModifiableString usedHashAlgorithm; + private ModifiableByteArray hash; + + public ModifiableInteger getUsedHashAlgorithmLength() { + return usedHashAlgorithmLength; + } + + public void setUsedHashAlgorithmLength(ModifiableInteger usedHashAlgorithmLength) { + this.usedHashAlgorithmLength = usedHashAlgorithmLength; + } + + public void setUsedHashAlgorithmLength(int usedHashAlgorithmLength) { + this.usedHashAlgorithmLength = + ModifiableVariableFactory.safelySetValue( + this.usedHashAlgorithmLength, usedHashAlgorithmLength); + } + + public ModifiableString getUsedHashAlgorithm() { + return usedHashAlgorithm; + } + + public void setUsedHashAlgorithm(ModifiableString usedHashAlgorithm) { + setUsedHashAlgorithm(usedHashAlgorithm, false); + } + + public void setUsedHashAlgorithm(String usedHashAlgorithm) { + setUsedHashAlgorithm(usedHashAlgorithm, false); + } + + public void setUsedHashAlgorithm(HashAlgorithm usedHashAlgorithm) { + setUsedHashAlgorithm(usedHashAlgorithm.getName(), false); + } + + public void setUsedHashAlgorithm( + ModifiableString usedHashAlgorithm, boolean adjustLengthField) { + if (adjustLengthField) { + setUsedHashAlgorithmLength( + usedHashAlgorithm.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + this.usedHashAlgorithm = usedHashAlgorithm; + } + + public void setUsedHashAlgorithm(String usedHashAlgorithm, boolean adjustLengthField) { + if (adjustLengthField) { + setUsedHashAlgorithmLength( + usedHashAlgorithm.getBytes(StandardCharsets.US_ASCII).length); + } + this.usedHashAlgorithm = + ModifiableVariableFactory.safelySetValue(this.usedHashAlgorithm, usedHashAlgorithm); + } + + public void setUsedHashAlgorithm(HashAlgorithm usedHashAlgorithm, boolean adjustLengthField) { + setUsedHashAlgorithm(usedHashAlgorithm.getName()); + } + + public ModifiableByteArray getHash() { + return hash; + } + + public void setHash(ModifiableByteArray hash) { + this.hash = hash; + } + + public void setHash(byte[] hash) { + this.hash = ModifiableVariableFactory.safelySetValue(this.hash, hash); + } + + @Override + public SftpResponseCheckFileMessageHandler getHandler(SshContext context) { + return new SftpResponseCheckFileMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java new file mode 100644 index 000000000..77c66cdbd --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java @@ -0,0 +1,82 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended_response; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseLimitsMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseLimitsMessage extends SftpResponseMessage { + + private ModifiableLong maximumPacketLength; + private ModifiableLong maximumReadLength; + private ModifiableLong maximumWriteLength; + private ModifiableLong maximumOpenHandles; + + public ModifiableLong getMaximumPacketLength() { + return maximumPacketLength; + } + + public void setMaximumPacketLength(ModifiableLong maximumPacketLength) { + this.maximumPacketLength = maximumPacketLength; + } + + public void setMaximumPacketLength(long maximumPacketLength) { + this.maximumPacketLength = + ModifiableVariableFactory.safelySetValue( + this.maximumPacketLength, maximumPacketLength); + } + + public ModifiableLong getMaximumReadLength() { + return maximumReadLength; + } + + public void setMaximumReadLength(ModifiableLong maximumReadLength) { + this.maximumReadLength = maximumReadLength; + } + + public void setMaximumReadLength(long maximumReadLength) { + this.maximumReadLength = + ModifiableVariableFactory.safelySetValue(this.maximumReadLength, maximumReadLength); + } + + public ModifiableLong getMaximumWriteLength() { + return maximumWriteLength; + } + + public void setMaximumWriteLength(ModifiableLong maximumWriteLength) { + this.maximumWriteLength = maximumWriteLength; + } + + public void setMaximumWriteLength(long maximumWriteLength) { + this.maximumWriteLength = + ModifiableVariableFactory.safelySetValue( + this.maximumWriteLength, maximumWriteLength); + } + + public ModifiableLong getMaximumOpenHandles() { + return maximumOpenHandles; + } + + public void setMaximumOpenHandles(ModifiableLong maximumOpenHandles) { + this.maximumOpenHandles = maximumOpenHandles; + } + + public void setMaximumOpenHandles(long maximumOpenHandles) { + this.maximumOpenHandles = + ModifiableVariableFactory.safelySetValue( + this.maximumOpenHandles, maximumOpenHandles); + } + + @Override + public SftpResponseLimitsMessageHandler getHandler(SshContext context) { + return new SftpResponseLimitsMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseSpaceAvailableMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseSpaceAvailableMessage.java new file mode 100644 index 000000000..7b16e30a6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseSpaceAvailableMessage.java @@ -0,0 +1,99 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended_response; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseSpaceAvailableMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseSpaceAvailableMessage + extends SftpResponseMessage { + + private ModifiableLong bytesOnDevice; + private ModifiableLong unusedBytesOnDevice; + private ModifiableLong bytesAvailableToUser; + private ModifiableLong unusedBytesAvailableToUser; + private ModifiableInteger bytesPerAllocationUnit; + + public ModifiableLong getBytesOnDevice() { + return bytesOnDevice; + } + + public void setBytesOnDevice(ModifiableLong bytesOnDevice) { + this.bytesOnDevice = bytesOnDevice; + } + + public void setBytesOnDevice(long bytesOnDevice) { + this.bytesOnDevice = + ModifiableVariableFactory.safelySetValue(this.bytesOnDevice, bytesOnDevice); + } + + public ModifiableLong getUnusedBytesOnDevice() { + return unusedBytesOnDevice; + } + + public void setUnusedBytesOnDevice(ModifiableLong unusedBytesOnDevice) { + this.unusedBytesOnDevice = unusedBytesOnDevice; + } + + public void setUnusedBytesOnDevice(long unusedBytesOnDevice) { + this.unusedBytesOnDevice = + ModifiableVariableFactory.safelySetValue( + this.unusedBytesOnDevice, unusedBytesOnDevice); + } + + public ModifiableLong getBytesAvailableToUser() { + return bytesAvailableToUser; + } + + public void setBytesAvailableToUser(ModifiableLong bytesAvailableToUser) { + this.bytesAvailableToUser = bytesAvailableToUser; + } + + public void setBytesAvailableToUser(long bytesAvailableToUser) { + this.bytesAvailableToUser = + ModifiableVariableFactory.safelySetValue( + this.bytesAvailableToUser, bytesAvailableToUser); + } + + public ModifiableLong getUnusedBytesAvailableToUser() { + return unusedBytesAvailableToUser; + } + + public void setUnusedBytesAvailableToUser(ModifiableLong unusedBytesAvailableToUser) { + this.unusedBytesAvailableToUser = unusedBytesAvailableToUser; + } + + public void setUnusedBytesAvailableToUser(long unusedBytesAvailableToUser) { + this.unusedBytesAvailableToUser = + ModifiableVariableFactory.safelySetValue( + this.unusedBytesAvailableToUser, unusedBytesAvailableToUser); + } + + public ModifiableInteger getBytesPerAllocationUnit() { + return bytesPerAllocationUnit; + } + + public void setBytesPerAllocationUnit(ModifiableInteger bytesPerAllocationUnit) { + this.bytesPerAllocationUnit = bytesPerAllocationUnit; + } + + public void setBytesPerAllocationUnit(int bytesPerAllocationUnit) { + this.bytesPerAllocationUnit = + ModifiableVariableFactory.safelySetValue( + this.bytesPerAllocationUnit, bytesPerAllocationUnit); + } + + @Override + public SftpResponseSpaceAvailableMessageHandler getHandler(SshContext context) { + return new SftpResponseSpaceAvailableMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseStatVfsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseStatVfsMessage.java new file mode 100644 index 000000000..768573f05 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseStatVfsMessage.java @@ -0,0 +1,177 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended_response; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.sshattacker.core.constants.SftpVfsFlag; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseStatVfsMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseStatVfsMessage extends SftpResponseMessage { + + private ModifiableLong blockSize; + private ModifiableLong fundamentalBlockSize; + private ModifiableLong countBlocks; + private ModifiableLong freeBlocks; + private ModifiableLong freeBlocksNonRoot; + private ModifiableLong fileInodes; + private ModifiableLong freeInodes; + private ModifiableLong freeInodesNonRoot; + private ModifiableLong systemId; + private ModifiableLong flags; + private ModifiableLong maximumFilenameLength; + + public ModifiableLong getBlockSize() { + return blockSize; + } + + public void setBlockSize(ModifiableLong blockSize) { + this.blockSize = blockSize; + } + + public void setBlockSize(long blockSize) { + this.blockSize = ModifiableVariableFactory.safelySetValue(this.blockSize, blockSize); + } + + public ModifiableLong getFundamentalBlockSize() { + return fundamentalBlockSize; + } + + public void setFundamentalBlockSize(ModifiableLong fundamentalBlockSize) { + this.fundamentalBlockSize = fundamentalBlockSize; + } + + public void setFundamentalBlockSize(long fundamentalBlockSize) { + this.fundamentalBlockSize = + ModifiableVariableFactory.safelySetValue( + this.fundamentalBlockSize, fundamentalBlockSize); + } + + public ModifiableLong getCountBlocks() { + return countBlocks; + } + + public void setCountBlocks(ModifiableLong countBlocks) { + this.countBlocks = countBlocks; + } + + public void setCountBlocks(long countBlocks) { + this.countBlocks = ModifiableVariableFactory.safelySetValue(this.countBlocks, countBlocks); + } + + public ModifiableLong getFreeBlocks() { + return freeBlocks; + } + + public void setFreeBlocks(ModifiableLong freeBlocks) { + this.freeBlocks = freeBlocks; + } + + public void setFreeBlocks(long freeBlocks) { + this.freeBlocks = ModifiableVariableFactory.safelySetValue(this.freeBlocks, freeBlocks); + } + + public ModifiableLong getFreeBlocksNonRoot() { + return freeBlocksNonRoot; + } + + public void setFreeBlocksNonRoot(ModifiableLong freeBlocksNonRoot) { + this.freeBlocksNonRoot = freeBlocksNonRoot; + } + + public void setFreeBlocksNonRoot(long freeBlocksNonRoot) { + this.freeBlocksNonRoot = + ModifiableVariableFactory.safelySetValue(this.freeBlocksNonRoot, freeBlocksNonRoot); + } + + public ModifiableLong getFileInodes() { + return fileInodes; + } + + public void setFileInodes(ModifiableLong fileInodes) { + this.fileInodes = fileInodes; + } + + public void setFileInodes(long fileInodes) { + this.fileInodes = ModifiableVariableFactory.safelySetValue(this.fileInodes, fileInodes); + } + + public ModifiableLong getFreeInodes() { + return freeInodes; + } + + public void setFreeInodes(ModifiableLong freeInodes) { + this.freeInodes = freeInodes; + } + + public void setFreeInodes(long freeInodes) { + this.freeInodes = ModifiableVariableFactory.safelySetValue(this.freeInodes, freeInodes); + } + + public ModifiableLong getFreeInodesNonRoot() { + return freeInodesNonRoot; + } + + public void setFreeInodesNonRoot(ModifiableLong freeInodesNonRoot) { + this.freeInodesNonRoot = freeInodesNonRoot; + } + + public void setFreeInodesNonRoot(long freeInodesNonRoot) { + this.freeInodesNonRoot = + ModifiableVariableFactory.safelySetValue(this.freeInodesNonRoot, freeInodesNonRoot); + } + + public ModifiableLong getSystemId() { + return systemId; + } + + public void setSystemId(ModifiableLong systemId) { + this.systemId = systemId; + } + + public void setSystemId(long systemId) { + this.systemId = ModifiableVariableFactory.safelySetValue(this.systemId, systemId); + } + + public ModifiableLong getFlags() { + return flags; + } + + public void setFlags(ModifiableLong flags) { + this.flags = flags; + } + + public void setFlags(long flags) { + this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); + } + + public void setFlags(SftpVfsFlag... vfsFlags) { + setFlags(SftpVfsFlag.flagsToLong(vfsFlags)); + } + + public ModifiableLong getMaximumFilenameLength() { + return maximumFilenameLength; + } + + public void setMaximumFilenameLength(ModifiableLong maximumFilenameLength) { + this.maximumFilenameLength = maximumFilenameLength; + } + + public void setMaximumFilenameLength(long maximumFilenameLength) { + this.maximumFilenameLength = + ModifiableVariableFactory.safelySetValue( + this.maximumFilenameLength, maximumFilenameLength); + } + + @Override + public SftpResponseStatVfsMessageHandler getHandler(SshContext context) { + return new SftpResponseStatVfsMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUnknownMessage.java new file mode 100644 index 000000000..8e9259ea4 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUnknownMessage.java @@ -0,0 +1,37 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended_response; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseUnknownMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpResponseUnknownMessage extends SftpResponseMessage { + private ModifiableByteArray responseSpecificData; + + public ModifiableByteArray getResponseSpecificData() { + return responseSpecificData; + } + + public void setResponseSpecificData(ModifiableByteArray responseSpecificData) { + this.responseSpecificData = responseSpecificData; + } + + public void setResponseSpecificData(byte[] responseSpecificData) { + this.responseSpecificData = + ModifiableVariableFactory.safelySetValue( + this.responseSpecificData, responseSpecificData); + } + + @Override + public SftpResponseUnknownMessageHandler getHandler(SshContext context) { + return new SftpResponseUnknownMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java new file mode 100644 index 000000000..b5b5b5f7f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java @@ -0,0 +1,89 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended_response; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseUsersGroupsByIdMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.util.ArrayList; +import java.util.List; + +public class SftpResponseUsersGroupsByIdMessage + extends SftpResponseMessage { + + private ModifiableInteger userNamesLength; + private List userNames = new ArrayList<>(); + private ModifiableInteger groupNamesLength; + private List groupNames = new ArrayList<>(); + + public ModifiableInteger getUserNamesLength() { + return userNamesLength; + } + + public void setUserNamesLength(ModifiableInteger userNamesLength) { + this.userNamesLength = userNamesLength; + } + + public void setUserNamesLength(int userNamesLength) { + this.userNamesLength = + ModifiableVariableFactory.safelySetValue(this.userNamesLength, userNamesLength); + } + + public List getUserNames() { + return userNames; + } + + public void setUserNames(List userNames) { + this.userNames = userNames; + } + + public void addUserName(ModifiableString userName) { + userNames.add(userName); + } + + public void addUserName(String userName) { + userNames.add(ModifiableVariableFactory.safelySetValue(null, userName)); + } + + public ModifiableInteger getGroupNamesLength() { + return groupNamesLength; + } + + public void setGroupNamesLength(ModifiableInteger groupNamesLength) { + this.groupNamesLength = groupNamesLength; + } + + public void setGroupNamesLength(int groupNamesLength) { + this.groupNamesLength = + ModifiableVariableFactory.safelySetValue(this.groupNamesLength, groupNamesLength); + } + + public List getGroupNames() { + return groupNames; + } + + public void setGroupNames(List groupNames) { + this.groupNames = groupNames; + } + + public void addGroupName(ModifiableString groupName) { + groupNames.add(groupName); + } + + public void addGroupName(String groupName) { + groupNames.add(ModifiableVariableFactory.safelySetValue(null, groupName)); + } + + @Override + public SftpResponseUsersGroupsByIdMessageHandler getHandler(SshContext context) { + return new SftpResponseUsersGroupsByIdMessageHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java new file mode 100644 index 000000000..12583dd36 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java @@ -0,0 +1,69 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileHandleMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestCheckFileHandleMessageParser + extends SftpRequestExtendedWithHandleMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestCheckFileHandleMessageParser(byte[] array) { + super(array); + } + + public SftpRequestCheckFileHandleMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestCheckFileHandleMessage createMessage() { + return new SftpRequestCheckFileHandleMessage(); + } + + private void parseHashAlgorithms() { + message.setHashAlgorithmsLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("HashAlgorithms length: {}", message.getHashAlgorithmsLength().getValue()); + message.setHashAlgorithms( + parseByteString( + message.getHashAlgorithmsLength().getValue(), StandardCharsets.US_ASCII)); + LOGGER.debug( + "HashAlgorithms: {}", + () -> backslashEscapeString(message.getHashAlgorithms().getValue())); + } + + private void parseStartOffset() { + message.setStartOffset(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("StartOffset: {}", message.getStartOffset().getValue()); + } + + private void parseLength() { + message.setLength(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("Length: {}", message.getLength().getValue()); + } + + private void parseBlockSize() { + message.setBlockSize(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("BlockSize: {}", message.getBlockSize().getValue()); + } + + @Override + protected void parseRequestExtendedWithHandleSpecificContents() { + parseHashAlgorithms(); + parseStartOffset(); + parseLength(); + parseBlockSize(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileNameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileNameMessageParser.java new file mode 100644 index 000000000..469789502 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileNameMessageParser.java @@ -0,0 +1,69 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileNameMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestCheckFileNameMessageParser + extends SftpRequestExtendedWithPathMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestCheckFileNameMessageParser(byte[] array) { + super(array); + } + + public SftpRequestCheckFileNameMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestCheckFileNameMessage createMessage() { + return new SftpRequestCheckFileNameMessage(); + } + + private void parseHashAlgorithms() { + message.setHashAlgorithmsLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("HashAlgorithms length: {}", message.getHashAlgorithmsLength().getValue()); + message.setHashAlgorithms( + parseByteString( + message.getHashAlgorithmsLength().getValue(), StandardCharsets.US_ASCII)); + LOGGER.debug( + "HashAlgorithms: {}", + () -> backslashEscapeString(message.getHashAlgorithms().getValue())); + } + + private void parseStartOffset() { + message.setStartOffset(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("StartOffset: {}", message.getStartOffset().getValue()); + } + + private void parseLength() { + message.setLength(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("Length: {}", message.getLength().getValue()); + } + + private void parseBlockSize() { + message.setBlockSize(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("BlockSize: {}", message.getBlockSize().getValue()); + } + + @Override + protected void parseRequestExtendedWithPathSpecificContents() { + parseHashAlgorithms(); + parseStartOffset(); + parseLength(); + parseBlockSize(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUnknownMessageParser.java new file mode 100644 index 000000000..bf5b1d3c2 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUnknownMessageParser.java @@ -0,0 +1,46 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUnknownMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestUnknownMessageParser + extends SftpRequestExtendedMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestUnknownMessageParser(byte[] array) { + super(array); + } + + public SftpRequestUnknownMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestUnknownMessage createMessage() { + return new SftpRequestUnknownMessage(); + } + + private void parseRequestSpecificData() { + message.setRequestSpecificData(parseByteArrayField(getBytesLeft())); + LOGGER.debug( + "RequestSpecificData: {}", + () -> + ArrayConverter.bytesToRawHexString( + message.getRequestSpecificData().getValue())); + } + + @Override + protected void parseRequestExtendedSpecificContents() { + parseRequestSpecificData(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseCheckFileMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseCheckFileMessageParser.java new file mode 100644 index 000000000..6f33cc27c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseCheckFileMessageParser.java @@ -0,0 +1,62 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_response; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseCheckFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseMessageParser; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseCheckFileMessageParser + extends SftpResponseMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseCheckFileMessageParser(byte[] array) { + super(array); + } + + public SftpResponseCheckFileMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpResponseCheckFileMessage createMessage() { + return new SftpResponseCheckFileMessage(); + } + + private void parseUsedHashAlgorithm() { + message.setUsedHashAlgorithmLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug( + "UsedHashAlgorithm length: {}", message.getUsedHashAlgorithmLength().getValue()); + message.setUsedHashAlgorithm( + parseByteString( + message.getUsedHashAlgorithmLength().getValue(), + StandardCharsets.US_ASCII)); + LOGGER.debug( + "UsedHashAlgorithm: {}", + () -> backslashEscapeString(message.getUsedHashAlgorithm().getValue())); + } + + private void parseHash() { + message.setHash(parseByteArrayField(getBytesLeft())); + LOGGER.debug( + "Hash: {}", () -> ArrayConverter.bytesToRawHexString(message.getHash().getValue())); + } + + @Override + protected void parseResponseSpecificContents() { + parseUsedHashAlgorithm(); + parseHash(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseLimitsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseLimitsMessageParser.java new file mode 100644 index 000000000..900ae3ec7 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseLimitsMessageParser.java @@ -0,0 +1,48 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_response; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseMessageParser; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseLimitsMessageParser + extends SftpResponseMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseLimitsMessageParser(byte[] array) { + super(array); + } + + public SftpResponseLimitsMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpResponseLimitsMessage createMessage() { + return new SftpResponseLimitsMessage(); + } + + @Override + protected void parseResponseSpecificContents() { + message.setMaximumPacketLength(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("MaximumPacketLength: {}", message.getMaximumPacketLength().getValue()); + + message.setMaximumReadLength(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("MaximumReadLength: {}", message.getMaximumReadLength().getValue()); + + message.setMaximumWriteLength(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("MaximumWriteLength: {}", message.getMaximumWriteLength().getValue()); + + message.setMaximumOpenHandles(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("MaximumOpenHandles: {}", message.getMaximumOpenHandles().getValue()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java new file mode 100644 index 000000000..ea9d40253 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_response; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseMessageParser; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseSpaceAvailableMessageParser + extends SftpResponseMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseSpaceAvailableMessageParser(byte[] array) { + super(array); + } + + public SftpResponseSpaceAvailableMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpResponseSpaceAvailableMessage createMessage() { + return new SftpResponseSpaceAvailableMessage(); + } + + @Override + protected void parseResponseSpecificContents() { + message.setBytesOnDevice(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("BytesOnDevice: {}", message.getBytesOnDevice().getValue()); + + message.setUnusedBytesOnDevice(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("UnusedBytesOnDevice: {}", message.getUnusedBytesOnDevice().getValue()); + + message.setBytesAvailableToUser(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("BytesAvailableToUser: {}", message.getBytesAvailableToUser().getValue()); + + message.setUnusedBytesAvailableToUser(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug( + "UnusedBytesAvailableToUser: {}", + message.getUnusedBytesAvailableToUser().getValue()); + + message.setBytesPerAllocationUnit(parseIntField(DataFormatConstants.UINT32_SIZE)); + LOGGER.debug("BytesPerAllocationUnit: {}", message.getBytesPerAllocationUnit().getValue()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseStatVfsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseStatVfsMessageParser.java new file mode 100644 index 000000000..fc49832a3 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseStatVfsMessageParser.java @@ -0,0 +1,103 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_response; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseMessageParser; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseStatVfsMessageParser + extends SftpResponseMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseStatVfsMessageParser(byte[] array) { + super(array); + } + + public SftpResponseStatVfsMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpResponseStatVfsMessage createMessage() { + return new SftpResponseStatVfsMessage(); + } + + private void parseBlockSize() { + message.setBlockSize(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("BlockSize: {}", message.getBlockSize().getValue()); + } + + private void parseFundamentalBlockSize() { + message.setFundamentalBlockSize(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("FundamentalBlockSize: {}", message.getFundamentalBlockSize().getValue()); + } + + private void parseCountBlocks() { + message.setCountBlocks(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("CountBlocks: {}", message.getCountBlocks().getValue()); + } + + private void parseFreeBlocks() { + message.setFreeBlocks(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("FreeBlocks: {}", message.getFreeBlocks().getValue()); + } + + private void parseFreeBlocksNonRoot() { + message.setFreeBlocksNonRoot(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("FreeBlocksNonRoot: {}", message.getFreeBlocksNonRoot().getValue()); + } + + private void parseFileInodes() { + message.setFileInodes(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("FileInodes: {}", message.getFileInodes().getValue()); + } + + private void parseFreeInodes() { + message.setFreeInodes(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("FreeInodes: {}", message.getFreeInodes().getValue()); + } + + private void parseFreeInodesNonRoot() { + message.setFreeInodesNonRoot(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("FreeInodesNonRoot: {}", message.getFreeInodesNonRoot().getValue()); + } + + private void parseSystemId() { + message.setSystemId(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("SystemId: {}", message.getSystemId().getValue()); + } + + private void parseFlags() { + message.setFlags(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("Flags: {}", message.getFlags().getValue()); + } + + private void parseMaximumFilenameLength() { + message.setMaximumFilenameLength(parseLongField(DataFormatConstants.UINT64_SIZE)); + LOGGER.debug("MaximumFilenameLength: {}", message.getMaximumFilenameLength().getValue()); + } + + @Override + protected void parseResponseSpecificContents() { + parseBlockSize(); + parseFundamentalBlockSize(); + parseCountBlocks(); + parseFreeBlocks(); + parseFreeBlocksNonRoot(); + parseFileInodes(); + parseFreeInodes(); + parseFreeInodesNonRoot(); + parseSystemId(); + parseFlags(); + parseMaximumFilenameLength(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUnknownMessageParser.java new file mode 100644 index 000000000..5ac797f71 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUnknownMessageParser.java @@ -0,0 +1,43 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_response; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseMessageParser; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseUnknownMessageParser + extends SftpResponseMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseUnknownMessageParser(byte[] array) { + super(array); + } + + public SftpResponseUnknownMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpResponseUnknownMessage createMessage() { + return new SftpResponseUnknownMessage(); + } + + @Override + protected void parseResponseSpecificContents() { + message.setResponseSpecificData(parseByteArrayField(getBytesLeft())); + LOGGER.debug( + "ResponseSpecificData: {}", + () -> + ArrayConverter.bytesToRawHexString( + message.getResponseSpecificData().getValue())); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java new file mode 100644 index 000000000..b3a0c65ec --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java @@ -0,0 +1,70 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_response; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseMessageParser; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseUsersGroupsByIdMessageParser + extends SftpResponseMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseUsersGroupsByIdMessageParser(byte[] array) { + super(array); + } + + public SftpResponseUsersGroupsByIdMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpResponseUsersGroupsByIdMessage createMessage() { + return new SftpResponseUsersGroupsByIdMessage(); + } + + private void parseUserNames() { + message.setUserNamesLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("UserNames length: {}", message.getUserNamesLength().getValue()); + int oldPointer = getPointer(); + int bytesToRead = message.getUserNamesLength().getValue(); + while (getPointer() - oldPointer < bytesToRead) { + int usernameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("UserName length: {}", usernameLength); + String username = parseByteString(usernameLength, StandardCharsets.UTF_8); + message.addUserName(username); + LOGGER.debug("UserName: {}", () -> backslashEscapeString(username)); + } + } + + private void parseGroupNames() { + message.setGroupNamesLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + LOGGER.debug("GroupNames length: {}", message.getGroupNamesLength().getValue()); + int oldPointer = getPointer(); + int bytesToRead = message.getGroupNamesLength().getValue(); + while (getPointer() - oldPointer < bytesToRead) { + int usernameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("GroupName length: {}", usernameLength); + String groupName = parseByteString(usernameLength, StandardCharsets.UTF_8); + message.addGroupName(groupName); + LOGGER.debug("GroupName: {}", () -> backslashEscapeString(groupName)); + } + } + + @Override + protected void parseResponseSpecificContents() { + parseUserNames(); + parseGroupNames(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java new file mode 100644 index 000000000..300b436c0 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java @@ -0,0 +1,54 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; + +import de.rub.nds.sshattacker.core.constants.HashAlgorithm; +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileHandleMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import java.util.List; + +public class SftpRequestCheckFileHandleMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestCheckFileHandleMessagePreparator( + Chooser chooser, SftpRequestCheckFileHandleMessage message) { + super(chooser, message, SftpExtension.CHECK_FILE_HANDLE); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getHandle() == null) { + // TODO Get valid Handle + getObject().setHandle(new byte[100], true); + } + if (getObject().getHandleLength() == null) { + getObject().setHandleLength(getObject().getHandle().getValue().length); + } + + if (getObject().getHashAlgorithms() == null) { + getObject().setHashAlgorithms(List.of(HashAlgorithm.MD5, HashAlgorithm.SHA_1), true); + } + if (getObject().getHashAlgorithmsLength() == null) { + getObject() + .setHashAlgorithmsLength(getObject().getHashAlgorithms().getValue().length()); + } + + if (getObject().getStartOffset() == null) { + getObject().setStartOffset(0); + } + + if (getObject().getLength() == null) { + getObject().setLength(100000); // 0 for all data + } + + if (getObject().getBlockSize() == null) { + getObject().setBlockSize(512); // Should be >= 256 + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java new file mode 100644 index 000000000..f7807d7aa --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; + +import de.rub.nds.sshattacker.core.constants.HashAlgorithm; +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileNameMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import java.util.List; + +public class SftpRequestCheckFileNameMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestCheckFileNameMessagePreparator( + Chooser chooser, SftpRequestCheckFileNameMessage message) { + super(chooser, message, SftpExtension.CHECK_FILE_NAME); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getPath() == null) { + getObject().setPath("/etc/passwd", true); + } + if (getObject().getPathLength() == null) { + getObject().setPathLength(getObject().getPath().getValue().length()); + } + + if (getObject().getHashAlgorithms() == null) { + getObject().setHashAlgorithms(List.of(HashAlgorithm.MD5, HashAlgorithm.SHA_1), true); + } + if (getObject().getHashAlgorithmsLength() == null) { + getObject() + .setHashAlgorithmsLength(getObject().getHashAlgorithms().getValue().length()); + } + + if (getObject().getStartOffset() == null) { + getObject().setStartOffset(0); + } + + if (getObject().getLength() == null) { + getObject().setLength(100000); // 0 for all data + } + + if (getObject().getBlockSize() == null) { + getObject().setBlockSize(512); // Should be >= 256 + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java new file mode 100644 index 000000000..7f000eecf --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java @@ -0,0 +1,35 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUnknownMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestUnknownMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestUnknownMessagePreparator(Chooser chooser, SftpRequestUnknownMessage message) { + super(chooser, message, ""); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + if (getObject().getExtendedRequestName() == null) { + getObject().setExtendedRequestName("hello-from@ssh-attacker.de"); + } + if (getObject().getExtendedRequestNameLength() == null) { + getObject() + .setExtendedRequestNameLength( + getObject().getExtendedRequestName().getValue().length()); + } + + if (getObject().getRequestSpecificData() == null) { + getObject().setRequestSpecificData(new byte[100]); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java new file mode 100644 index 000000000..82e6cc655 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java @@ -0,0 +1,37 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response; + +import de.rub.nds.sshattacker.core.constants.HashAlgorithm; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseCheckFileMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpResponseCheckFileMessagePreparator + extends SftpResponseExtendedMessagePreparator { + + public SftpResponseCheckFileMessagePreparator( + Chooser chooser, SftpResponseCheckFileMessage message) { + super(chooser, message); + } + + @Override + public void prepareResponseSpecificContents() { + if (getObject().getUsedHashAlgorithm() == null) { + getObject().setUsedHashAlgorithm(HashAlgorithm.MD5, true); + } + if (getObject().getUsedHashAlgorithmLength() == null) { + getObject() + .setUsedHashAlgorithmLength( + getObject().getUsedHashAlgorithm().getValue().length()); + } + + if (getObject().getHash() == null) { + getObject().setHash(new byte[100]); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseExtendedMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseExtendedMessagePreparator.java new file mode 100644 index 000000000..ae57a89e4 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseExtendedMessagePreparator.java @@ -0,0 +1,21 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseMessagePreparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public abstract class SftpResponseExtendedMessagePreparator> + extends SftpResponseMessagePreparator { + + protected SftpResponseExtendedMessagePreparator(Chooser chooser, T message) { + super(chooser, message, SftpPacketTypeConstant.SSH_FXP_EXTENDED_REPLY); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java new file mode 100644 index 000000000..8616a024a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseLimitsMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpResponseLimitsMessagePreparator + extends SftpResponseExtendedMessagePreparator { + + public SftpResponseLimitsMessagePreparator(Chooser chooser, SftpResponseLimitsMessage message) { + super(chooser, message); + } + + @Override + public void prepareResponseSpecificContents() { + if (getObject().getMaximumPacketLength() == null) { + getObject().setMaximumPacketLength(100000); + } + + if (getObject().getMaximumReadLength() == null) { + getObject().setMaximumReadLength(0); + } + + if (getObject().getMaximumWriteLength() == null) { + getObject().setMaximumWriteLength(0); + } + + if (getObject().getMaximumOpenHandles() == null) { + getObject().setMaximumOpenHandles(1); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java new file mode 100644 index 000000000..3f7483126 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java @@ -0,0 +1,43 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpResponseSpaceAvailableMessagePreparator + extends SftpResponseExtendedMessagePreparator { + + public SftpResponseSpaceAvailableMessagePreparator( + Chooser chooser, SftpResponseSpaceAvailableMessage message) { + super(chooser, message); + } + + @Override + public void prepareResponseSpecificContents() { + if (getObject().getBytesOnDevice() == null) { + getObject().setBytesOnDevice(10000000001L); + } + + if (getObject().getUnusedBytesOnDevice() == null) { + getObject().setUnusedBytesOnDevice(10); + } + + if (getObject().getBytesAvailableToUser() == null) { + getObject().setBytesAvailableToUser(100); + } + + if (getObject().getUnusedBytesAvailableToUser() == null) { + getObject().setUnusedBytesAvailableToUser(10); + } + + if (getObject().getBytesPerAllocationUnit() == null) { + getObject().setBytesPerAllocationUnit(0); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java new file mode 100644 index 000000000..0f14eecd0 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java @@ -0,0 +1,58 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response; + +import de.rub.nds.sshattacker.core.constants.SftpVfsFlag; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseStatVfsMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpResponseStatVfsMessagePreparator + extends SftpResponseExtendedMessagePreparator { + + public SftpResponseStatVfsMessagePreparator( + Chooser chooser, SftpResponseStatVfsMessage message) { + super(chooser, message); + } + + @Override + public void prepareResponseSpecificContents() { + if (getObject().getBlockSize() == null) { + getObject().setBlockSize(32); + } + if (getObject().getFundamentalBlockSize() == null) { + getObject().setFundamentalBlockSize(32); + } + if (getObject().getCountBlocks() == null) { + getObject().setCountBlocks(11608687979080L); + } + if (getObject().getFreeBlocks() == null) { + getObject().setFreeBlocks(11608687979080L); + } + if (getObject().getFreeBlocksNonRoot() == null) { + getObject().setFreeBlocksNonRoot(11608687979080L); + } + if (getObject().getFileInodes() == null) { + getObject().setFileInodes(0); + } + if (getObject().getFreeInodes() == null) { + getObject().setFreeInodes(11608687979080L); + } + if (getObject().getFreeInodesNonRoot() == null) { + getObject().setFreeInodesNonRoot(11608687979080L); + } + if (getObject().getSystemId() == null) { + getObject().setSystemId(0); + } + if (getObject().getFlags() == null) { + getObject().setFlags(SftpVfsFlag.SSH_FXE_STATVFS_ST_RDONLY); + } + if (getObject().getMaximumFilenameLength() == null) { + getObject().setMaximumFilenameLength(256); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java new file mode 100644 index 000000000..df4d4abb6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java @@ -0,0 +1,27 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response; + +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUnknownMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpResponseUnknownMessagePreparator + extends SftpResponseExtendedMessagePreparator { + + public SftpResponseUnknownMessagePreparator( + Chooser chooser, SftpResponseUnknownMessage message) { + super(chooser, message); + } + + @Override + public void prepareResponseSpecificContents() { + if (getObject().getResponseSpecificData() == null) { + getObject().setResponseSpecificData(new byte[100]); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java new file mode 100644 index 000000000..3f19a1148 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java @@ -0,0 +1,48 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response; + +import de.rub.nds.modifiablevariable.ModifiableVariable; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpResponseUsersGroupsByIdMessagePreparator + extends SftpResponseExtendedMessagePreparator { + + public SftpResponseUsersGroupsByIdMessagePreparator( + Chooser chooser, SftpResponseUsersGroupsByIdMessage message) { + super(chooser, message); + } + + @Override + public void prepareResponseSpecificContents() { + if (getObject().getUserNames().isEmpty()) { + getObject().addUserName("ssh"); + getObject().addUserName("attacker"); + } + if (getObject().getGroupNames().isEmpty()) { + getObject().addGroupName("nds"); + } + + getObject() + .setUserNamesLength( + getObject().getUserNames().size() * DataFormatConstants.UINT32_SIZE + + getObject().getUserNames().stream() + .map(ModifiableVariable::getValue) + .mapToInt(String::length) + .sum()); + getObject() + .setGroupNamesLength( + getObject().getGroupNames().size() * DataFormatConstants.UINT32_SIZE + + getObject().getGroupNames().stream() + .map(ModifiableVariable::getValue) + .mapToInt(String::length) + .sum()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java new file mode 100644 index 000000000..1971c5879 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java @@ -0,0 +1,60 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileHandleMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestCheckFileHandleMessageSerializer + extends SftpRequestExtendedWithHandleMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestCheckFileHandleMessageSerializer(SftpRequestCheckFileHandleMessage message) { + super(message); + } + + private void serializeHashAlgorithms() { + LOGGER.debug("HashAlgorithms length: {}", message.getHashAlgorithmsLength().getValue()); + appendInt( + message.getHashAlgorithmsLength().getValue(), + DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "HashAlgorithms: {}", + () -> backslashEscapeString(message.getHashAlgorithms().getValue())); + appendString(message.getHashAlgorithms().getValue(), StandardCharsets.US_ASCII); + } + + private void serializeStartOffset() { + LOGGER.debug("StartOffset: {}", message.getStartOffset().getValue()); + appendLong(message.getStartOffset().getValue(), DataFormatConstants.UINT64_SIZE); + } + + private void serializeLength() { + LOGGER.debug("Length: {}", message.getLength().getValue()); + appendLong(message.getLength().getValue(), DataFormatConstants.UINT64_SIZE); + } + + private void serializeBlockSize() { + LOGGER.debug("BlockSize: {}", message.getBlockSize().getValue()); + appendInt(message.getBlockSize().getValue(), DataFormatConstants.UINT32_SIZE); + } + + @Override + protected void serializeRequestExtendedWithHandleSpecificContents() { + serializeHashAlgorithms(); + serializeStartOffset(); + serializeLength(); + serializeBlockSize(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java new file mode 100644 index 000000000..7e4b3c838 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java @@ -0,0 +1,60 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileNameMessage; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestCheckFileNameMessageSerializer + extends SftpRequestExtendedWithPathMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestCheckFileNameMessageSerializer(SftpRequestCheckFileNameMessage message) { + super(message); + } + + private void serializeHashAlgorithms() { + LOGGER.debug("HashAlgorithms length: {}", message.getHashAlgorithmsLength().getValue()); + appendInt( + message.getHashAlgorithmsLength().getValue(), + DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "HashAlgorithms: {}", + () -> backslashEscapeString(message.getHashAlgorithms().getValue())); + appendString(message.getHashAlgorithms().getValue(), StandardCharsets.US_ASCII); + } + + private void serializeStartOffset() { + LOGGER.debug("StartOffset: {}", message.getStartOffset().getValue()); + appendLong(message.getStartOffset().getValue(), DataFormatConstants.UINT64_SIZE); + } + + private void serializeLength() { + LOGGER.debug("Length: {}", message.getLength().getValue()); + appendLong(message.getLength().getValue(), DataFormatConstants.UINT64_SIZE); + } + + private void serializeBlockSize() { + LOGGER.debug("BlockSize: {}", message.getBlockSize().getValue()); + appendInt(message.getBlockSize().getValue(), DataFormatConstants.UINT32_SIZE); + } + + @Override + protected void serializeRequestExtendedWithPathSpecificContents() { + serializeHashAlgorithms(); + serializeStartOffset(); + serializeLength(); + serializeBlockSize(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUnknownMessageSerializer.java new file mode 100644 index 000000000..779b56111 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUnknownMessageSerializer.java @@ -0,0 +1,33 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUnknownMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestUnknownMessageSerializer + extends SftpRequestExtendedMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestUnknownMessageSerializer(SftpRequestUnknownMessage message) { + super(message); + } + + @Override + protected void serializeRequestExtendedSpecificContents() { + LOGGER.debug( + "RequestSpecificData: {}", + () -> + ArrayConverter.bytesToRawHexString( + message.getRequestSpecificData().getValue())); + appendBytes(message.getRequestSpecificData().getValue()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java new file mode 100644 index 000000000..468c7c5ad --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java @@ -0,0 +1,52 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseCheckFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseMessageSerializer; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseCheckFileMessageSerializer + extends SftpResponseMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseCheckFileMessageSerializer(SftpResponseCheckFileMessage message) { + super(message); + } + + private void serializeUsedHashAlgorithm() { + LOGGER.debug( + "UsedHashAlgorithm length: {}", message.getUsedHashAlgorithmLength().getValue()); + appendInt( + message.getUsedHashAlgorithmLength().getValue(), + DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug( + "UsedHashAlgorithm: {}", + () -> backslashEscapeString(message.getUsedHashAlgorithm().getValue())); + appendString(message.getUsedHashAlgorithm().getValue(), StandardCharsets.US_ASCII); + } + + private void serializeHash() { + LOGGER.debug( + "Hash: {}", () -> ArrayConverter.bytesToRawHexString(message.getHash().getValue())); + appendBytes(message.getHash().getValue()); + } + + @Override + protected void serializeResponseSpecificContents() { + serializeUsedHashAlgorithm(); + serializeHash(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseLimitsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseLimitsMessageSerializer.java new file mode 100644 index 000000000..d4ddf4b0b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseLimitsMessageSerializer.java @@ -0,0 +1,39 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseMessageSerializer; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseLimitsMessageSerializer + extends SftpResponseMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseLimitsMessageSerializer(SftpResponseLimitsMessage message) { + super(message); + } + + @Override + protected void serializeResponseSpecificContents() { + LOGGER.debug("MaximumPacketLength: {}", message.getMaximumPacketLength().getValue()); + appendLong(message.getMaximumPacketLength().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("MaximumReadLength: {}", message.getMaximumReadLength().getValue()); + appendLong(message.getMaximumReadLength().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("MaximumWriteLength: {}", message.getMaximumWriteLength().getValue()); + appendLong(message.getMaximumWriteLength().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("MaximumOpenHandles: {}", message.getMaximumOpenHandles().getValue()); + appendLong(message.getMaximumOpenHandles().getValue(), DataFormatConstants.UINT64_SIZE); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java new file mode 100644 index 000000000..d2034fba0 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java @@ -0,0 +1,46 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseMessageSerializer; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseSpaceAvailableMessageSerializer + extends SftpResponseMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseSpaceAvailableMessageSerializer(SftpResponseSpaceAvailableMessage message) { + super(message); + } + + @Override + protected void serializeResponseSpecificContents() { + LOGGER.debug("BytesOnDevice: {}", message.getBytesOnDevice().getValue()); + appendLong(message.getBytesOnDevice().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("UnusedBytesOnDevice: {}", message.getUnusedBytesOnDevice().getValue()); + appendLong(message.getUnusedBytesOnDevice().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("BytesAvailableToUser: {}", message.getBytesAvailableToUser().getValue()); + appendLong(message.getBytesAvailableToUser().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug( + "UnusedBytesAvailableToUser: {}", + message.getUnusedBytesAvailableToUser().getValue()); + appendLong( + message.getUnusedBytesAvailableToUser().getValue(), + DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("BytesPerAllocationUnit: {}", message.getBytesPerAllocationUnit().getValue()); + appendInt(message.getBytesPerAllocationUnit().getValue(), DataFormatConstants.UINT32_SIZE); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java new file mode 100644 index 000000000..c873f2b06 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java @@ -0,0 +1,60 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseMessageSerializer; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseStatVfsMessageSerializer + extends SftpResponseMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseStatVfsMessageSerializer(SftpResponseStatVfsMessage message) { + super(message); + } + + @Override + protected void serializeResponseSpecificContents() { + LOGGER.debug("BlockSize: {}", message.getBlockSize().getValue()); + appendLong(message.getBlockSize().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("FundamentalBlockSize: {}", message.getFundamentalBlockSize().getValue()); + appendLong(message.getFundamentalBlockSize().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("CountBlocks: {}", message.getCountBlocks().getValue()); + appendLong(message.getCountBlocks().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("FreeBlocks: {}", message.getFreeBlocks().getValue()); + appendLong(message.getFreeBlocks().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("FreeBlocksNonRoot: {}", message.getFreeBlocksNonRoot().getValue()); + appendLong(message.getFreeBlocksNonRoot().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("FileInodes: {}", message.getFileInodes().getValue()); + appendLong(message.getFileInodes().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("FreeInodes: {}", message.getFreeInodes().getValue()); + appendLong(message.getFreeInodes().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("FreeInodesNonRoot: {}", message.getFreeInodesNonRoot().getValue()); + appendLong(message.getFreeInodesNonRoot().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("SystemId: {}", message.getSystemId().getValue()); + appendLong(message.getSystemId().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("Flags: {}", message.getFlags().getValue()); + appendLong(message.getFlags().getValue(), DataFormatConstants.UINT64_SIZE); + + LOGGER.debug("MaximumFilenameLength: {}", message.getMaximumFilenameLength().getValue()); + appendLong(message.getMaximumFilenameLength().getValue(), DataFormatConstants.UINT64_SIZE); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUnknownMessageSerializer.java new file mode 100644 index 000000000..8039673c6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUnknownMessageSerializer.java @@ -0,0 +1,34 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseMessageSerializer; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseUnknownMessageSerializer + extends SftpResponseMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseUnknownMessageSerializer(SftpResponseUnknownMessage message) { + super(message); + } + + @Override + protected void serializeResponseSpecificContents() { + LOGGER.debug( + "ResponseSpecificData: {}", + () -> + ArrayConverter.bytesToRawHexString( + message.getResponseSpecificData().getValue())); + appendBytes(message.getResponseSpecificData().getValue()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java new file mode 100644 index 000000000..13a25a0b7 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java @@ -0,0 +1,57 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseMessageSerializer; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpResponseUsersGroupsByIdMessageSerializer + extends SftpResponseMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpResponseUsersGroupsByIdMessageSerializer( + SftpResponseUsersGroupsByIdMessage message) { + super(message); + } + + private void serializeUserNames() { + LOGGER.debug("UserNames length: {}", message.getUserNamesLength().getValue()); + appendInt(message.getUserNamesLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + for (ModifiableString userName : message.getUserNames()) { + LOGGER.debug("UserName length: {}", userName.getValue().length()); + appendInt(userName.getValue().length(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("UserName: {}", () -> backslashEscapeString(userName.getValue())); + appendString(userName.getValue(), StandardCharsets.UTF_8); + } + } + + private void serializeGroupNames() { + LOGGER.debug("GroupNames length: {}", message.getGroupNamesLength().getValue()); + appendInt(message.getGroupNamesLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + for (ModifiableString userName : message.getGroupNames()) { + LOGGER.debug("GroupName length: {}", userName.getValue().length()); + appendInt(userName.getValue().length(), DataFormatConstants.STRING_SIZE_LENGTH); + LOGGER.debug("GroupName: {}", () -> backslashEscapeString(userName.getValue())); + appendString(userName.getValue(), StandardCharsets.UTF_8); + } + } + + @Override + protected void serializeResponseSpecificContents() { + serializeUserNames(); + serializeGroupNames(); + } +} From 3d40f371eb823aa7463882eeedd71486d8959346 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 2 Nov 2024 16:21:30 +0100 Subject: [PATCH 035/203] Use Lazy logging for nearly everything related to Serializer Patterns used: (LOGGER\.debug\(\s*"[^"]+",\s*)(\w+)\s*\.get(\w+)\(\)\s*\.getValue\(\)(\);) (\s*)(appendInt\()\s*\2\s*.get\3\(\)\s*\.getValue\(\), Example LOGGER.debug("Username length: {}", message.getUsernameLength().getValue()); appendInt(message.getUsernameLength().getValue(), 1: LOGGER.debug("Username length: {}", 2: message 3. UsernameLength 4. ); 5. (\s*) 6. appendInt( Integer \l$3 = $2.get$3().getValue(); $5$1\l$3$4 $5$6\l$3, --------------------------------------------- (appendInt\()\s*(\w+)\s*\.get(\w+)\(\)\s*\.getValue\(\)([^;]*;) (\s*)(LOGGER\.debug\(\s*"[^"]+",\s*)\2\s*.get\3\(\)\s*\.getValue\(\)\); Example appendInt( message.getPubKeyAlgorithmLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Public key algorithm length: {}", message.getPubKeyAlgorithmLength().getValue()); 1. appendInt( 2. message 3. PubKeyAlgorithmLength 4. , DataFormatConstants.STRING_SIZE_LENGTH); 5. (\s*) 6. LOGGER.debug("Public key algorithm length: {}", Integer \l$3 = $2.get$3().getValue(); $5$6\l$3); $5$1\l$3$4 --------------------------------------------- (LOGGER\.debug\(\s*"[^"]+",\s*)(\w+)\s*\.get(\w+)\(\)\s*\.getValue\(\)(\);) (\s*)(appendLong\()\s*\2\s*.get\3\(\)\s*\.getValue\(\), Example LOGGER.debug("Username length: {}", message.getUsernameLength().getValue()); appendLong(message.getUsernameLength().getValue(), 1: LOGGER.debug("Username length: {}", 2: message 3. UsernameLength 4. ); 5. (\s*) 6. appendLong( Long \l$3 = $2.get$3().getValue(); $5$1\l$3$4 $5$6\l$3, ------------------------------------------- (LOGGER\.debug\(\s*"[^"]+",\s*\(\)\s*->\s*ArrayConverter\.bytesToRawHexString\()\s*(\w+)\s*\.get(\w+)\(\)\s*\.getValue\(\)(\)\);) (\s*)(appendBytes\()\s*\2\s*.get\3\(\)\s*\.getValue\(\) Example: LOGGER.debug( "ResponseSpecificData: {}", () -> ArrayConverter.bytesToRawHexString( message.getResponseSpecificData().getValue())); appendBytes(message.getResponseSpecificData().getValue()); 1: LOGGER.debug("ResponseSpecificData: {}", () -> ArrayConverter.bytesToRawHexString( 2: message 3. ResponseSpecificData 4. )); 5. (\s*) 6. appendBytes( byte[] \l$3 = $2.get$3().getValue(); $5$1\l$3$4 $5$6\l$3 ------------------------------------------- (LOGGER\.debug\(\s*"[^"]+",\s*\(\)\s*->\s*ArrayConverter\.bytesToHexString\()\s*(\w+)\s*\.get(\w+)\(\)\s*\.getValue\(\)(\)\);) (\s*)(appendBytes\()\s*\2\s*.get\3\(\)\s*\.getValue\(\) Example: LOGGER.debug( "ResponseSpecificData: {}", () -> ArrayConverter.bytesToRawHexString( message.getResponseSpecificData().getValue())); appendBytes(message.getResponseSpecificData().getValue()); 1: LOGGER.debug("ResponseSpecificData: {}", () -> ArrayConverter.bytesToRawHexString( 2: message 3. ResponseSpecificData 4. )); 5. (\s*) 6. appendBytes( byte[] \l$3 = $2.get$3().getValue(); $5$1\l$3$4 $5$6\l$3 ------------------------------------------- (appendBytes\()\s*(\w+)\s*\.get(\w+)\(\)\s*\.getValue\(\)([^;]*;) (\s*)(LOGGER\.debug\(\s*"[^"]+",\s*\(\) -> ArrayConverter.bytesToRawHexString\()\2\s*.get\3\(\)\s*\.getValue\(\)\)\); Example: appendBytes(message.getHostKeyBytes().getValue()); LOGGER.debug( "Host key bytes: {}", () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); 1. appendBytes( 2. message 3. HostKeyBytes 4. ); 5. (\s*) 6. LOGGER.debug("Host key bytes: {}", () -> ArrayConverter.bytesToRawHexString( byte[] \l$3 = $2.get$3().getValue(); $5$6\l$3)); $5$1\l$3$4 ------------------------------------------- (appendBytes\()\s*(\w+)\s*\.get(\w+)\(\)\s*\.getValue\(\)([^;]*;) (\s*)(LOGGER\.debug\(\s*"[^"]+",\s*\(\) -> ArrayConverter.bytesToHexString\()\2\s*.get\3\(\)\s*\.getValue\(\)\)\); Example: appendBytes(message.getHostKeyBytes().getValue()); LOGGER.debug( "Host key bytes: {}", () -> ArrayConverter.bytesToHexString(message.getHostKeyBytes().getValue())); 1. appendBytes( 2. message 3. HostKeyBytes 4. ); 5. (\s*) 6. LOGGER.debug("Host key bytes: {}", () -> ArrayConverter.bytesToHexString( byte[] \l$3 = $2.get$3().getValue(); $5$6\l$3)); $5$1\l$3$4 ------------------------------------------- (appendByte\()\s*(\w+)\s*\.get(\w+)\(\)\s*\.getValue\(\)([^;]*;) (\s*)(LOGGER\.debug\(\s*"[^"]+",\s*)\2\s*.get\3\(\)\s*\.getValue\(\)\); Example appendByte(binaryPacket.getPaddingLength().getValue()); LOGGER.debug("Padding length: {}", binaryPacket.getPaddingLength().getValue()); 1. appendByte( 2. message 3. PubKeyAlgorithmLength 4. , DataFormatConstants.STRING_SIZE_LENGTH); 5. (\s*) 6. LOGGER.debug("Public key algorithm length: {}", Byte \l$3 = $2.get$3().getValue(); $5$6\l$3); $5$1\l$3$4 ------------------------------------------- (LOGGER\.debug\(\s*"[^"]+",\s*\(\)\s*->\s*backslashEscapeString\()\s*(\w+)\s*\.get(\w+)\(\)\s*\.getValue\(\)(\)\);) (\s*)(appendString\()\s*\2\s*.get\3\(\)\s*\.getValue\(\) Example: LOGGER.debug("NewPath: {}", () -> backslashEscapeString(message.getNewPath().getValue())); appendString(message.getNewPath().getValue(), StandardCharsets.UTF_8); 1: LOGGER.debug("NewPath: {}", () -> backslashEscapeString( 2: message 3. NewPath 4. )); 5. (\s*) 6. appendString( String \l$3 = $2.get$3().getValue(); $5$1\l$3$4 $5$6\l$3 ------------------------------------------- (appendString\()\s*(\w+)\s*\.get(\w+)\(\)\s*\.getValue\(\)([^;]*;) (\s*)(LOGGER\.debug\(\s*"[^"]+",\s*\(\) -> backslashEscapeString\()\2\s*.get\3\(\)\s*\.getValue\(\)\)\); Example: appendBytes(message.getHostKeyBytes().getValue()); LOGGER.debug( "Host key bytes: {}", () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); 1. appendBytes( 2. message 3. HostKeyBytes 4. ); 5. (\s*) 6. LOGGER.debug("Host key bytes: {}", () -> ArrayConverter.bytesToRawHexString( byte[] \l$3 = $2.get$3().getValue(); $5$6\l$3)); $5$1\l$3$4 ------------------------------------ Fix Error from above (LOGGER\.debug\(\s*"[^"]*",\s*)(ArrayConverter\.bytesToHexString\() $1() -> $2 (LOGGER\.debug\(\s*"[^"]*",\s*)(ArrayConverter\.bytesToRawHexString\() $1() -> $2 ------------------------------------ (LOGGER\.debug\(\s*"[^"]+",)\s*Converter\.byteToBoolean\(\s*(\w+)\s*\.get(\w+)\(\)\s*\.getValue\(\)(\)\);) (\s*)(appendByte\()\s*\2\s*.get\3\(\)\s*\.getValue\(\) Example LOGGER.debug( "Change password: {}", Converter.byteToBoolean(message.getChangePassword().getValue())); appendByte(message.getChangePassword().getValue()); 1: LOGGER.debug("Change password: {}", 2: message 3. ChangePassword 4. )); 5. (\s*) 6. appendByte( Byte \l$3 = $2.get$3().getValue(); $5$1 () -> Converter.byteToBoolean(\l$3$4 $5$6\l$3 --- .../serializer/DataPacketSerializer.java | 12 +- .../SftpHandshakeMessageSerializer.java | 5 +- .../SftpFileAttributesSerializer.java | 43 +++-- .../SftpFileExtendedAttributeSerializer.java | 22 ++- ...questCheckFileHandleMessageSerializer.java | 29 +-- ...RequestCheckFileNameMessageSerializer.java | 29 +-- .../SftpRequestCopyDataMessageSerializer.java | 29 +-- .../SftpRequestCopyFileMessageSerializer.java | 20 +- .../SftpRequestExtendedMessageSerializer.java | 16 +- ...stExtendedWithHandleMessageSerializer.java | 12 +- ...uestExtendedWithPathMessageSerializer.java | 10 +- .../SftpRequestHardlinkMessageSerializer.java | 10 +- ...RequestHomeDirectoryMessageSerializer.java | 10 +- ...tpRequestPosixRenameMessageSerializer.java | 10 +- .../SftpRequestUnknownMessageSerializer.java | 7 +- ...questUsersGroupsByIdMessageSerializer.java | 10 +- .../SftpRequestVendorIdMessageSerializer.java | 43 +++-- ...ftpResponseCheckFileMessageSerializer.java | 21 +-- .../SftpResponseLimitsMessageSerializer.java | 20 +- ...sponseSpaceAvailableMessageSerializer.java | 29 +-- .../SftpResponseStatVfsMessageSerializer.java | 55 +++--- .../SftpResponseUnknownMessageSerializer.java | 7 +- ...ponseUsersGroupsByIdMessageSerializer.java | 10 +- .../SftpAbstractExtensionSerializer.java | 11 +- .../SftpExtensionUnknownSerializer.java | 12 +- .../SftpExtensionVendorIdSerializer.java | 51 +++--- .../SftpExtensionWithVersionSerializer.java | 10 +- .../request/SftpRequestMessageSerializer.java | 5 +- .../SftpRequestOpenMessageSerializer.java | 5 +- .../SftpRequestReadMessageSerializer.java | 10 +- .../SftpRequestRenameMessageSerializer.java | 10 +- ...pRequestSymbolicLinkMessageSerializer.java | 11 +- ...ftpRequestWithHandleMessageSerializer.java | 12 +- .../SftpRequestWithPathMessageSerializer.java | 10 +- .../SftpRequestWriteMessageSerializer.java | 16 +- .../SftpResponseDataMessageSerializer.java | 11 +- .../SftpResponseHandleMessageSerializer.java | 12 +- .../SftpResponseMessageSerializer.java | 5 +- .../SftpResponseNameEntrySerializer.java | 22 ++- .../SftpResponseNameMessageSerializer.java | 5 +- .../SftpResponseStatusMessageSerializer.java | 31 ++-- .../string/StringDataMessageSerializer.java | 5 +- .../serializer/BinaryPacketSerializer.java | 32 ++-- .../serializer/BlobPacketSerializer.java | 7 +- .../UserAuthBannerMessageSerializer.java | 23 +-- .../UserAuthFailureMessageSerializer.java | 16 +- .../UserAuthHostbasedMessageSerializer.java | 64 +++---- .../UserAuthInfoRequestMessageSerializer.java | 44 ++--- ...UserAuthInfoResponseMessageSerializer.java | 5 +- ...hKeyboardInteractiveMessageSerializer.java | 24 +-- .../UserAuthPasswordMessageSerializer.java | 18 +- .../UserAuthPubkeyMessageSerializer.java | 45 +++-- .../UserAuthRequestMessageSerializer.java | 35 ++-- .../UserAuthUnknownMessageSerializer.java | 7 +- .../ChannelDataMessageSerializer.java | 11 +- .../ChannelExtendedDataMessageSerializer.java | 11 +- .../serializer/ChannelMessageSerializer.java | 5 +- ...nnelOpenConfirmationMessageSerializer.java | 10 +- .../ChannelOpenFailureMessageSerializer.java | 28 +-- .../ChannelOpenMessageSerializer.java | 21 ++- .../ChannelOpenUnknownMessageSerializer.java | 6 +- .../ChannelRequestBreakMessageSerializer.java | 5 +- .../ChannelRequestEnvMessageSerializer.java | 27 ++- .../ChannelRequestExecMessageSerializer.java | 10 +- ...nelRequestExitSignalMessageSerializer.java | 37 ++-- ...nelRequestExitStatusMessageSerializer.java | 5 +- .../ChannelRequestMessageSerializer.java | 11 +- .../ChannelRequestPtyMessageSerializer.java | 36 ++-- ...ChannelRequestSignalMessageSerializer.java | 11 +- ...nnelRequestSubsystemMessageSerializer.java | 14 +- ...hannelRequestUnknownMessageSerializer.java | 6 +- ...lRequestWindowChangeMessageSerializer.java | 20 +- .../ChannelRequestX11MessageSerializer.java | 25 ++- ...hannelRequestXonXoffMessageSerializer.java | 6 +- .../ChannelWindowAdjustMessageSerializer.java | 5 +- ...tCancelTcpIpForwardlMessageSerializer.java | 13 +- .../GlobalRequestMessageSerializer.java | 18 +- ...questOpenSshHostKeysMessageSerializer.java | 7 +- ...GlobalRequestSuccessMessageSerializer.java | 7 +- ...lRequestTcpIpForwardMessageSerializer.java | 13 +- ...GlobalRequestUnknownMessageSerializer.java | 6 +- .../serializer/DebugMessageSerializer.java | 30 +-- ...hGexKeyExchangeGroupMessageSerializer.java | 13 +- ...DhGexKeyExchangeInitMessageSerializer.java | 9 +- ...eyExchangeOldRequestMessageSerializer.java | 5 +- ...hGexKeyExchangeReplyMessageSerializer.java | 27 ++- ...exKeyExchangeRequestMessageSerializer.java | 15 +- .../DhKeyExchangeInitMessageSerializer.java | 9 +- .../DhKeyExchangeReplyMessageSerializer.java | 27 ++- .../DisconnectMessageSerializer.java | 19 +- .../EcdhKeyExchangeInitMessageSerializer.java | 16 +- ...EcdhKeyExchangeReplyMessageSerializer.java | 26 ++- .../ExtensionInfoMessageSerializer.java | 5 +- ...bridKeyExchangeReplyMessageSerializer.java | 18 +- .../serializer/IgnoreMessageSerializer.java | 11 +- .../KeyExchangeInitMessageSerializer.java | 171 ++++++++---------- .../serializer/PingMessageSerializer.java | 11 +- .../serializer/PongMessageSerializer.java | 11 +- .../RsaKeyExchangeDoneMessageSerializer.java | 5 +- ...RsaKeyExchangePubkeyMessageSerializer.java | 6 +- ...RsaKeyExchangeSecretMessageSerializer.java | 7 +- .../ServiceAcceptMessageSerializer.java | 12 +- .../ServiceRequestMessageSerializer.java | 12 +- .../AbstractExtensionSerializer.java | 5 +- .../DelayCompressionExtensionSerializer.java | 25 ++- .../extension/PingExtensionSerializer.java | 5 +- .../ServerSigAlgsExtensionSerializer.java | 9 +- .../extension/UnknownExtensionSerializer.java | 5 +- 108 files changed, 968 insertions(+), 953 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java index 06dc5cb46..b5173076f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java @@ -28,13 +28,13 @@ public DataPacketSerializer(DataPacket dataPacket) { protected void serializeBytes() { LOGGER.debug("Serializing DataPacket to bytes:"); - appendInt(dataPacket.getLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Packet length: {}", dataPacket.getLength().getValue()); + Integer length = dataPacket.getLength().getValue(); + LOGGER.debug("Packet length: {}", length); + appendInt(length, DataFormatConstants.STRING_SIZE_LENGTH); - appendBytes(dataPacket.getPayload().getValue()); - LOGGER.debug( - "Payload: {}", - () -> ArrayConverter.bytesToHexString(dataPacket.getPayload().getValue())); + byte[] payload = dataPacket.getPayload().getValue(); + LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToHexString(payload)); + appendBytes(payload); dataPacket.setCompletePacketBytes(getAlreadySerialized()); LOGGER.trace( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java index 8c03d8a5a..669405c21 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java @@ -23,8 +23,9 @@ protected SftpHandshakeMessageSerializer(T message) { } private void serializeVersion() { - LOGGER.debug("Version: {}", message.getVersion().getValue()); - appendInt(message.getVersion().getValue(), DataFormatConstants.UINT32_SIZE); + Integer version = message.getVersion().getValue(); + LOGGER.debug("Version: {}", version); + appendInt(version, DataFormatConstants.UINT32_SIZE); } private void serializeExtensions() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java index 8a65db119..59a18a317 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer.attribute; -import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; @@ -27,39 +26,45 @@ public SftpFileAttributesSerializer(SftpFileAttributes attributes) { } private void serializeFlags() { - ArrayConverter.intToBytes( - attributes.getFlags().getValue(), DataFormatConstants.UINT32_SIZE); - LOGGER.debug("Flags: {}", attributes.getFlags().getValue()); - appendInt(attributes.getFlags().getValue(), DataFormatConstants.UINT32_SIZE); + Integer flags = attributes.getFlags().getValue(); + LOGGER.debug("Flags: {}", flags); + appendInt(flags, DataFormatConstants.UINT32_SIZE); } private void serializeSize() { - LOGGER.debug("Size: {}", attributes.getSize().getValue()); - appendLong(attributes.getSize().getValue(), DataFormatConstants.UINT64_SIZE); + Long size = attributes.getSize().getValue(); + LOGGER.debug("Size: {}", size); + appendLong(size, DataFormatConstants.UINT64_SIZE); } private void serializeUIdGId() { - LOGGER.debug("UId: {}", attributes.getUId().getValue()); - appendInt(attributes.getUId().getValue(), DataFormatConstants.UINT32_SIZE); - LOGGER.debug("GId: {}", attributes.getGId().getValue()); - appendInt(attributes.getGId().getValue(), DataFormatConstants.UINT32_SIZE); + Integer uId = attributes.getUId().getValue(); + LOGGER.debug("UId: {}", uId); + appendInt(uId, DataFormatConstants.UINT32_SIZE); + Integer gId = attributes.getGId().getValue(); + LOGGER.debug("GId: {}", gId); + appendInt(gId, DataFormatConstants.UINT32_SIZE); } private void serializePermissions() { - LOGGER.debug("Permissions: {}", attributes.getPermissions().getValue()); - appendInt(attributes.getPermissions().getValue(), DataFormatConstants.UINT32_SIZE); + Integer permissions = attributes.getPermissions().getValue(); + LOGGER.debug("Permissions: {}", permissions); + appendInt(permissions, DataFormatConstants.UINT32_SIZE); } private void serializeAcModTime() { - LOGGER.debug("ATime: {}", attributes.getATime().getValue()); - appendInt(attributes.getATime().getValue(), DataFormatConstants.UINT32_SIZE); - LOGGER.debug("MTime: {}", attributes.getMTime().getValue()); - appendInt(attributes.getMTime().getValue(), DataFormatConstants.UINT32_SIZE); + Integer aTime = attributes.getATime().getValue(); + LOGGER.debug("ATime: {}", aTime); + appendInt(aTime, DataFormatConstants.UINT32_SIZE); + Integer mTime = attributes.getMTime().getValue(); + LOGGER.debug("MTime: {}", mTime); + appendInt(mTime, DataFormatConstants.UINT32_SIZE); } private void serializeExtendedAttributes() { - LOGGER.debug("ExtendedCount: {}", attributes.getExtendedCount().getValue()); - appendInt(attributes.getExtendedCount().getValue(), DataFormatConstants.UINT32_SIZE); + Integer extendedCount = attributes.getExtendedCount().getValue(); + LOGGER.debug("ExtendedCount: {}", extendedCount); + appendInt(extendedCount, DataFormatConstants.UINT32_SIZE); attributes .getExtendedAttributes() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java index 01242de8f..da436d1d2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java @@ -29,19 +29,21 @@ public SftpFileExtendedAttributeSerializer(SftpFileExtendedAttribute attribute) } private void serializeType() { - LOGGER.debug("Type length: {}", attribute.getTypeLength().getValue()); - appendInt(attribute.getTypeLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Type: {}", () -> backslashEscapeString(attribute.getType().getValue())); - appendString(attribute.getType().getValue(), StandardCharsets.US_ASCII); + Integer typeLength = attribute.getTypeLength().getValue(); + LOGGER.debug("Type length: {}", typeLength); + appendInt(typeLength, DataFormatConstants.STRING_SIZE_LENGTH); + String type = attribute.getType().getValue(); + LOGGER.debug("Type: {}", () -> backslashEscapeString(type)); + appendString(type, StandardCharsets.US_ASCII); } private void serializeData() { - LOGGER.debug("Data length: {}", attribute.getDataLength().getValue()); - appendInt(attribute.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Data: {}", - () -> ArrayConverter.bytesToRawHexString(attribute.getData().getValue())); - appendBytes(attribute.getData().getValue()); + Integer dataLength = attribute.getDataLength().getValue(); + LOGGER.debug("Data length: {}", dataLength); + appendInt(dataLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] data = attribute.getData().getValue(); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); + appendBytes(data); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java index 1971c5879..2d9156d44 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java @@ -25,29 +25,30 @@ public SftpRequestCheckFileHandleMessageSerializer(SftpRequestCheckFileHandleMes } private void serializeHashAlgorithms() { - LOGGER.debug("HashAlgorithms length: {}", message.getHashAlgorithmsLength().getValue()); - appendInt( - message.getHashAlgorithmsLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "HashAlgorithms: {}", - () -> backslashEscapeString(message.getHashAlgorithms().getValue())); - appendString(message.getHashAlgorithms().getValue(), StandardCharsets.US_ASCII); + Integer hashAlgorithmsLength = message.getHashAlgorithmsLength().getValue(); + LOGGER.debug("HashAlgorithms length: {}", hashAlgorithmsLength); + appendInt(hashAlgorithmsLength, DataFormatConstants.STRING_SIZE_LENGTH); + String hashAlgorithms = message.getHashAlgorithms().getValue(); + LOGGER.debug("HashAlgorithms: {}", () -> backslashEscapeString(hashAlgorithms)); + appendString(hashAlgorithms, StandardCharsets.US_ASCII); } private void serializeStartOffset() { - LOGGER.debug("StartOffset: {}", message.getStartOffset().getValue()); - appendLong(message.getStartOffset().getValue(), DataFormatConstants.UINT64_SIZE); + Long startOffset = message.getStartOffset().getValue(); + LOGGER.debug("StartOffset: {}", startOffset); + appendLong(startOffset, DataFormatConstants.UINT64_SIZE); } private void serializeLength() { - LOGGER.debug("Length: {}", message.getLength().getValue()); - appendLong(message.getLength().getValue(), DataFormatConstants.UINT64_SIZE); + Long length = message.getLength().getValue(); + LOGGER.debug("Length: {}", length); + appendLong(length, DataFormatConstants.UINT64_SIZE); } private void serializeBlockSize() { - LOGGER.debug("BlockSize: {}", message.getBlockSize().getValue()); - appendInt(message.getBlockSize().getValue(), DataFormatConstants.UINT32_SIZE); + Integer blockSize = message.getBlockSize().getValue(); + LOGGER.debug("BlockSize: {}", blockSize); + appendInt(blockSize, DataFormatConstants.UINT32_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java index 7e4b3c838..a011c7a75 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java @@ -25,29 +25,30 @@ public SftpRequestCheckFileNameMessageSerializer(SftpRequestCheckFileNameMessage } private void serializeHashAlgorithms() { - LOGGER.debug("HashAlgorithms length: {}", message.getHashAlgorithmsLength().getValue()); - appendInt( - message.getHashAlgorithmsLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "HashAlgorithms: {}", - () -> backslashEscapeString(message.getHashAlgorithms().getValue())); - appendString(message.getHashAlgorithms().getValue(), StandardCharsets.US_ASCII); + Integer hashAlgorithmsLength = message.getHashAlgorithmsLength().getValue(); + LOGGER.debug("HashAlgorithms length: {}", hashAlgorithmsLength); + appendInt(hashAlgorithmsLength, DataFormatConstants.STRING_SIZE_LENGTH); + String hashAlgorithms = message.getHashAlgorithms().getValue(); + LOGGER.debug("HashAlgorithms: {}", () -> backslashEscapeString(hashAlgorithms)); + appendString(hashAlgorithms, StandardCharsets.US_ASCII); } private void serializeStartOffset() { - LOGGER.debug("StartOffset: {}", message.getStartOffset().getValue()); - appendLong(message.getStartOffset().getValue(), DataFormatConstants.UINT64_SIZE); + Long startOffset = message.getStartOffset().getValue(); + LOGGER.debug("StartOffset: {}", startOffset); + appendLong(startOffset, DataFormatConstants.UINT64_SIZE); } private void serializeLength() { - LOGGER.debug("Length: {}", message.getLength().getValue()); - appendLong(message.getLength().getValue(), DataFormatConstants.UINT64_SIZE); + Long length = message.getLength().getValue(); + LOGGER.debug("Length: {}", length); + appendLong(length, DataFormatConstants.UINT64_SIZE); } private void serializeBlockSize() { - LOGGER.debug("BlockSize: {}", message.getBlockSize().getValue()); - appendInt(message.getBlockSize().getValue(), DataFormatConstants.UINT32_SIZE); + Integer blockSize = message.getBlockSize().getValue(); + LOGGER.debug("BlockSize: {}", blockSize); + appendInt(blockSize, DataFormatConstants.UINT32_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyDataMessageSerializer.java index fceafd270..7ea8d940b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyDataMessageSerializer.java @@ -23,29 +23,30 @@ public SftpRequestCopyDataMessageSerializer(SftpRequestCopyDataMessage message) } private void serializeReadFromOffset() { - LOGGER.debug("ReadFromOffset: {}", message.getReadFromOffset().getValue()); - appendLong(message.getReadFromOffset().getValue(), DataFormatConstants.UINT64_SIZE); + Long readFromOffset = message.getReadFromOffset().getValue(); + LOGGER.debug("ReadFromOffset: {}", readFromOffset); + appendLong(readFromOffset, DataFormatConstants.UINT64_SIZE); } private void serializeReadDataLength() { - LOGGER.debug("ReadDataLength: {}", message.getReadDataLength().getValue()); - appendLong(message.getReadDataLength().getValue(), DataFormatConstants.UINT64_SIZE); + Long readDataLength = message.getReadDataLength().getValue(); + LOGGER.debug("ReadDataLength: {}", readDataLength); + appendLong(readDataLength, DataFormatConstants.UINT64_SIZE); } private void serializeWriteToHandle() { - LOGGER.debug("WriteToHandle length: {}", message.getWriteToHandleLength().getValue()); - appendInt( - message.getWriteToHandleLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "WriteToHandle: {}", - () -> ArrayConverter.bytesToRawHexString(message.getWriteToHandle().getValue())); - appendBytes(message.getWriteToHandle().getValue()); + Integer writeToHandleLength = message.getWriteToHandleLength().getValue(); + LOGGER.debug("WriteToHandle length: {}", writeToHandleLength); + appendInt(writeToHandleLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] writeToHandle = message.getWriteToHandle().getValue(); + LOGGER.debug("WriteToHandle: {}", () -> ArrayConverter.bytesToRawHexString(writeToHandle)); + appendBytes(writeToHandle); } private void serializeWriteToOffset() { - LOGGER.debug("WriteToOffset: {}", message.getWriteToOffset().getValue()); - appendLong(message.getWriteToOffset().getValue(), DataFormatConstants.UINT64_SIZE); + Long writeToOffset = message.getWriteToOffset().getValue(); + LOGGER.debug("WriteToOffset: {}", writeToOffset); + appendLong(writeToOffset, DataFormatConstants.UINT64_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyFileMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyFileMessageSerializer.java index eba008bcb..2b715dc67 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyFileMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyFileMessageSerializer.java @@ -26,21 +26,19 @@ public SftpRequestCopyFileMessageSerializer(SftpRequestCopyFileMessage message) } private void serializeDestinationPath() { - LOGGER.debug("DestinationPath length: {}", message.getDestinationPathLength().getValue()); - appendInt( - message.getDestinationPathLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "DestinationPath: {}", - () -> backslashEscapeString(message.getDestinationPath().getValue())); - appendString(message.getDestinationPath().getValue(), StandardCharsets.UTF_8); + Integer destinationPathLength = message.getDestinationPathLength().getValue(); + LOGGER.debug("DestinationPath length: {}", destinationPathLength); + appendInt(destinationPathLength, DataFormatConstants.STRING_SIZE_LENGTH); + String destinationPath = message.getDestinationPath().getValue(); + LOGGER.debug("DestinationPath: {}", () -> backslashEscapeString(destinationPath)); + appendString(destinationPath, StandardCharsets.UTF_8); } private void serializeOverwriteDestination() { + Byte overwriteDestination = message.getOverwriteDestination().getValue(); LOGGER.debug( - "OverwriteDestination: {}", - Converter.byteToBoolean(message.getOverwriteDestination().getValue())); - appendByte(message.getOverwriteDestination().getValue()); + "OverwriteDestination: {}", () -> Converter.byteToBoolean(overwriteDestination)); + appendByte(overwriteDestination); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedMessageSerializer.java index bfd9dba96..19d91c97e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedMessageSerializer.java @@ -26,16 +26,12 @@ protected SftpRequestExtendedMessageSerializer(T message) { } private void serializeExtendedRequestName() { - LOGGER.debug( - "ExtendedRequestName length: {}", - message.getExtendedRequestNameLength().getValue()); - appendInt( - message.getExtendedRequestNameLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "ExtendedRequestName: {}", - () -> backslashEscapeString(message.getExtendedRequestName().getValue())); - appendString(message.getExtendedRequestName().getValue(), StandardCharsets.US_ASCII); + Integer extendedRequestNameLength = message.getExtendedRequestNameLength().getValue(); + LOGGER.debug("ExtendedRequestName length: {}", extendedRequestNameLength); + appendInt(extendedRequestNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String extendedRequestName = message.getExtendedRequestName().getValue(); + LOGGER.debug("ExtendedRequestName: {}", () -> backslashEscapeString(extendedRequestName)); + appendString(extendedRequestName, StandardCharsets.US_ASCII); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithHandleMessageSerializer.java index d8da8cb4b..b87f5ef09 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithHandleMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithHandleMessageSerializer.java @@ -24,12 +24,12 @@ protected SftpRequestExtendedWithHandleMessageSerializer(T message) { } private void serializeHandle() { - LOGGER.debug("Handle length: {}", message.getHandleLength().getValue()); - appendInt(message.getHandleLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Handle: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHandle().getValue())); - appendBytes(message.getHandle().getValue()); + Integer handleLength = message.getHandleLength().getValue(); + LOGGER.debug("Handle length: {}", handleLength); + appendInt(handleLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] handle = message.getHandle().getValue(); + LOGGER.debug("Handle: {}", () -> ArrayConverter.bytesToRawHexString(handle)); + appendBytes(handle); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithPathMessageSerializer.java index 4a381e8b4..e732b0aae 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithPathMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithPathMessageSerializer.java @@ -26,10 +26,12 @@ protected SftpRequestExtendedWithPathMessageSerializer(T message) { } private void serializePath() { - LOGGER.debug("Path length: {}", message.getPathLength().getValue()); - appendInt(message.getPathLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Path: {}", () -> backslashEscapeString(message.getPath().getValue())); - appendString(message.getPath().getValue(), StandardCharsets.UTF_8); + Integer pathLength = message.getPathLength().getValue(); + LOGGER.debug("Path length: {}", pathLength); + appendInt(pathLength, DataFormatConstants.STRING_SIZE_LENGTH); + String path = message.getPath().getValue(); + LOGGER.debug("Path: {}", () -> backslashEscapeString(path)); + appendString(path, StandardCharsets.UTF_8); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHardlinkMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHardlinkMessageSerializer.java index 18482a060..db26cb38c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHardlinkMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHardlinkMessageSerializer.java @@ -25,10 +25,12 @@ public SftpRequestHardlinkMessageSerializer(SftpRequestHardlinkMessage message) } private void serializeNewPath() { - LOGGER.debug("NewPath length: {}", message.getNewPathLength().getValue()); - appendInt(message.getNewPathLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("NewPath: {}", () -> backslashEscapeString(message.getNewPath().getValue())); - appendString(message.getNewPath().getValue(), StandardCharsets.UTF_8); + Integer newPathLength = message.getNewPathLength().getValue(); + LOGGER.debug("NewPath length: {}", newPathLength); + appendInt(newPathLength, DataFormatConstants.STRING_SIZE_LENGTH); + String newPath = message.getNewPath().getValue(); + LOGGER.debug("NewPath: {}", () -> backslashEscapeString(newPath)); + appendString(newPath, StandardCharsets.UTF_8); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHomeDirectoryMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHomeDirectoryMessageSerializer.java index 94bc6e3a2..98f10a118 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHomeDirectoryMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHomeDirectoryMessageSerializer.java @@ -25,10 +25,12 @@ public SftpRequestHomeDirectoryMessageSerializer(SftpRequestHomeDirectoryMessage } private void serializeUsername() { - LOGGER.debug("Username length: {}", message.getUsernameLength().getValue()); - appendInt(message.getUsernameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Username: {}", () -> backslashEscapeString(message.getUsername().getValue())); - appendString(message.getUsername().getValue(), StandardCharsets.UTF_8); + Integer usernameLength = message.getUsernameLength().getValue(); + LOGGER.debug("Username length: {}", usernameLength); + appendInt(usernameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String username = message.getUsername().getValue(); + LOGGER.debug("Username: {}", () -> backslashEscapeString(username)); + appendString(username, StandardCharsets.UTF_8); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestPosixRenameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestPosixRenameMessageSerializer.java index f60f0a239..113ace5e4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestPosixRenameMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestPosixRenameMessageSerializer.java @@ -25,10 +25,12 @@ public SftpRequestPosixRenameMessageSerializer(SftpRequestPosixRenameMessage mes } private void serializeNewPath() { - LOGGER.debug("NewPath length: {}", message.getNewPathLength().getValue()); - appendInt(message.getNewPathLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("NewPath: {}", () -> backslashEscapeString(message.getNewPath().getValue())); - appendString(message.getNewPath().getValue(), StandardCharsets.UTF_8); + Integer newPathLength = message.getNewPathLength().getValue(); + LOGGER.debug("NewPath length: {}", newPathLength); + appendInt(newPathLength, DataFormatConstants.STRING_SIZE_LENGTH); + String newPath = message.getNewPath().getValue(); + LOGGER.debug("NewPath: {}", () -> backslashEscapeString(newPath)); + appendString(newPath, StandardCharsets.UTF_8); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUnknownMessageSerializer.java index 779b56111..b3c74f0e3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUnknownMessageSerializer.java @@ -23,11 +23,10 @@ public SftpRequestUnknownMessageSerializer(SftpRequestUnknownMessage message) { @Override protected void serializeRequestExtendedSpecificContents() { + byte[] requestSpecificData = message.getRequestSpecificData().getValue(); LOGGER.debug( "RequestSpecificData: {}", - () -> - ArrayConverter.bytesToRawHexString( - message.getRequestSpecificData().getValue())); - appendBytes(message.getRequestSpecificData().getValue()); + () -> ArrayConverter.bytesToRawHexString(requestSpecificData)); + appendBytes(requestSpecificData); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java index d08390c15..f39652ecc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java @@ -22,8 +22,9 @@ public SftpRequestUsersGroupsByIdMessageSerializer(SftpRequestUsersGroupsByIdMes } private void serializeUserIdsLength() { - LOGGER.debug("UserIdsLength: {}", message.getUserIdsLength().getValue()); - appendInt(message.getUserIdsLength().getValue(), DataFormatConstants.UINT32_SIZE); + Integer userIdsLength = message.getUserIdsLength().getValue(); + LOGGER.debug("UserIdsLength: {}", userIdsLength); + appendInt(userIdsLength, DataFormatConstants.UINT32_SIZE); for (int i = 0; i < message.getUserIds().size(); i++) { LOGGER.debug("UserId[{}]: {}", i, message.getUserIdsLength().getValue()); @@ -32,8 +33,9 @@ private void serializeUserIdsLength() { } private void serializeGroupIdsLength() { - LOGGER.debug("GroupIdsLength: {}", message.getGroupIdsLength().getValue()); - appendInt(message.getGroupIdsLength().getValue(), DataFormatConstants.UINT32_SIZE); + Integer groupIdsLength = message.getGroupIdsLength().getValue(); + LOGGER.debug("GroupIdsLength: {}", groupIdsLength); + appendInt(groupIdsLength, DataFormatConstants.UINT32_SIZE); for (int i = 0; i < message.getGroupIds().size(); i++) { LOGGER.debug("GroupId[{}]: {}", i, message.getGroupIdsLength().getValue()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestVendorIdMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestVendorIdMessageSerializer.java index f7f625eea..a9f129930 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestVendorIdMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestVendorIdMessageSerializer.java @@ -25,37 +25,36 @@ public SftpRequestVendorIdMessageSerializer(SftpRequestVendorIdMessage message) } private void serializeVendorName() { - LOGGER.debug("VendorName length: {}", message.getVendorNameLength().getValue()); - appendInt(message.getVendorNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "VendorName: {}", () -> backslashEscapeString(message.getVendorName().getValue())); - appendString(message.getVendorName().getValue(), StandardCharsets.UTF_8); + Integer vendorNameLength = message.getVendorNameLength().getValue(); + LOGGER.debug("VendorName length: {}", vendorNameLength); + appendInt(vendorNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String vendorName = message.getVendorName().getValue(); + LOGGER.debug("VendorName: {}", () -> backslashEscapeString(vendorName)); + appendString(vendorName, StandardCharsets.UTF_8); } private void serializeProductName() { - LOGGER.debug("ProductName length: {}", message.getProductNameLength().getValue()); - appendInt( - message.getProductNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "ProductName: {}", - () -> backslashEscapeString(message.getProductName().getValue())); - appendString(message.getProductName().getValue(), StandardCharsets.UTF_8); + Integer productNameLength = message.getProductNameLength().getValue(); + LOGGER.debug("ProductName length: {}", productNameLength); + appendInt(productNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String productName = message.getProductName().getValue(); + LOGGER.debug("ProductName: {}", () -> backslashEscapeString(productName)); + appendString(productName, StandardCharsets.UTF_8); } private void serializeProductVersion() { - LOGGER.debug("ProductVersion length: {}", message.getProductVersionLength().getValue()); - appendInt( - message.getProductVersionLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "ProductVersion: {}", - () -> backslashEscapeString(message.getProductVersion().getValue())); - appendString(message.getProductVersion().getValue(), StandardCharsets.UTF_8); + Integer productVersionLength = message.getProductVersionLength().getValue(); + LOGGER.debug("ProductVersion length: {}", productVersionLength); + appendInt(productVersionLength, DataFormatConstants.STRING_SIZE_LENGTH); + String productVersion = message.getProductVersion().getValue(); + LOGGER.debug("ProductVersion: {}", () -> backslashEscapeString(productVersion)); + appendString(productVersion, StandardCharsets.UTF_8); } private void serializeProductBuildNumber() { - LOGGER.debug("ProductBuildNumber: {}", message.getProductBuildNumber().getValue()); - appendLong(message.getProductBuildNumber().getValue(), DataFormatConstants.UINT64_SIZE); + Long productBuildNumber = message.getProductBuildNumber().getValue(); + LOGGER.debug("ProductBuildNumber: {}", productBuildNumber); + appendLong(productBuildNumber, DataFormatConstants.UINT64_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java index 468c7c5ad..8c6545fde 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java @@ -27,21 +27,18 @@ public SftpResponseCheckFileMessageSerializer(SftpResponseCheckFileMessage messa } private void serializeUsedHashAlgorithm() { - LOGGER.debug( - "UsedHashAlgorithm length: {}", message.getUsedHashAlgorithmLength().getValue()); - appendInt( - message.getUsedHashAlgorithmLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "UsedHashAlgorithm: {}", - () -> backslashEscapeString(message.getUsedHashAlgorithm().getValue())); - appendString(message.getUsedHashAlgorithm().getValue(), StandardCharsets.US_ASCII); + Integer usedHashAlgorithmLength = message.getUsedHashAlgorithmLength().getValue(); + LOGGER.debug("UsedHashAlgorithm length: {}", usedHashAlgorithmLength); + appendInt(usedHashAlgorithmLength, DataFormatConstants.STRING_SIZE_LENGTH); + String usedHashAlgorithm = message.getUsedHashAlgorithm().getValue(); + LOGGER.debug("UsedHashAlgorithm: {}", () -> backslashEscapeString(usedHashAlgorithm)); + appendString(usedHashAlgorithm, StandardCharsets.US_ASCII); } private void serializeHash() { - LOGGER.debug( - "Hash: {}", () -> ArrayConverter.bytesToRawHexString(message.getHash().getValue())); - appendBytes(message.getHash().getValue()); + byte[] hash = message.getHash().getValue(); + LOGGER.debug("Hash: {}", () -> ArrayConverter.bytesToRawHexString(hash)); + appendBytes(hash); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseLimitsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseLimitsMessageSerializer.java index d4ddf4b0b..4db9387a1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseLimitsMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseLimitsMessageSerializer.java @@ -24,16 +24,20 @@ public SftpResponseLimitsMessageSerializer(SftpResponseLimitsMessage message) { @Override protected void serializeResponseSpecificContents() { - LOGGER.debug("MaximumPacketLength: {}", message.getMaximumPacketLength().getValue()); - appendLong(message.getMaximumPacketLength().getValue(), DataFormatConstants.UINT64_SIZE); + Long maximumPacketLength = message.getMaximumPacketLength().getValue(); + LOGGER.debug("MaximumPacketLength: {}", maximumPacketLength); + appendLong(maximumPacketLength, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("MaximumReadLength: {}", message.getMaximumReadLength().getValue()); - appendLong(message.getMaximumReadLength().getValue(), DataFormatConstants.UINT64_SIZE); + Long maximumReadLength = message.getMaximumReadLength().getValue(); + LOGGER.debug("MaximumReadLength: {}", maximumReadLength); + appendLong(maximumReadLength, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("MaximumWriteLength: {}", message.getMaximumWriteLength().getValue()); - appendLong(message.getMaximumWriteLength().getValue(), DataFormatConstants.UINT64_SIZE); + Long maximumWriteLength = message.getMaximumWriteLength().getValue(); + LOGGER.debug("MaximumWriteLength: {}", maximumWriteLength); + appendLong(maximumWriteLength, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("MaximumOpenHandles: {}", message.getMaximumOpenHandles().getValue()); - appendLong(message.getMaximumOpenHandles().getValue(), DataFormatConstants.UINT64_SIZE); + Long maximumOpenHandles = message.getMaximumOpenHandles().getValue(); + LOGGER.debug("MaximumOpenHandles: {}", maximumOpenHandles); + appendLong(maximumOpenHandles, DataFormatConstants.UINT64_SIZE); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java index d2034fba0..d717c1a80 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java @@ -24,23 +24,24 @@ public SftpResponseSpaceAvailableMessageSerializer(SftpResponseSpaceAvailableMes @Override protected void serializeResponseSpecificContents() { - LOGGER.debug("BytesOnDevice: {}", message.getBytesOnDevice().getValue()); - appendLong(message.getBytesOnDevice().getValue(), DataFormatConstants.UINT64_SIZE); + Long bytesOnDevice = message.getBytesOnDevice().getValue(); + LOGGER.debug("BytesOnDevice: {}", bytesOnDevice); + appendLong(bytesOnDevice, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("UnusedBytesOnDevice: {}", message.getUnusedBytesOnDevice().getValue()); - appendLong(message.getUnusedBytesOnDevice().getValue(), DataFormatConstants.UINT64_SIZE); + Long unusedBytesOnDevice = message.getUnusedBytesOnDevice().getValue(); + LOGGER.debug("UnusedBytesOnDevice: {}", unusedBytesOnDevice); + appendLong(unusedBytesOnDevice, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("BytesAvailableToUser: {}", message.getBytesAvailableToUser().getValue()); - appendLong(message.getBytesAvailableToUser().getValue(), DataFormatConstants.UINT64_SIZE); + Long bytesAvailableToUser = message.getBytesAvailableToUser().getValue(); + LOGGER.debug("BytesAvailableToUser: {}", bytesAvailableToUser); + appendLong(bytesAvailableToUser, DataFormatConstants.UINT64_SIZE); - LOGGER.debug( - "UnusedBytesAvailableToUser: {}", - message.getUnusedBytesAvailableToUser().getValue()); - appendLong( - message.getUnusedBytesAvailableToUser().getValue(), - DataFormatConstants.UINT64_SIZE); + Long unusedBytesAvailableToUser = message.getUnusedBytesAvailableToUser().getValue(); + LOGGER.debug("UnusedBytesAvailableToUser: {}", unusedBytesAvailableToUser); + appendLong(unusedBytesAvailableToUser, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("BytesPerAllocationUnit: {}", message.getBytesPerAllocationUnit().getValue()); - appendInt(message.getBytesPerAllocationUnit().getValue(), DataFormatConstants.UINT32_SIZE); + Integer bytesPerAllocationUnit = message.getBytesPerAllocationUnit().getValue(); + LOGGER.debug("BytesPerAllocationUnit: {}", bytesPerAllocationUnit); + appendInt(bytesPerAllocationUnit, DataFormatConstants.UINT32_SIZE); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java index c873f2b06..dec2fa87f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java @@ -24,37 +24,48 @@ public SftpResponseStatVfsMessageSerializer(SftpResponseStatVfsMessage message) @Override protected void serializeResponseSpecificContents() { - LOGGER.debug("BlockSize: {}", message.getBlockSize().getValue()); - appendLong(message.getBlockSize().getValue(), DataFormatConstants.UINT64_SIZE); + Long blockSize = message.getBlockSize().getValue(); + LOGGER.debug("BlockSize: {}", blockSize); + appendLong(blockSize, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("FundamentalBlockSize: {}", message.getFundamentalBlockSize().getValue()); - appendLong(message.getFundamentalBlockSize().getValue(), DataFormatConstants.UINT64_SIZE); + Long fundamentalBlockSize = message.getFundamentalBlockSize().getValue(); + LOGGER.debug("FundamentalBlockSize: {}", fundamentalBlockSize); + appendLong(fundamentalBlockSize, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("CountBlocks: {}", message.getCountBlocks().getValue()); - appendLong(message.getCountBlocks().getValue(), DataFormatConstants.UINT64_SIZE); + Long countBlocks = message.getCountBlocks().getValue(); + LOGGER.debug("CountBlocks: {}", countBlocks); + appendLong(countBlocks, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("FreeBlocks: {}", message.getFreeBlocks().getValue()); - appendLong(message.getFreeBlocks().getValue(), DataFormatConstants.UINT64_SIZE); + Long freeBlocks = message.getFreeBlocks().getValue(); + LOGGER.debug("FreeBlocks: {}", freeBlocks); + appendLong(freeBlocks, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("FreeBlocksNonRoot: {}", message.getFreeBlocksNonRoot().getValue()); - appendLong(message.getFreeBlocksNonRoot().getValue(), DataFormatConstants.UINT64_SIZE); + Long freeBlocksNonRoot = message.getFreeBlocksNonRoot().getValue(); + LOGGER.debug("FreeBlocksNonRoot: {}", freeBlocksNonRoot); + appendLong(freeBlocksNonRoot, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("FileInodes: {}", message.getFileInodes().getValue()); - appendLong(message.getFileInodes().getValue(), DataFormatConstants.UINT64_SIZE); + Long fileInodes = message.getFileInodes().getValue(); + LOGGER.debug("FileInodes: {}", fileInodes); + appendLong(fileInodes, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("FreeInodes: {}", message.getFreeInodes().getValue()); - appendLong(message.getFreeInodes().getValue(), DataFormatConstants.UINT64_SIZE); + Long freeInodes = message.getFreeInodes().getValue(); + LOGGER.debug("FreeInodes: {}", freeInodes); + appendLong(freeInodes, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("FreeInodesNonRoot: {}", message.getFreeInodesNonRoot().getValue()); - appendLong(message.getFreeInodesNonRoot().getValue(), DataFormatConstants.UINT64_SIZE); + Long freeInodesNonRoot = message.getFreeInodesNonRoot().getValue(); + LOGGER.debug("FreeInodesNonRoot: {}", freeInodesNonRoot); + appendLong(freeInodesNonRoot, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("SystemId: {}", message.getSystemId().getValue()); - appendLong(message.getSystemId().getValue(), DataFormatConstants.UINT64_SIZE); + Long systemId = message.getSystemId().getValue(); + LOGGER.debug("SystemId: {}", systemId); + appendLong(systemId, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("Flags: {}", message.getFlags().getValue()); - appendLong(message.getFlags().getValue(), DataFormatConstants.UINT64_SIZE); + Long flags = message.getFlags().getValue(); + LOGGER.debug("Flags: {}", flags); + appendLong(flags, DataFormatConstants.UINT64_SIZE); - LOGGER.debug("MaximumFilenameLength: {}", message.getMaximumFilenameLength().getValue()); - appendLong(message.getMaximumFilenameLength().getValue(), DataFormatConstants.UINT64_SIZE); + Long maximumFilenameLength = message.getMaximumFilenameLength().getValue(); + LOGGER.debug("MaximumFilenameLength: {}", maximumFilenameLength); + appendLong(maximumFilenameLength, DataFormatConstants.UINT64_SIZE); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUnknownMessageSerializer.java index 8039673c6..b75a73877 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUnknownMessageSerializer.java @@ -24,11 +24,10 @@ public SftpResponseUnknownMessageSerializer(SftpResponseUnknownMessage message) @Override protected void serializeResponseSpecificContents() { + byte[] responseSpecificData = message.getResponseSpecificData().getValue(); LOGGER.debug( "ResponseSpecificData: {}", - () -> - ArrayConverter.bytesToRawHexString( - message.getResponseSpecificData().getValue())); - appendBytes(message.getResponseSpecificData().getValue()); + () -> ArrayConverter.bytesToRawHexString(responseSpecificData)); + appendBytes(responseSpecificData); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java index 13a25a0b7..0459c2da8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java @@ -28,8 +28,9 @@ public SftpResponseUsersGroupsByIdMessageSerializer( } private void serializeUserNames() { - LOGGER.debug("UserNames length: {}", message.getUserNamesLength().getValue()); - appendInt(message.getUserNamesLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + Integer userNamesLength = message.getUserNamesLength().getValue(); + LOGGER.debug("UserNames length: {}", userNamesLength); + appendInt(userNamesLength, DataFormatConstants.STRING_SIZE_LENGTH); for (ModifiableString userName : message.getUserNames()) { LOGGER.debug("UserName length: {}", userName.getValue().length()); appendInt(userName.getValue().length(), DataFormatConstants.STRING_SIZE_LENGTH); @@ -39,8 +40,9 @@ private void serializeUserNames() { } private void serializeGroupNames() { - LOGGER.debug("GroupNames length: {}", message.getGroupNamesLength().getValue()); - appendInt(message.getGroupNamesLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + Integer groupNamesLength = message.getGroupNamesLength().getValue(); + LOGGER.debug("GroupNames length: {}", groupNamesLength); + appendInt(groupNamesLength, DataFormatConstants.STRING_SIZE_LENGTH); for (ModifiableString userName : message.getGroupNames()) { LOGGER.debug("GroupName length: {}", userName.getValue().length()); appendInt(userName.getValue().length(), DataFormatConstants.STRING_SIZE_LENGTH); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java index 81888da4e..fd251f92b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java @@ -35,11 +35,12 @@ protected final void serializeBytes() { } private void serializeExtensionName() { - LOGGER.debug("Extension name length: {}", extension.getNameLength().getValue()); - appendInt(extension.getNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Extension name: {}", () -> backslashEscapeString(extension.getName().getValue())); - appendString(extension.getName().getValue(), StandardCharsets.US_ASCII); + Integer nameLength = extension.getNameLength().getValue(); + LOGGER.debug("Extension name length: {}", nameLength); + appendInt(nameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String name = extension.getName().getValue(); + LOGGER.debug("Extension name: {}", () -> backslashEscapeString(name)); + appendString(name, StandardCharsets.US_ASCII); } protected abstract void serializeExtensionValue(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionUnknownSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionUnknownSerializer.java index ad2a5411b..229b6383d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionUnknownSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionUnknownSerializer.java @@ -24,11 +24,11 @@ public SftpExtensionUnknownSerializer(SftpExtensionUnknown extension) { @Override protected void serializeExtensionValue() { - LOGGER.debug("Extension value length: {}", extension.getValueLength().getValue()); - appendInt(extension.getValueLength().getValue(), DataFormatConstants.UINT32_SIZE); - LOGGER.debug( - "Extension value: {}", - () -> ArrayConverter.bytesToRawHexString(extension.getValue().getValue())); - appendBytes(extension.getValue().getValue()); + Integer valueLength = extension.getValueLength().getValue(); + LOGGER.debug("Extension value length: {}", valueLength); + appendInt(valueLength, DataFormatConstants.UINT32_SIZE); + byte[] value = extension.getValue().getValue(); + LOGGER.debug("Extension value: {}", () -> ArrayConverter.bytesToRawHexString(value)); + appendBytes(value); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java index 9e8381680..031970745 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java @@ -25,45 +25,42 @@ public SftpExtensionVendorIdSerializer(SftpExtensionVendorId extension) { } private void serializeVendorStructureLength() { - LOGGER.debug("VendorStructureLength: {}", extension.getVendorStructureLength().getValue()); - appendInt(extension.getVendorStructureLength().getValue(), DataFormatConstants.UINT32_SIZE); + Integer vendorStructureLength = extension.getVendorStructureLength().getValue(); + LOGGER.debug("VendorStructureLength: {}", vendorStructureLength); + appendInt(vendorStructureLength, DataFormatConstants.UINT32_SIZE); } private void serializeVendorName() { - LOGGER.debug("VendorName length: {}", extension.getVendorNameLength().getValue()); - appendInt( - extension.getVendorNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "VendorName: {}", - () -> backslashEscapeString(extension.getVendorName().getValue())); - appendString(extension.getVendorName().getValue(), StandardCharsets.UTF_8); + Integer vendorNameLength = extension.getVendorNameLength().getValue(); + LOGGER.debug("VendorName length: {}", vendorNameLength); + appendInt(vendorNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String vendorName = extension.getVendorName().getValue(); + LOGGER.debug("VendorName: {}", () -> backslashEscapeString(vendorName)); + appendString(vendorName, StandardCharsets.UTF_8); } private void serializeProductName() { - LOGGER.debug("ProductName length: {}", extension.getProductNameLength().getValue()); - appendInt( - extension.getProductNameLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "ProductName: {}", - () -> backslashEscapeString(extension.getProductName().getValue())); - appendString(extension.getProductName().getValue(), StandardCharsets.UTF_8); + Integer productNameLength = extension.getProductNameLength().getValue(); + LOGGER.debug("ProductName length: {}", productNameLength); + appendInt(productNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String productName = extension.getProductName().getValue(); + LOGGER.debug("ProductName: {}", () -> backslashEscapeString(productName)); + appendString(productName, StandardCharsets.UTF_8); } private void serializeProductVersion() { - LOGGER.debug("ProductVersion length: {}", extension.getProductVersionLength().getValue()); - appendInt( - extension.getProductVersionLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "ProductVersion: {}", - () -> backslashEscapeString(extension.getProductVersion().getValue())); - appendString(extension.getProductVersion().getValue(), StandardCharsets.UTF_8); + Integer productVersionLength = extension.getProductVersionLength().getValue(); + LOGGER.debug("ProductVersion length: {}", productVersionLength); + appendInt(productVersionLength, DataFormatConstants.STRING_SIZE_LENGTH); + String productVersion = extension.getProductVersion().getValue(); + LOGGER.debug("ProductVersion: {}", () -> backslashEscapeString(productVersion)); + appendString(productVersion, StandardCharsets.UTF_8); } private void serializeProductBuildNumber() { - LOGGER.debug("ProductBuildNumber: {}", extension.getProductBuildNumber().getValue()); - appendLong(extension.getProductBuildNumber().getValue(), DataFormatConstants.UINT64_SIZE); + Long productBuildNumber = extension.getProductBuildNumber().getValue(); + LOGGER.debug("ProductBuildNumber: {}", productBuildNumber); + appendLong(productBuildNumber, DataFormatConstants.UINT64_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionWithVersionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionWithVersionSerializer.java index 2520d9a14..1d8482abc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionWithVersionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionWithVersionSerializer.java @@ -25,10 +25,12 @@ public SftpExtensionWithVersionSerializer(T extension) { } private void serializeVersion() { - LOGGER.debug("Version length: {}", extension.getVersionLength().getValue()); - appendInt(extension.getVersionLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Version: {}", () -> backslashEscapeString(extension.getVersion().getValue())); - appendString(extension.getVersion().getValue(), StandardCharsets.US_ASCII); + Integer versionLength = extension.getVersionLength().getValue(); + LOGGER.debug("Version length: {}", versionLength); + appendInt(versionLength, DataFormatConstants.STRING_SIZE_LENGTH); + String version = extension.getVersion().getValue(); + LOGGER.debug("Version: {}", () -> backslashEscapeString(version)); + appendString(version, StandardCharsets.US_ASCII); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMessageSerializer.java index 7ac55de6f..8f9c7222f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMessageSerializer.java @@ -23,8 +23,9 @@ protected SftpRequestMessageSerializer(T message) { } private void serializeRequestId() { - LOGGER.debug("RequestId: {}", message.getRequestId().getValue()); - appendInt(message.getRequestId().getValue(), DataFormatConstants.UINT32_SIZE); + Integer requestId = message.getRequestId().getValue(); + LOGGER.debug("RequestId: {}", requestId); + appendInt(requestId, DataFormatConstants.UINT32_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenMessageSerializer.java index bedc5cec1..3971e0fd4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenMessageSerializer.java @@ -22,8 +22,9 @@ public SftpRequestOpenMessageSerializer(SftpRequestOpenMessage message) { } private void serializePFlags() { - LOGGER.debug("PFlags: {}", message.getPFlags().getValue()); - appendInt(message.getPFlags().getValue(), DataFormatConstants.UINT32_SIZE); + Integer pFlags = message.getPFlags().getValue(); + LOGGER.debug("PFlags: {}", pFlags); + appendInt(pFlags, DataFormatConstants.UINT32_SIZE); } private void serializeAttributes() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadMessageSerializer.java index f6a2c8742..b8b19f248 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadMessageSerializer.java @@ -22,13 +22,15 @@ public SftpRequestReadMessageSerializer(SftpRequestReadMessage message) { } private void serializeOffset() { - LOGGER.debug("Offset: {}", message.getOffset().getValue()); - appendLong(message.getOffset().getValue(), DataFormatConstants.UINT64_SIZE); + Long offset = message.getOffset().getValue(); + LOGGER.debug("Offset: {}", offset); + appendLong(offset, DataFormatConstants.UINT64_SIZE); } private void serializeLength() { - LOGGER.debug("Length: {}", message.getLength().getValue()); - appendInt(message.getLength().getValue(), DataFormatConstants.UINT32_SIZE); + Integer length = message.getLength().getValue(); + LOGGER.debug("Length: {}", length); + appendInt(length, DataFormatConstants.UINT32_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRenameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRenameMessageSerializer.java index 0b2017012..30da5c6a4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRenameMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRenameMessageSerializer.java @@ -25,10 +25,12 @@ public SftpRequestRenameMessageSerializer(SftpRequestRenameMessage message) { } private void serializeNewPath() { - LOGGER.debug("NewPath length: {}", message.getNewPathLength().getValue()); - appendInt(message.getNewPathLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("NewPath: {}", () -> backslashEscapeString(message.getNewPath().getValue())); - appendString(message.getNewPath().getValue(), StandardCharsets.UTF_8); + Integer newPathLength = message.getNewPathLength().getValue(); + LOGGER.debug("NewPath length: {}", newPathLength); + appendInt(newPathLength, DataFormatConstants.STRING_SIZE_LENGTH); + String newPath = message.getNewPath().getValue(); + LOGGER.debug("NewPath: {}", () -> backslashEscapeString(newPath)); + appendString(newPath, StandardCharsets.UTF_8); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSymbolicLinkMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSymbolicLinkMessageSerializer.java index 2fcdbc092..bdc0a3574 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSymbolicLinkMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSymbolicLinkMessageSerializer.java @@ -25,11 +25,12 @@ public SftpRequestSymbolicLinkMessageSerializer(SftpRequestSymbolicLinkMessage m } private void serializeTargetPath() { - LOGGER.debug("TargetPath length: {}", message.getTargetPathLength().getValue()); - appendInt(message.getTargetPathLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "TargetPath: {}", () -> backslashEscapeString(message.getTargetPath().getValue())); - appendString(message.getTargetPath().getValue(), StandardCharsets.UTF_8); + Integer targetPathLength = message.getTargetPathLength().getValue(); + LOGGER.debug("TargetPath length: {}", targetPathLength); + appendInt(targetPathLength, DataFormatConstants.STRING_SIZE_LENGTH); + String targetPath = message.getTargetPath().getValue(); + LOGGER.debug("TargetPath: {}", () -> backslashEscapeString(targetPath)); + appendString(targetPath, StandardCharsets.UTF_8); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithHandleMessageSerializer.java index da6f7af8a..d72f96056 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithHandleMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithHandleMessageSerializer.java @@ -24,12 +24,12 @@ protected SftpRequestWithHandleMessageSerializer(T message) { } private void serializeHandle() { - LOGGER.debug("Handle length: {}", message.getHandleLength().getValue()); - appendInt(message.getHandleLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Handle: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHandle().getValue())); - appendBytes(message.getHandle().getValue()); + Integer handleLength = message.getHandleLength().getValue(); + LOGGER.debug("Handle length: {}", handleLength); + appendInt(handleLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] handle = message.getHandle().getValue(); + LOGGER.debug("Handle: {}", () -> ArrayConverter.bytesToRawHexString(handle)); + appendBytes(handle); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithPathMessageSerializer.java index 822770e23..c38e2bf2d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithPathMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithPathMessageSerializer.java @@ -25,10 +25,12 @@ protected SftpRequestWithPathMessageSerializer(T message) { } private void serializePath() { - LOGGER.debug("Path length: {}", message.getPathLength().getValue()); - appendInt(message.getPathLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Path: {}", () -> backslashEscapeString(message.getPath().getValue())); - appendString(message.getPath().getValue(), StandardCharsets.UTF_8); + Integer pathLength = message.getPathLength().getValue(); + LOGGER.debug("Path length: {}", pathLength); + appendInt(pathLength, DataFormatConstants.STRING_SIZE_LENGTH); + String path = message.getPath().getValue(); + LOGGER.debug("Path: {}", () -> backslashEscapeString(path)); + appendString(path, StandardCharsets.UTF_8); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWriteMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWriteMessageSerializer.java index 06447d817..9c6c63901 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWriteMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWriteMessageSerializer.java @@ -23,16 +23,18 @@ public SftpRequestWriteMessageSerializer(SftpRequestWriteMessage message) { } private void serializeOffset() { - LOGGER.debug("Offset: {}", message.getOffset().getValue()); - appendLong(message.getOffset().getValue(), DataFormatConstants.UINT64_SIZE); + Long offset = message.getOffset().getValue(); + LOGGER.debug("Offset: {}", offset); + appendLong(offset, DataFormatConstants.UINT64_SIZE); } private void serializeData() { - LOGGER.debug("Data length: {}", message.getDataLength().getValue()); - appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); - appendBytes(message.getData().getValue()); + Integer dataLength = message.getDataLength().getValue(); + LOGGER.debug("Data length: {}", dataLength); + appendInt(dataLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] data = message.getData().getValue(); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); + appendBytes(data); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseDataMessageSerializer.java index cd05704ab..f7d2ef128 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseDataMessageSerializer.java @@ -23,11 +23,12 @@ public SftpResponseDataMessageSerializer(SftpResponseDataMessage message) { } private void serializeData() { - LOGGER.debug("Data length: {}", message.getDataLength().getValue()); - appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); - appendBytes(message.getData().getValue()); + Integer dataLength = message.getDataLength().getValue(); + LOGGER.debug("Data length: {}", dataLength); + appendInt(dataLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] data = message.getData().getValue(); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); + appendBytes(data); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseHandleMessageSerializer.java index 861d1898d..ec135d67e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseHandleMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseHandleMessageSerializer.java @@ -23,12 +23,12 @@ public SftpResponseHandleMessageSerializer(SftpResponseHandleMessage message) { } private void serializeHandle() { - LOGGER.debug("Handle length: {}", message.getHandleLength().getValue()); - appendInt(message.getHandleLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Handle: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHandle().getValue())); - appendBytes(message.getHandle().getValue()); + Integer handleLength = message.getHandleLength().getValue(); + LOGGER.debug("Handle length: {}", handleLength); + appendInt(handleLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] handle = message.getHandle().getValue(); + LOGGER.debug("Handle: {}", () -> ArrayConverter.bytesToRawHexString(handle)); + appendBytes(handle); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseMessageSerializer.java index c29d6321b..f9696c77e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseMessageSerializer.java @@ -23,8 +23,9 @@ protected SftpResponseMessageSerializer(T message) { } private void serializeRequestId() { - LOGGER.debug("RequestId: {}", message.getRequestId().getValue()); - appendInt(message.getRequestId().getValue(), DataFormatConstants.UINT32_SIZE); + Integer requestId = message.getRequestId().getValue(); + LOGGER.debug("RequestId: {}", requestId); + appendInt(requestId, DataFormatConstants.UINT32_SIZE); } protected void serializeMessageSpecificContents() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameEntrySerializer.java index d45979a67..7db101c3a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameEntrySerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameEntrySerializer.java @@ -28,19 +28,21 @@ public SftpResponseNameEntrySerializer(SftpResponseNameEntry nameEntry) { } private void serializeFilename() { - LOGGER.debug("Filename length: {}", nameEntry.getFilenameLength().getValue()); - appendInt(nameEntry.getFilenameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Filename: {}", () -> backslashEscapeString(nameEntry.getFilename().getValue())); - appendString(nameEntry.getFilename().getValue(), StandardCharsets.UTF_8); + Integer filenameLength = nameEntry.getFilenameLength().getValue(); + LOGGER.debug("Filename length: {}", filenameLength); + appendInt(filenameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String filename = nameEntry.getFilename().getValue(); + LOGGER.debug("Filename: {}", () -> backslashEscapeString(filename)); + appendString(filename, StandardCharsets.UTF_8); } private void serializeLongName() { - LOGGER.debug("LongName length: {}", nameEntry.getLongNameLength().getValue()); - appendInt(nameEntry.getLongNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "LongName: {}", () -> backslashEscapeString(nameEntry.getLongName().getValue())); - appendString(nameEntry.getLongName().getValue(), StandardCharsets.UTF_8); + Integer longNameLength = nameEntry.getLongNameLength().getValue(); + LOGGER.debug("LongName length: {}", longNameLength); + appendInt(longNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String longName = nameEntry.getLongName().getValue(); + LOGGER.debug("LongName: {}", () -> backslashEscapeString(longName)); + appendString(longName, StandardCharsets.UTF_8); } private void serializeAttributes() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameMessageSerializer.java index ecc34c11b..2bf57059d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameMessageSerializer.java @@ -22,8 +22,9 @@ public SftpResponseNameMessageSerializer(SftpResponseNameMessage message) { } private void serializeNameEntries() { - LOGGER.debug("CountNameEntries: {}", message.getCountNameEntries().getValue()); - appendInt(message.getCountNameEntries().getValue(), DataFormatConstants.UINT32_SIZE); + Integer countNameEntries = message.getCountNameEntries().getValue(); + LOGGER.debug("CountNameEntries: {}", countNameEntries); + appendInt(countNameEntries, DataFormatConstants.UINT32_SIZE); message.getNameEntries() .forEach( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseStatusMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseStatusMessageSerializer.java index cb2d85dfe..b14113c2d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseStatusMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseStatusMessageSerializer.java @@ -25,28 +25,27 @@ public SftpResponseStatusMessageSerializer(SftpResponseStatusMessage message) { } private void serializeStatusCode() { - LOGGER.debug("StatusCode: {}", message.getStatusCode().getValue()); - appendInt(message.getStatusCode().getValue(), DataFormatConstants.UINT32_SIZE); + Integer statusCode = message.getStatusCode().getValue(); + LOGGER.debug("StatusCode: {}", statusCode); + appendInt(statusCode, DataFormatConstants.UINT32_SIZE); } private void serializeErrorMessage() { - LOGGER.debug("ErrorMessage length: {}", message.getErrorMessageLength().getValue()); - appendInt( - message.getErrorMessageLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "ErrorMessage: {}", - () -> backslashEscapeString(message.getErrorMessage().getValue())); - appendString(message.getErrorMessage().getValue(), StandardCharsets.UTF_8); + Integer errorMessageLength = message.getErrorMessageLength().getValue(); + LOGGER.debug("ErrorMessage length: {}", errorMessageLength); + appendInt(errorMessageLength, DataFormatConstants.STRING_SIZE_LENGTH); + String errorMessage = message.getErrorMessage().getValue(); + LOGGER.debug("ErrorMessage: {}", () -> backslashEscapeString(errorMessage)); + appendString(errorMessage, StandardCharsets.UTF_8); } private void serializeLanguageTag() { - LOGGER.debug("LanguageTag length: {}", message.getLanguageTagLength().getValue()); - appendInt( - message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "LanguageTag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); - appendString(message.getLanguageTag().getValue(), StandardCharsets.US_ASCII); + Integer languageTagLength = message.getLanguageTagLength().getValue(); + LOGGER.debug("LanguageTag length: {}", languageTagLength); + appendInt(languageTagLength, DataFormatConstants.STRING_SIZE_LENGTH); + String languageTag = message.getLanguageTag().getValue(); + LOGGER.debug("LanguageTag: {}", () -> backslashEscapeString(languageTag)); + appendString(languageTag, StandardCharsets.US_ASCII); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java index 8236670a5..97f6753c8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java @@ -23,8 +23,9 @@ public StringDataMessageSerializer(StringDataMessage message) { } private void serializeData() { - LOGGER.debug("Data: {}", () -> backslashEscapeString(message.getData().getValue())); - appendString(message.getData().getValue(), StandardCharsets.UTF_8); + String data = message.getData().getValue(); + LOGGER.debug("Data: {}", () -> backslashEscapeString(data)); + appendString(data, StandardCharsets.UTF_8); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BinaryPacketSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BinaryPacketSerializer.java index a59e7bc2d..64dc2a388 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BinaryPacketSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BinaryPacketSerializer.java @@ -33,28 +33,26 @@ protected void serializeBytes() { Set encryptedFields = binaryPacket.getComputations().getEncryptedPacketFields(); if (!encryptedFields.contains(BinaryPacketField.PACKET_LENGTH)) { - appendInt( - binaryPacket.getLength().getValue(), BinaryPacketConstants.LENGTH_FIELD_LENGTH); - LOGGER.debug("Packet length: {}", binaryPacket.getLength().getValue()); + Integer length = binaryPacket.getLength().getValue(); + LOGGER.debug("Packet length: {}", length); + appendInt(length, BinaryPacketConstants.LENGTH_FIELD_LENGTH); } if (!encryptedFields.contains(BinaryPacketField.PADDING_LENGTH)) { - appendByte(binaryPacket.getPaddingLength().getValue()); - LOGGER.debug("Padding length: {}", binaryPacket.getPaddingLength().getValue()); + Byte paddingLength = binaryPacket.getPaddingLength().getValue(); + LOGGER.debug("Padding length: {}", paddingLength); + appendByte(paddingLength); } - appendBytes(binaryPacket.getCiphertext().getValue()); - LOGGER.debug( - "Ciphertext: {}", - () -> ArrayConverter.bytesToHexString(binaryPacket.getCiphertext().getValue())); + byte[] ciphertext = binaryPacket.getCiphertext().getValue(); + LOGGER.debug("Ciphertext: {}", () -> ArrayConverter.bytesToHexString(ciphertext)); + appendBytes(ciphertext); if (!encryptedFields.contains(BinaryPacketField.PADDING)) { - appendBytes(binaryPacket.getPadding().getValue()); - LOGGER.debug( - "Padding: {}", - () -> ArrayConverter.bytesToHexString(binaryPacket.getPadding().getValue())); + byte[] padding = binaryPacket.getPadding().getValue(); + LOGGER.debug("Padding: {}", () -> ArrayConverter.bytesToHexString(padding)); + appendBytes(padding); } - appendBytes(binaryPacket.getMac().getValue()); - LOGGER.debug( - "MAC / Authentication tag: {}", - () -> ArrayConverter.bytesToHexString(binaryPacket.getMac().getValue())); + byte[] mac = binaryPacket.getMac().getValue(); + LOGGER.debug("MAC / Authentication tag: {}", () -> ArrayConverter.bytesToHexString(mac)); + appendBytes(mac); binaryPacket.setCompletePacketBytes(getAlreadySerialized()); LOGGER.trace( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BlobPacketSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BlobPacketSerializer.java index 36ed9714f..71147122a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BlobPacketSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/serializer/BlobPacketSerializer.java @@ -26,10 +26,9 @@ public BlobPacketSerializer(BlobPacket packet) { @Override protected void serializeBytes() { LOGGER.debug("Serializing BlobPacket"); - appendBytes(packet.getCiphertext().getValue()); - LOGGER.debug( - "Ciphertext: {}", - () -> ArrayConverter.bytesToHexString(packet.getCiphertext().getValue())); + byte[] ciphertext = packet.getCiphertext().getValue(); + LOGGER.debug("Ciphertext: {}", () -> ArrayConverter.bytesToHexString(ciphertext)); + appendBytes(ciphertext); packet.setCompletePacketBytes(getAlreadySerialized()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthBannerMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthBannerMessageSerializer.java index dcafdeacd..f9886cca0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthBannerMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthBannerMessageSerializer.java @@ -25,20 +25,21 @@ public UserAuthBannerMessageSerializer(UserAuthBannerMessage message) { } private void serializeMessage() { - LOGGER.debug("Message length: {}", message.getMessageLength().getValue()); - appendInt(message.getMessageLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Message: {}", () -> backslashEscapeString(message.getMessage().getValue())); - appendString(message.getMessage().getValue(), StandardCharsets.UTF_8); + Integer messageLength = message.getMessageLength().getValue(); + LOGGER.debug("Message length: {}", messageLength); + appendInt(messageLength, DataFormatConstants.STRING_SIZE_LENGTH); + String messageStr = message.getMessage().getValue(); + LOGGER.debug("Message: {}", () -> backslashEscapeString(messageStr)); + appendString(messageStr, StandardCharsets.UTF_8); } private void serializeLanguageTag() { - LOGGER.debug("Language tag length: {}", message.getLanguageTagLength().getValue()); - appendInt( - message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Language tag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); - appendString(message.getLanguageTag().getValue(), StandardCharsets.US_ASCII); + Integer languageTagLength = message.getLanguageTagLength().getValue(); + LOGGER.debug("Language tag length: {}", languageTagLength); + appendInt(languageTagLength, DataFormatConstants.STRING_SIZE_LENGTH); + String languageTag = message.getLanguageTag().getValue(); + LOGGER.debug("Language tag: {}", () -> backslashEscapeString(languageTag)); + appendString(languageTag, StandardCharsets.US_ASCII); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthFailureMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthFailureMessageSerializer.java index d4c64887d..a04330e0b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthFailureMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthFailureMessageSerializer.java @@ -24,12 +24,11 @@ public UserAuthFailureMessageSerializer(UserAuthFailureMessage message) { } private void serializePossibleAuthenticationMethods() { + Integer possibleAuthenticationMethodsLength = + message.getPossibleAuthenticationMethodsLength().getValue(); LOGGER.debug( - "Possible authentication methods length: {}", - message.getPossibleAuthenticationMethodsLength().getValue()); - appendInt( - message.getPossibleAuthenticationMethodsLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + "Possible authentication methods length: {}", possibleAuthenticationMethodsLength); + appendInt(possibleAuthenticationMethodsLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Possible authentication methods: {}", message.getPossibleAuthenticationMethods().getValue()); @@ -38,10 +37,9 @@ private void serializePossibleAuthenticationMethods() { } private void serializePartialSuccess() { - LOGGER.debug( - "Partial success: {}", - Converter.byteToBoolean(message.getPartialSuccess().getValue())); - appendByte(message.getPartialSuccess().getValue()); + Byte partialSuccess = message.getPartialSuccess().getValue(); + LOGGER.debug("Partial success: {}", () -> Converter.byteToBoolean(partialSuccess)); + appendByte(partialSuccess); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthHostbasedMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthHostbasedMessageSerializer.java index 34a850a00..f841de339 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthHostbasedMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthHostbasedMessageSerializer.java @@ -12,7 +12,6 @@ import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthHostbasedMessage; -import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -26,51 +25,48 @@ public UserAuthHostbasedMessageSerializer(UserAuthHostbasedMessage message) { } private void serializePubKeyAlgorithm() { - appendInt( - message.getPubKeyAlgorithmLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Public key algorithm length: {}", message.getPubKeyAlgorithmLength().getValue()); - appendString(message.getPubKeyAlgorithm().getValue()); - LOGGER.debug("Public key algorithm: {}", message.getPubKeyAlgorithm().getValue()); + Integer pubKeyAlgorithmLength = message.getPubKeyAlgorithmLength().getValue(); + LOGGER.debug("Public key algorithm length: {}", pubKeyAlgorithmLength); + appendInt(pubKeyAlgorithmLength, DataFormatConstants.STRING_SIZE_LENGTH); + String pubKeyAlgorithm = message.getPubKeyAlgorithm().getValue(); + LOGGER.debug("Public key algorithm: {}", () -> backslashEscapeString(pubKeyAlgorithm)); + appendString(pubKeyAlgorithm); } private void serializeHostKeyBytes() { - appendInt( - message.getHostKeyBytesLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Host key length: {}", message.getHostKeyBytesLength().getValue()); - appendBytes(message.getHostKeyBytes().getValue()); - LOGGER.debug( - "Host key: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); + Integer hostKeyBytesLength = message.getHostKeyBytesLength().getValue(); + LOGGER.debug("Host key length: {}", hostKeyBytesLength); + appendInt(hostKeyBytesLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] hostKeyBytes = message.getHostKeyBytes().getValue(); + LOGGER.debug("Host key: {}", () -> ArrayConverter.bytesToRawHexString(hostKeyBytes)); + appendBytes(hostKeyBytes); } private void serializeHostName() { - appendInt(message.getHostNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Host name length: {}", message.getHostNameLength().getValue()); - appendString(message.getHostName().getValue()); - LOGGER.debug( - "Host name: {}", () -> backslashEscapeString(message.getHostName().getValue())); + Integer hostNameLength = message.getHostNameLength().getValue(); + LOGGER.debug("Host name length: {}", hostNameLength); + appendInt(hostNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String hostName = message.getHostName().getValue(); + LOGGER.debug("Host name: {}", () -> backslashEscapeString(hostName)); + appendString(hostName); } private void serializeClientUserName() { - appendInt( - message.getClientUserNameLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Client user name length: {}", message.getClientUserNameLength().getValue()); - appendString(message.getClientUserName().getValue(), StandardCharsets.UTF_8); - LOGGER.debug( - "Client user name: {}", - () -> backslashEscapeString(message.getClientUserName().getValue())); + Integer clientUserNameLength = message.getClientUserNameLength().getValue(); + LOGGER.debug("Client user name length: {}", clientUserNameLength); + appendInt(clientUserNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String clientUserName = message.getClientUserName().getValue(); + LOGGER.debug("Client user name: {}", () -> backslashEscapeString(clientUserName)); + appendString(clientUserName); } private void serializeSignature() { - appendInt(message.getSignatureLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); - appendBytes(message.getSignature().getValue()); - LOGGER.debug( - "Signature: {}", - () -> ArrayConverter.bytesToRawHexString(message.getSignature().getValue())); + Integer signatureLength = message.getSignatureLength().getValue(); + LOGGER.debug("Signature length: {}", signatureLength); + appendInt(signatureLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] signature = message.getSignature().getValue(); + LOGGER.debug("Signature: {}", () -> ArrayConverter.bytesToRawHexString(signature)); + appendBytes(signature); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java index 2c9b1e484..61e09d536 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java @@ -27,42 +27,42 @@ public UserAuthInfoRequestMessageSerializer(UserAuthInfoRequestMessage message) } private void serializeUserName() { - LOGGER.debug("User name length: {}", message.getUserNameLength().getValue()); - appendInt(message.getUserNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "User name: {}", () -> backslashEscapeString(message.getUserName().getValue())); - appendString(message.getUserName().getValue()); + Integer userNameLength = message.getUserNameLength().getValue(); + LOGGER.debug("User name length: {}", userNameLength); + appendInt(userNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String userName = message.getUserName().getValue(); + LOGGER.debug("User name: {}", () -> backslashEscapeString(userName)); + appendString(userName); } private void serializeInstruction() { - LOGGER.debug("Instruction length: {}", message.getInstructionLength().getValue()); - appendInt( - message.getInstructionLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Instruction: {}", - () -> backslashEscapeString(message.getInstruction().getValue())); - appendString(message.getInstruction().getValue()); + Integer instructionLength = message.getInstructionLength().getValue(); + LOGGER.debug("Instruction length: {}", instructionLength); + appendInt(instructionLength, DataFormatConstants.STRING_SIZE_LENGTH); + String instruction = message.getInstruction().getValue(); + LOGGER.debug("Instruction: {}", () -> backslashEscapeString(instruction)); + appendString(instruction); } private void serializeLanguageTag() { - LOGGER.debug("Language tag length: {}", message.getLanguageTagLength().getValue()); - appendInt( - message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Language tag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); - appendString(message.getLanguageTag().getValue()); + Integer languageTagLength = message.getLanguageTagLength().getValue(); + LOGGER.debug("Language tag length: {}", languageTagLength); + appendInt(languageTagLength, DataFormatConstants.STRING_SIZE_LENGTH); + String languageTag = message.getLanguageTag().getValue(); + LOGGER.debug("Language tag: {}", () -> backslashEscapeString(languageTag)); + appendString(languageTag); } private void serializePrompt() { - LOGGER.debug("Number of prompt entries: {}", message.getPromptEntryCount().getValue()); - appendInt(message.getPromptEntryCount().getValue(), DataFormatConstants.UINT32_SIZE); + Integer promptEntryCount = message.getPromptEntryCount().getValue(); + LOGGER.debug("Number of prompt entries: {}", promptEntryCount); + appendInt(promptEntryCount, DataFormatConstants.UINT32_SIZE); for (int i = 0; i < message.getPromptEntryCount().getValue(); i++) { AuthenticationPrompt.PromptEntry entry = message.getPrompt().get(i); LOGGER.debug("Prompt entry [{}] length: {}", i, entry.getPromptLength().getValue()); appendInt(entry.getPromptLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Prompt entry [{}]: {}", i, entry.getPrompt()); + LOGGER.debug("Prompt entry [{}]: {}", i, entry.getPrompt().getValue()); appendString(entry.getPrompt().getValue()); LOGGER.debug( "Prompt entry [{}] wants echo: {}", diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoResponseMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoResponseMessageSerializer.java index f194e1850..bc0145535 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoResponseMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoResponseMessageSerializer.java @@ -24,8 +24,9 @@ public UserAuthInfoResponseMessageSerializer(UserAuthInfoResponseMessage message } private void serializeResponse() { - LOGGER.debug("Number of response entries: {}", message.getResponseEntryCount().getValue()); - appendInt(message.getResponseEntryCount().getValue(), DataFormatConstants.UINT32_SIZE); + Integer responseEntryCount = message.getResponseEntryCount().getValue(); + LOGGER.debug("Number of response entries: {}", responseEntryCount); + appendInt(responseEntryCount, DataFormatConstants.UINT32_SIZE); for (int i = 0; i < message.getResponseEntryCount().getValue(); i++) { AuthenticationResponse.ResponseEntry entry = message.getResponse().get(i); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthKeyboardInteractiveMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthKeyboardInteractiveMessageSerializer.java index d07f37607..9061a5b6d 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthKeyboardInteractiveMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthKeyboardInteractiveMessageSerializer.java @@ -26,21 +26,21 @@ public UserAuthKeyboardInteractiveMessageSerializer( } private void serializeLanguageTag() { - LOGGER.debug("Language tag length: {}", message.getLanguageTagLength().getValue()); - appendInt( - message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Language tag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); - appendString(message.getLanguageTag().getValue(), StandardCharsets.US_ASCII); + Integer languageTagLength = message.getLanguageTagLength().getValue(); + LOGGER.debug("Language tag length: {}", languageTagLength); + appendInt(languageTagLength, DataFormatConstants.STRING_SIZE_LENGTH); + String languageTag = message.getLanguageTag().getValue(); + LOGGER.debug("Language tag: {}", () -> backslashEscapeString(languageTag)); + appendString(languageTag, StandardCharsets.US_ASCII); } private void serializeSubMethods() { - LOGGER.debug("Sub methods length: {}", message.getSubMethodsLength().getValue()); - appendInt(message.getSubMethodsLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Sub methods: {}", () -> backslashEscapeString(message.getSubMethods().getValue())); - appendString(message.getSubMethods().getValue(), StandardCharsets.UTF_8); + Integer subMethodsLength = message.getSubMethodsLength().getValue(); + LOGGER.debug("Sub methods length: {}", subMethodsLength); + appendInt(subMethodsLength, DataFormatConstants.STRING_SIZE_LENGTH); + String subMethods = message.getSubMethods().getValue(); + LOGGER.debug("Sub methods: {}", () -> backslashEscapeString(subMethods)); + appendString(subMethods, StandardCharsets.UTF_8); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPasswordMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPasswordMessageSerializer.java index 77addea96..8fe5a712f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPasswordMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPasswordMessageSerializer.java @@ -24,23 +24,23 @@ public UserAuthPasswordMessageSerializer(UserAuthPasswordMessage message) { } private void serializeChangePassword() { - LOGGER.debug( - "Change password: {}", - Converter.byteToBoolean(message.getChangePassword().getValue())); - appendByte(message.getChangePassword().getValue()); + Byte changePassword = message.getChangePassword().getValue(); + LOGGER.debug("Change password: {}", () -> Converter.byteToBoolean(changePassword)); + appendByte(changePassword); } private void serializePassword() { - LOGGER.debug("Password length: {}", message.getPasswordLength().getValue()); - appendInt(message.getPasswordLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + Integer passwordLength = message.getPasswordLength().getValue(); + LOGGER.debug("Password length: {}", passwordLength); + appendInt(passwordLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug("Password: {}", message.getPassword().getValue()); appendString(message.getPassword().getValue(), StandardCharsets.UTF_8); } private void serializeNewPassword() { - LOGGER.debug("New password length: {}", message.getNewPasswordLength().getValue()); - appendInt( - message.getNewPasswordLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + Integer newPasswordLength = message.getNewPasswordLength().getValue(); + LOGGER.debug("New password length: {}", newPasswordLength); + appendInt(newPasswordLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug("New password: {}", message.getNewPassword().getValue()); appendString(message.getNewPassword().getValue(), StandardCharsets.UTF_8); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPubkeyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPubkeyMessageSerializer.java index 0c2226f3a..bd0a00cee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPubkeyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPubkeyMessageSerializer.java @@ -27,39 +27,36 @@ public UserAuthPubkeyMessageSerializer(UserAuthPubkeyMessage message) { } private void serializeUseSignature() { - LOGGER.debug( - "Use Signature: {}", Converter.byteToBoolean(message.getUseSignature().getValue())); - appendByte(message.getUseSignature().getValue()); + Byte useSignature = message.getUseSignature().getValue(); + LOGGER.debug("Use Signature: {}", () -> Converter.byteToBoolean(useSignature)); + appendByte(useSignature); } private void serializePubkeyAlgName() { - LOGGER.debug( - "Pubkey algorithm name length: {}", message.getPubkeyAlgNameLength().getValue()); - appendInt( - message.getPubkeyAlgNameLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Pubkey algorithm name: {}", - () -> backslashEscapeString(message.getPubkeyAlgName().getValue())); - appendString(message.getPubkeyAlgName().getValue(), StandardCharsets.US_ASCII); + Integer pubkeyAlgNameLength = message.getPubkeyAlgNameLength().getValue(); + LOGGER.debug("Pubkey algorithm name length: {}", pubkeyAlgNameLength); + appendInt(pubkeyAlgNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String pubkeyAlgName = message.getPubkeyAlgName().getValue(); + LOGGER.debug("Pubkey algorithm name: {}", () -> backslashEscapeString(pubkeyAlgName)); + appendString(pubkeyAlgName, StandardCharsets.US_ASCII); } private void serializePubkey() { - LOGGER.debug("Pubkey length: {}", message.getPubkeyLength().getValue()); - appendInt(message.getPubkeyLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Pubkey: {}", - () -> ArrayConverter.bytesToRawHexString(message.getPubkey().getValue())); - appendBytes(message.getPubkey().getValue()); + Integer pubkeyLength = message.getPubkeyLength().getValue(); + LOGGER.debug("Pubkey length: {}", pubkeyLength); + appendInt(pubkeyLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] pubkey = message.getPubkey().getValue(); + LOGGER.debug("Pubkey: {}", () -> ArrayConverter.bytesToRawHexString(pubkey)); + appendBytes(pubkey); } private void serializeSignature() { - LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); - appendInt(message.getSignatureLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Signature: {}", - () -> ArrayConverter.bytesToRawHexString(message.getSignature().getValue())); - appendBytes(message.getSignature().getValue()); + Integer signatureLength = message.getSignatureLength().getValue(); + LOGGER.debug("Signature length: {}", signatureLength); + appendInt(signatureLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] signature = message.getSignature().getValue(); + LOGGER.debug("Signature: {}", () -> ArrayConverter.bytesToRawHexString(signature)); + appendBytes(signature); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthRequestMessageSerializer.java index 1f31db67a..9eda68e31 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthRequestMessageSerializer.java @@ -26,29 +26,30 @@ protected UserAuthRequestMessageSerializer(T message) { } private void serializeUserName() { - LOGGER.debug("User name length: {}", message.getUserNameLength().getValue()); - appendInt(message.getUserNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "User name: {}", () -> backslashEscapeString(message.getUserName().getValue())); - appendString(message.getUserName().getValue(), StandardCharsets.UTF_8); + Integer userNameLength = message.getUserNameLength().getValue(); + LOGGER.debug("User name length: {}", userNameLength); + appendInt(userNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String userName = message.getUserName().getValue(); + LOGGER.debug("User name: {}", () -> backslashEscapeString(userName)); + appendString(userName, StandardCharsets.UTF_8); } private void serializeServiceName() { - LOGGER.debug("Service name length: {}", message.getServiceNameLength().getValue()); - appendInt( - message.getServiceNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Service name: {}", - () -> backslashEscapeString(message.getServiceName().getValue())); - appendString(message.getServiceName().getValue(), StandardCharsets.US_ASCII); + Integer serviceNameLength = message.getServiceNameLength().getValue(); + LOGGER.debug("Service name length: {}", serviceNameLength); + appendInt(serviceNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String serviceName = message.getServiceName().getValue(); + LOGGER.debug("Service name: {}", () -> backslashEscapeString(serviceName)); + appendString(serviceName, StandardCharsets.US_ASCII); } private void serializeMethodName() { - LOGGER.debug("Method name length: {}", message.getMethodNameLength().getValue()); - appendInt(message.getMethodNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Method name: {}", () -> backslashEscapeString(message.getMethodName().getValue())); - appendString(message.getMethodName().getValue(), StandardCharsets.US_ASCII); + Integer methodNameLength = message.getMethodNameLength().getValue(); + LOGGER.debug("Method name length: {}", methodNameLength); + appendInt(methodNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String methodName = message.getMethodName().getValue(); + LOGGER.debug("Method name: {}", () -> backslashEscapeString(methodName)); + appendString(methodName, StandardCharsets.US_ASCII); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthUnknownMessageSerializer.java index c62b8bdb4..869370d45 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthUnknownMessageSerializer.java @@ -22,12 +22,11 @@ public UserAuthUnknownMessageSerializer(UserAuthUnknownMessage message) { } private void serializeMethodSpecificFields() { + byte[] methodSpecificFields = message.getMethodSpecificFields().getValue(); LOGGER.debug( "Method Specific Fields: {}", - () -> - ArrayConverter.bytesToHexString( - message.getMethodSpecificFields().getValue())); - appendBytes(message.getMethodSpecificFields().getValue()); + () -> ArrayConverter.bytesToHexString(methodSpecificFields)); + appendBytes(methodSpecificFields); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java index 37f5b0d5e..d4b1ec921 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java @@ -22,11 +22,12 @@ public ChannelDataMessageSerializer(ChannelDataMessage message) { } private void serializeData() { - LOGGER.debug("Data length: {}", message.getDataLength().getValue()); - appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Data: {}", () -> ArrayConverter.bytesToHexString(message.getData().getValue())); - appendBytes(message.getData().getValue()); + Integer dataLength = message.getDataLength().getValue(); + LOGGER.debug("Data length: {}", dataLength); + appendInt(dataLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] data = message.getData().getValue(); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToHexString(data)); + appendBytes(data); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelExtendedDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelExtendedDataMessageSerializer.java index cfca005c1..0709e0824 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelExtendedDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelExtendedDataMessageSerializer.java @@ -32,11 +32,12 @@ private void serializeDataTypeCode() { } private void serializeData() { - LOGGER.debug("Data length: {}", message.getDataLength().getValue()); - appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); - appendBytes(message.getData().getValue()); + Integer dataLength = message.getDataLength().getValue(); + LOGGER.debug("Data length: {}", dataLength); + appendInt(dataLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] data = message.getData().getValue(); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); + appendBytes(data); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelMessageSerializer.java index df5245155..8dad7de45 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelMessageSerializer.java @@ -22,8 +22,9 @@ public ChannelMessageSerializer(T message) { } private void serializeRecipientChannel() { - LOGGER.debug("Recipient channel id: {}", message.getRecipientChannelId().getValue()); - appendInt(message.getRecipientChannelId().getValue(), DataFormatConstants.UINT32_SIZE); + Integer recipientChannelId = message.getRecipientChannelId().getValue(); + LOGGER.debug("Recipient channel id: {}", recipientChannelId); + appendInt(recipientChannelId, DataFormatConstants.UINT32_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenConfirmationMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenConfirmationMessageSerializer.java index ba4afd440..1961673c8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenConfirmationMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenConfirmationMessageSerializer.java @@ -22,13 +22,15 @@ public ChannelOpenConfirmationMessageSerializer(ChannelOpenConfirmationMessage m } private void serializeSenderChannel() { - LOGGER.debug("Sender channel id: {}", message.getSenderChannelId().getValue()); - appendInt(message.getSenderChannelId().getValue(), DataFormatConstants.UINT32_SIZE); + Integer senderChannelId = message.getSenderChannelId().getValue(); + LOGGER.debug("Sender channel id: {}", senderChannelId); + appendInt(senderChannelId, DataFormatConstants.UINT32_SIZE); } private void serializeWindowSize() { - LOGGER.debug("Initial window size: {}", message.getWindowSize().getValue()); - appendInt(message.getWindowSize().getValue(), DataFormatConstants.UINT32_SIZE); + Integer windowSize = message.getWindowSize().getValue(); + LOGGER.debug("Initial window size: {}", windowSize); + appendInt(windowSize, DataFormatConstants.UINT32_SIZE); } private void serializePacketSize() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenFailureMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenFailureMessageSerializer.java index 0a4e3e4e1..d3448fc30 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenFailureMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenFailureMessageSerializer.java @@ -25,25 +25,27 @@ public ChannelOpenFailureMessageSerializer(ChannelOpenFailureMessage message) { } private void serializeReasonCode() { - LOGGER.debug("Reason code: {}", message.getReasonCode().getValue()); - appendInt(message.getReasonCode().getValue(), DataFormatConstants.UINT32_SIZE); + Integer reasonCode = message.getReasonCode().getValue(); + LOGGER.debug("Reason code: {}", reasonCode); + appendInt(reasonCode, DataFormatConstants.UINT32_SIZE); } private void serializeReason() { - LOGGER.debug("Reason length: {}", message.getReasonLength().getValue()); - appendInt(message.getReasonLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Reason: {}", () -> backslashEscapeString(message.getReason().getValue())); - appendString(message.getReason().getValue(), StandardCharsets.UTF_8); + Integer reasonLength = message.getReasonLength().getValue(); + LOGGER.debug("Reason length: {}", reasonLength); + appendInt(reasonLength, DataFormatConstants.STRING_SIZE_LENGTH); + String reason = message.getReason().getValue(); + LOGGER.debug("Reason: {}", () -> backslashEscapeString(reason)); + appendString(reason, StandardCharsets.UTF_8); } private void serializeLanguageTag() { - LOGGER.debug("Language tag length: {}", message.getLanguageTagLength().getValue()); - appendInt( - message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Language tag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); - appendString(message.getLanguageTag().getValue(), StandardCharsets.US_ASCII); + Integer languageTagLength = message.getLanguageTagLength().getValue(); + LOGGER.debug("Language tag length: {}", languageTagLength); + appendInt(languageTagLength, DataFormatConstants.STRING_SIZE_LENGTH); + String languageTag = message.getLanguageTag().getValue(); + LOGGER.debug("Language tag: {}", () -> backslashEscapeString(languageTag)); + appendString(languageTag, StandardCharsets.US_ASCII); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenMessageSerializer.java index 0ae1b0f2b..96e2bbb08 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenMessageSerializer.java @@ -24,26 +24,29 @@ protected ChannelOpenMessageSerializer(T message) { } private void serializeChannelType() { - LOGGER.debug("Channel type length: {}", message.getChannelTypeLength().getValue()); - appendInt( - message.getChannelTypeLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + Integer channelTypeLength = message.getChannelTypeLength().getValue(); + LOGGER.debug("Channel type length: {}", channelTypeLength); + appendInt(channelTypeLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug("Channel type: {}", message.getChannelType().getValue()); appendString(message.getChannelType().getValue(), StandardCharsets.US_ASCII); } private void serializeSenderChannel() { - LOGGER.debug("Sender channel id: {}", message.getSenderChannelId().getValue()); - appendInt(message.getSenderChannelId().getValue(), DataFormatConstants.UINT32_SIZE); + Integer senderChannelId = message.getSenderChannelId().getValue(); + LOGGER.debug("Sender channel id: {}", senderChannelId); + appendInt(senderChannelId, DataFormatConstants.UINT32_SIZE); } private void serializeWindowSize() { - LOGGER.debug("Initial window size: {}", message.getWindowSize().getValue()); - appendInt(message.getWindowSize().getValue(), DataFormatConstants.UINT32_SIZE); + Integer windowSize = message.getWindowSize().getValue(); + LOGGER.debug("Initial window size: {}", windowSize); + appendInt(windowSize, DataFormatConstants.UINT32_SIZE); } private void serializePacketSize() { - LOGGER.debug("Maximum packet size: {}", message.getPacketSize().getValue()); - appendInt(message.getPacketSize().getValue(), DataFormatConstants.UINT32_SIZE); + Integer packetSize = message.getPacketSize().getValue(); + LOGGER.debug("Maximum packet size: {}", packetSize); + appendInt(packetSize, DataFormatConstants.UINT32_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenUnknownMessageSerializer.java index 5cd39ee5d..b64b089dc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelOpenUnknownMessageSerializer.java @@ -22,10 +22,10 @@ public ChannelOpenUnknownMessageSerializer(ChannelOpenUnknownMessage message) { } private void serializeTypeSpecificData() { + byte[] typeSpecificData = message.getTypeSpecificData().getValue(); LOGGER.debug( - "Type specific data: {}", - () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); - appendBytes(message.getTypeSpecificData().getValue()); + "Type specific data: {}", () -> ArrayConverter.bytesToHexString(typeSpecificData)); + appendBytes(typeSpecificData); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestBreakMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestBreakMessageSerializer.java index 5fbcb7bb6..e092e7880 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestBreakMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestBreakMessageSerializer.java @@ -21,8 +21,9 @@ public ChannelRequestBreakMessageSerializer(ChannelRequestBreakMessage message) } private void serializeBreakLength() { - LOGGER.debug("Break length in milliseconds: {}", message.getBreakLength().getValue()); - appendInt(message.getBreakLength().getValue(), DataFormatConstants.UINT32_SIZE); + Integer breakLength = message.getBreakLength().getValue(); + LOGGER.debug("Break length in milliseconds: {}", breakLength); + appendInt(breakLength, DataFormatConstants.UINT32_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestEnvMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestEnvMessageSerializer.java index 7ac0d30b7..4c495d8c1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestEnvMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestEnvMessageSerializer.java @@ -25,24 +25,21 @@ public ChannelRequestEnvMessageSerializer(ChannelRequestEnvMessage message) { } private void serializeVariableName() { - LOGGER.debug("Variable name length: {}", message.getVariableNameLength().getValue()); - appendInt( - message.getVariableNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Variable name: {}", - () -> backslashEscapeString(message.getVariableName().getValue())); - appendString(message.getVariableName().getValue(), StandardCharsets.UTF_8); + Integer variableNameLength = message.getVariableNameLength().getValue(); + LOGGER.debug("Variable name length: {}", variableNameLength); + appendInt(variableNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String variableName = message.getVariableName().getValue(); + LOGGER.debug("Variable name: {}", () -> backslashEscapeString(variableName)); + appendString(variableName, StandardCharsets.UTF_8); } private void serializeVariableValue() { - LOGGER.debug("Variable value length: {}", message.getVariableValueLength().getValue()); - appendInt( - message.getVariableValueLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Variable value: {}", - () -> backslashEscapeString(message.getVariableValue().getValue())); - appendString(message.getVariableValue().getValue(), StandardCharsets.UTF_8); + Integer variableValueLength = message.getVariableValueLength().getValue(); + LOGGER.debug("Variable value length: {}", variableValueLength); + appendInt(variableValueLength, DataFormatConstants.STRING_SIZE_LENGTH); + String variableValue = message.getVariableValue().getValue(); + LOGGER.debug("Variable value: {}", () -> backslashEscapeString(variableValue)); + appendString(variableValue, StandardCharsets.UTF_8); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExecMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExecMessageSerializer.java index 82136a85c..002bc72cf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExecMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExecMessageSerializer.java @@ -25,10 +25,12 @@ public ChannelRequestExecMessageSerializer(ChannelRequestExecMessage message) { } private void serializeCommand() { - LOGGER.debug("Command length: {}", message.getCommandLength().getValue()); - appendInt(message.getCommandLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Command: {}", () -> backslashEscapeString(message.getCommand().getValue())); - appendString(message.getCommand().getValue(), StandardCharsets.UTF_8); + Integer commandLength = message.getCommandLength().getValue(); + LOGGER.debug("Command length: {}", commandLength); + appendInt(commandLength, DataFormatConstants.STRING_SIZE_LENGTH); + String command = message.getCommand().getValue(); + LOGGER.debug("Command: {}", () -> backslashEscapeString(command)); + appendString(command, StandardCharsets.UTF_8); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitSignalMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitSignalMessageSerializer.java index d5b8a7d17..1f3f64f9d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitSignalMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitSignalMessageSerializer.java @@ -26,11 +26,12 @@ public ChannelRequestExitSignalMessageSerializer(ChannelRequestExitSignalMessage } private void serializeSignalName() { - LOGGER.debug("Signal name length: {}", message.getSignalNameLength().getValue()); - appendInt(message.getSignalNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Signal name: {}", () -> backslashEscapeString(message.getSignalName().getValue())); - appendString(message.getSignalName().getValue(), StandardCharsets.UTF_8); + Integer signalNameLength = message.getSignalNameLength().getValue(); + LOGGER.debug("Signal name length: {}", signalNameLength); + appendInt(signalNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String signalName = message.getSignalName().getValue(); + LOGGER.debug("Signal name: {}", () -> backslashEscapeString(signalName)); + appendString(signalName, StandardCharsets.UTF_8); } private void serializeCoreDump() { @@ -39,23 +40,21 @@ private void serializeCoreDump() { } private void serializeErrorMessage() { - LOGGER.debug("Error message length: {}", message.getErrorMessageLength().getValue()); - appendInt( - message.getErrorMessageLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Error message: {}", - () -> backslashEscapeString(message.getErrorMessage().getValue())); - appendString(message.getErrorMessage().getValue(), StandardCharsets.UTF_8); + Integer errorMessageLength = message.getErrorMessageLength().getValue(); + LOGGER.debug("Error message length: {}", errorMessageLength); + appendInt(errorMessageLength, DataFormatConstants.STRING_SIZE_LENGTH); + String errorMessage = message.getErrorMessage().getValue(); + LOGGER.debug("Error message: {}", () -> backslashEscapeString(errorMessage)); + appendString(errorMessage, StandardCharsets.UTF_8); } private void serializeLanguageTag() { - LOGGER.debug("Language tag length: {}", message.getLanguageTagLength().getValue()); - appendInt( - message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Language tag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); - appendString(message.getLanguageTag().getValue(), StandardCharsets.US_ASCII); + Integer languageTagLength = message.getLanguageTagLength().getValue(); + LOGGER.debug("Language tag length: {}", languageTagLength); + appendInt(languageTagLength, DataFormatConstants.STRING_SIZE_LENGTH); + String languageTag = message.getLanguageTag().getValue(); + LOGGER.debug("Language tag: {}", () -> backslashEscapeString(languageTag)); + appendString(languageTag, StandardCharsets.US_ASCII); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitStatusMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitStatusMessageSerializer.java index f60ec90cc..39eaeb3a8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitStatusMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestExitStatusMessageSerializer.java @@ -22,8 +22,9 @@ public ChannelRequestExitStatusMessageSerializer(ChannelRequestExitStatusMessage } private void serializeExitStatus() { - LOGGER.debug("Exit status: {}", message.getExitStatus().getValue()); - appendInt(message.getExitStatus().getValue(), DataFormatConstants.UINT32_SIZE); + Integer exitStatus = message.getExitStatus().getValue(); + LOGGER.debug("Exit status: {}", exitStatus); + appendInt(exitStatus, DataFormatConstants.UINT32_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestMessageSerializer.java index 93ea998fe..9ea029791 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestMessageSerializer.java @@ -24,16 +24,17 @@ protected ChannelRequestMessageSerializer(T message) { } private void serializeRequestType() { - LOGGER.debug("Request type length: {}", message.getRequestTypeLength().getValue()); - appendInt( - message.getRequestTypeLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + Integer requestTypeLength = message.getRequestTypeLength().getValue(); + LOGGER.debug("Request type length: {}", requestTypeLength); + appendInt(requestTypeLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug("Request type: {}", message.getRequestType().getValue()); appendString(message.getRequestType().getValue(), StandardCharsets.US_ASCII); } private void serializeWantReply() { - LOGGER.debug("Want reply: {}", Converter.byteToBoolean(message.getWantReply().getValue())); - appendByte(message.getWantReply().getValue()); + Byte wantReply = message.getWantReply().getValue(); + LOGGER.debug("Want reply: {}", () -> Converter.byteToBoolean(wantReply)); + appendByte(wantReply); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestPtyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestPtyMessageSerializer.java index c545585c4..9feebae2e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestPtyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestPtyMessageSerializer.java @@ -34,38 +34,38 @@ private void serializeTermEnvVariable() { } private void serializeWidthCharacters() { - LOGGER.debug("Terminal width in characters: {}", message.getWidthCharacters().getValue()); - appendInt(message.getWidthCharacters().getValue(), DataFormatConstants.UINT32_SIZE); + Integer widthCharacters = message.getWidthCharacters().getValue(); + LOGGER.debug("Terminal width in characters: {}", widthCharacters); + appendInt(widthCharacters, DataFormatConstants.UINT32_SIZE); } private void serializeHeightRows() { - LOGGER.debug("Terminal height in rows: {}", message.getHeightRows().getValue()); - appendInt(message.getHeightRows().getValue(), DataFormatConstants.UINT32_SIZE); + Integer heightRows = message.getHeightRows().getValue(); + LOGGER.debug("Terminal height in rows: {}", heightRows); + appendInt(heightRows, DataFormatConstants.UINT32_SIZE); } private void serializeWidthPixels() { - LOGGER.debug("Terminal width in pixels: {}", message.getWidthPixels().getValue()); - appendInt(message.getWidthPixels().getValue(), DataFormatConstants.UINT32_SIZE); + Integer widthPixels = message.getWidthPixels().getValue(); + LOGGER.debug("Terminal width in pixels: {}", widthPixels); + appendInt(widthPixels, DataFormatConstants.UINT32_SIZE); } private void serializeHeightPixels() { - LOGGER.debug("Terminal height in pixels: {}", message.getHeightPixels().getValue()); - appendInt(message.getHeightPixels().getValue(), DataFormatConstants.UINT32_SIZE); + Integer heightPixels = message.getHeightPixels().getValue(); + LOGGER.debug("Terminal height in pixels: {}", heightPixels); + appendInt(heightPixels, DataFormatConstants.UINT32_SIZE); } private void serializeEncodedTerminalModes() { - LOGGER.debug( - "Encoded terminal modes length: {}", - message.getEncodedTerminalModesLength().getValue()); - appendInt( - message.getEncodedTerminalModesLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + Integer encodedTerminalModesLength = message.getEncodedTerminalModesLength().getValue(); + LOGGER.debug("Encoded terminal modes length: {}", encodedTerminalModesLength); + appendInt(encodedTerminalModesLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] encodedTerminalModes = message.getEncodedTerminalModes().getValue(); LOGGER.debug( "Endcoded terminal modes: {}", - () -> - ArrayConverter.bytesToHexString( - message.getEncodedTerminalModes().getValue())); - appendBytes(message.getEncodedTerminalModes().getValue()); + () -> ArrayConverter.bytesToHexString(encodedTerminalModes)); + appendBytes(encodedTerminalModes); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSignalMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSignalMessageSerializer.java index d080b43c9..5052ea1f1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSignalMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSignalMessageSerializer.java @@ -25,11 +25,12 @@ public ChannelRequestSignalMessageSerializer(ChannelRequestSignalMessage message } private void serializeSignalName() { - LOGGER.debug("Signal name length: {}", message.getSignalNameLength().getValue()); - appendInt(message.getSignalNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Signal name: {}", () -> backslashEscapeString(message.getSignalName().getValue())); - appendString(message.getSignalName().getValue(), StandardCharsets.UTF_8); + Integer signalNameLength = message.getSignalNameLength().getValue(); + LOGGER.debug("Signal name length: {}", signalNameLength); + appendInt(signalNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String signalName = message.getSignalName().getValue(); + LOGGER.debug("Signal name: {}", () -> backslashEscapeString(signalName)); + appendString(signalName, StandardCharsets.UTF_8); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSubsystemMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSubsystemMessageSerializer.java index b9db222a5..02359cc5b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSubsystemMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestSubsystemMessageSerializer.java @@ -25,14 +25,12 @@ public ChannelRequestSubsystemMessageSerializer(ChannelRequestSubsystemMessage m } private void serializeSubsystemName() { - LOGGER.debug("Subsystem name length: {}", message.getSubsystemNameLength().getValue()); - appendInt( - message.getSubsystemNameLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Subsytem name: {}", - () -> backslashEscapeString(message.getSubsystemName().getValue())); - appendString(message.getSubsystemName().getValue(), StandardCharsets.UTF_8); + Integer subsystemNameLength = message.getSubsystemNameLength().getValue(); + LOGGER.debug("Subsystem name length: {}", subsystemNameLength); + appendInt(subsystemNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String subsystemName = message.getSubsystemName().getValue(); + LOGGER.debug("Subsytem name: {}", () -> backslashEscapeString(subsystemName)); + appendString(subsystemName, StandardCharsets.UTF_8); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestUnknownMessageSerializer.java index b3199d6d8..d6d702d87 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestUnknownMessageSerializer.java @@ -21,10 +21,10 @@ public ChannelRequestUnknownMessageSerializer(ChannelRequestUnknownMessage messa } private void serializeBreakLength() { + byte[] typeSpecificData = message.getTypeSpecificData().getValue(); LOGGER.debug( - "Type specific data: {}", - () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); - appendBytes(message.getTypeSpecificData().getValue()); + "Type specific data: {}", () -> ArrayConverter.bytesToHexString(typeSpecificData)); + appendBytes(typeSpecificData); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestWindowChangeMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestWindowChangeMessageSerializer.java index 825ec5187..c9579da0b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestWindowChangeMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestWindowChangeMessageSerializer.java @@ -21,23 +21,27 @@ public ChannelRequestWindowChangeMessageSerializer(ChannelRequestWindowChangeMes } private void serializeWidthColums() { - LOGGER.debug("Terminal width in colums: {}", message.getWidthPixels().getValue()); - appendInt(message.getWidthPixels().getValue(), DataFormatConstants.UINT32_SIZE); + Integer widthPixels = message.getWidthPixels().getValue(); + LOGGER.debug("Terminal width in colums: {}", widthPixels); + appendInt(widthPixels, DataFormatConstants.UINT32_SIZE); } private void serializeHeightRows() { - LOGGER.debug("Terminal height in rows: {}", message.getHeightRows().getValue()); - appendInt(message.getHeightRows().getValue(), DataFormatConstants.UINT32_SIZE); + Integer heightRows = message.getHeightRows().getValue(); + LOGGER.debug("Terminal height in rows: {}", heightRows); + appendInt(heightRows, DataFormatConstants.UINT32_SIZE); } private void serializeWidthPixels() { - LOGGER.debug("Terminal width in pixels: {}", message.getWidthPixels().getValue()); - appendInt(message.getWidthPixels().getValue(), DataFormatConstants.UINT32_SIZE); + Integer widthPixels = message.getWidthPixels().getValue(); + LOGGER.debug("Terminal width in pixels: {}", widthPixels); + appendInt(widthPixels, DataFormatConstants.UINT32_SIZE); } private void serializeHeightPixels() { - LOGGER.debug("Terminal height in pixels: {}", message.getHeightPixels().getValue()); - appendInt(message.getHeightPixels().getValue(), DataFormatConstants.UINT32_SIZE); + Integer heightPixels = message.getHeightPixels().getValue(); + LOGGER.debug("Terminal height in pixels: {}", heightPixels); + appendInt(heightPixels, DataFormatConstants.UINT32_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestX11MessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestX11MessageSerializer.java index a84f163e1..a6b98934e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestX11MessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestX11MessageSerializer.java @@ -28,12 +28,10 @@ private void serializeSingleConnection() { } private void serializeX11AuthenticationProtocol() { - LOGGER.debug( - "X11 authentication protocol length: {}", - message.getX11AuthenticationProtocolLength().getValue()); - appendInt( - message.getX11AuthenticationProtocolLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + Integer x11AuthenticationProtocolLength = + message.getX11AuthenticationProtocolLength().getValue(); + LOGGER.debug("X11 authentication protocol length: {}", x11AuthenticationProtocolLength); + appendInt(x11AuthenticationProtocolLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "X11 authentication protocol: {}", message.getX11AuthenticationProtocol().getValue()); @@ -41,20 +39,19 @@ private void serializeX11AuthenticationProtocol() { } private void serializeX11AuthenticationCookie() { - LOGGER.debug( - "X11 authenticaton cookie length: {}", - message.getX11AuthenticationCookieLength().getValue()); - appendInt( - message.getX11AuthenticationCookieLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + Integer x11AuthenticationCookieLength = + message.getX11AuthenticationCookieLength().getValue(); + LOGGER.debug("X11 authenticaton cookie length: {}", x11AuthenticationCookieLength); + appendInt(x11AuthenticationCookieLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "X11 authentication cookie: {}", message.getX11AuthenticationCookie().getValue()); appendString(message.getX11AuthenticationCookie().getValue(), StandardCharsets.UTF_8); } private void serializeX11ScreenNumber() { - LOGGER.debug("X11 screen number: {}", message.getX11ScreenNumber().getValue()); - appendInt(message.getX11ScreenNumber().getValue(), DataFormatConstants.UINT32_SIZE); + Integer x11ScreenNumber = message.getX11ScreenNumber().getValue(); + LOGGER.debug("X11 screen number: {}", x11ScreenNumber); + appendInt(x11ScreenNumber, DataFormatConstants.UINT32_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestXonXoffMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestXonXoffMessageSerializer.java index 2564c421b..cd3a25ca2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestXonXoffMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelRequestXonXoffMessageSerializer.java @@ -22,10 +22,10 @@ public ChannelRequestXonXoffMessageSerializer(ChannelRequestXonXoffMessage messa } private void serializeClientFlowControl() { + Byte clientFlowControl = message.getClientFlowControl().getValue(); LOGGER.debug( - "Client can do flow control: {}", - Converter.byteToBoolean(message.getClientFlowControl().getValue())); - appendByte(message.getClientFlowControl().getValue()); + "Client can do flow control: {}", () -> Converter.byteToBoolean(clientFlowControl)); + appendByte(clientFlowControl); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelWindowAdjustMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelWindowAdjustMessageSerializer.java index e75824d2f..9ff1c0c18 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelWindowAdjustMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelWindowAdjustMessageSerializer.java @@ -22,8 +22,9 @@ public ChannelWindowAdjustMessageSerializer(ChannelWindowAdjustMessage message) } private void serializeBytesToAdd() { - LOGGER.debug("Bytes to add: {}", message.getBytesToAdd().getValue()); - appendInt(message.getBytesToAdd().getValue(), DataFormatConstants.UINT32_SIZE); + Integer bytesToAdd = message.getBytesToAdd().getValue(); + LOGGER.debug("Bytes to add: {}", bytesToAdd); + appendInt(bytesToAdd, DataFormatConstants.UINT32_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestCancelTcpIpForwardlMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestCancelTcpIpForwardlMessageSerializer.java index a69cbf3ae..c3bfb7f91 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestCancelTcpIpForwardlMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestCancelTcpIpForwardlMessageSerializer.java @@ -24,18 +24,17 @@ public GlobalRequestCancelTcpIpForwardlMessageSerializer( } private void serializeIPAddressToBind() { - LOGGER.debug( - "IP address to bind length: {}", message.getIpAddressToBindLength().getValue()); - appendInt( - message.getIpAddressToBindLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + Integer ipAddressToBindLength = message.getIpAddressToBindLength().getValue(); + LOGGER.debug("IP address to bind length: {}", ipAddressToBindLength); + appendInt(ipAddressToBindLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug("IP address to bind: {}", message.getIpAddressToBind().getValue()); appendString(message.getIpAddressToBind().getValue(), StandardCharsets.US_ASCII); } private void serializePortToBind() { - LOGGER.debug("Port to bind: {}", message.getPortToBind().getValue()); - appendInt(message.getPortToBind().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + Integer portToBind = message.getPortToBind().getValue(); + LOGGER.debug("Port to bind: {}", portToBind); + appendInt(portToBind, DataFormatConstants.STRING_SIZE_LENGTH); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestMessageSerializer.java index 0358d8ba7..2da6537ec 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestMessageSerializer.java @@ -27,18 +27,18 @@ protected GlobalRequestMessageSerializer(T message) { } private void serializeRequestName() { - LOGGER.debug("Request name length: {}", message.getRequestNameLength().getValue()); - appendInt( - message.getRequestNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Request name: {}", - () -> backslashEscapeString(message.getRequestName().getValue())); - appendString(message.getRequestName().getValue(), StandardCharsets.US_ASCII); + Integer requestNameLength = message.getRequestNameLength().getValue(); + LOGGER.debug("Request name length: {}", requestNameLength); + appendInt(requestNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String requestName = message.getRequestName().getValue(); + LOGGER.debug("Request name: {}", () -> backslashEscapeString(requestName)); + appendString(requestName, StandardCharsets.US_ASCII); } private void serializeWantReply() { - LOGGER.debug("Want reply: {}", Converter.byteToBoolean(message.getWantReply().getValue())); - appendByte(message.getWantReply().getValue()); + Byte wantReply = message.getWantReply().getValue(); + LOGGER.debug("Want reply: {}", () -> Converter.byteToBoolean(wantReply)); + appendByte(wantReply); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestOpenSshHostKeysMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestOpenSshHostKeysMessageSerializer.java index c8508ec0e..f01e0fe5a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestOpenSshHostKeysMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestOpenSshHostKeysMessageSerializer.java @@ -23,10 +23,9 @@ public GlobalRequestOpenSshHostKeysMessageSerializer( } private void serializeHostKeys() { - LOGGER.debug( - "Host keys blob: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHostKeys().getValue())); - appendBytes(message.getHostKeys().getValue()); + byte[] hostKeys = message.getHostKeys().getValue(); + LOGGER.debug("Host keys blob: {}", () -> ArrayConverter.bytesToRawHexString(hostKeys)); + appendBytes(hostKeys); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java index fed512b21..f86ea5ec0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestSuccessMessageSerializer.java @@ -24,12 +24,11 @@ public GlobalRequestSuccessMessageSerializer(GlobalRequestSuccessMessage message private void serializeResponseSpecificData() { if (message.getResponseSpecificData() != null) { + byte[] responseSpecificData = message.getResponseSpecificData().getValue(); LOGGER.debug( "Response specific data blob: {}", - () -> - ArrayConverter.bytesToRawHexString( - message.getResponseSpecificData().getValue())); - appendBytes(message.getResponseSpecificData().getValue()); + () -> ArrayConverter.bytesToRawHexString(responseSpecificData)); + appendBytes(responseSpecificData); } else { LOGGER.debug("No response specific data blob set"); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestTcpIpForwardMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestTcpIpForwardMessageSerializer.java index 3ed828514..64c9cb396 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestTcpIpForwardMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestTcpIpForwardMessageSerializer.java @@ -23,18 +23,17 @@ public GlobalRequestTcpIpForwardMessageSerializer(GlobalRequestTcpIpForwardMessa } private void serializeIPAddressToBind() { - LOGGER.debug( - "IP address to bind length: {}", message.getIpAddressToBindLength().getValue()); - appendInt( - message.getIpAddressToBindLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + Integer ipAddressToBindLength = message.getIpAddressToBindLength().getValue(); + LOGGER.debug("IP address to bind length: {}", ipAddressToBindLength); + appendInt(ipAddressToBindLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug("IP address to bind: {}", message.getIpAddressToBind().getValue()); appendString(message.getIpAddressToBind().getValue(), StandardCharsets.US_ASCII); } private void serializePortToBind() { - LOGGER.debug("Port to bind: {}", message.getPortToBind().getValue()); - appendInt(message.getPortToBind().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + Integer portToBind = message.getPortToBind().getValue(); + LOGGER.debug("Port to bind: {}", portToBind); + appendInt(portToBind, DataFormatConstants.STRING_SIZE_LENGTH); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestUnknownMessageSerializer.java index 933d7d013..48fdf1480 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/GlobalRequestUnknownMessageSerializer.java @@ -21,10 +21,10 @@ public GlobalRequestUnknownMessageSerializer(GlobalRequestUnknownMessage message } private void serializeBreakLength() { + byte[] typeSpecificData = message.getTypeSpecificData().getValue(); LOGGER.debug( - "Type specific data: {}", - () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); - appendBytes(message.getTypeSpecificData().getValue()); + "Type specific data: {}", () -> ArrayConverter.bytesToHexString(typeSpecificData)); + appendBytes(typeSpecificData); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DebugMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DebugMessageSerializer.java index c12d642c9..ce30b86b3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DebugMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DebugMessageSerializer.java @@ -26,27 +26,27 @@ public DebugMessageSerializer(DebugMessage message) { } private void serializeAlwaysDisplayed() { - LOGGER.debug( - "Always displayed: {}", - Converter.byteToBoolean(message.getAlwaysDisplay().getValue())); - appendByte(message.getAlwaysDisplay().getValue()); + Byte alwaysDisplay = message.getAlwaysDisplay().getValue(); + LOGGER.debug("Always displayed: {}", () -> Converter.byteToBoolean(alwaysDisplay)); + appendByte(alwaysDisplay); } private void serializeMessage() { - LOGGER.debug("Message length: {}", message.getMessageLength().getValue()); - appendInt(message.getMessageLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Message: {}", () -> backslashEscapeString(message.getMessage().getValue())); - appendString(message.getMessage().getValue(), StandardCharsets.UTF_8); + Integer messageLength = message.getMessageLength().getValue(); + LOGGER.debug("Message length: {}", messageLength); + appendInt(messageLength, DataFormatConstants.STRING_SIZE_LENGTH); + String messageStr = message.getMessage().getValue(); + LOGGER.debug("Message: {}", () -> backslashEscapeString(messageStr)); + appendString(messageStr, StandardCharsets.UTF_8); } private void serializeLanguageTag() { - LOGGER.debug("Language tag length: {}", message.getLanguageTagLength().getValue()); - appendInt( - message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Language tag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); - appendString(message.getLanguageTag().getValue(), StandardCharsets.US_ASCII); + Integer languageTagLength = message.getLanguageTagLength().getValue(); + LOGGER.debug("Language tag length: {}", languageTagLength); + appendInt(languageTagLength, DataFormatConstants.STRING_SIZE_LENGTH); + String languageTag = message.getLanguageTag().getValue(); + LOGGER.debug("Language tag: {}", () -> backslashEscapeString(languageTag)); + appendString(languageTag, StandardCharsets.US_ASCII); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeGroupMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeGroupMessageSerializer.java index b32997b41..018ab835c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeGroupMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeGroupMessageSerializer.java @@ -24,9 +24,9 @@ public DhGexKeyExchangeGroupMessageSerializer(DhGexKeyExchangeGroupMessage messa } private void serializeGroupModulus() { - appendInt( - message.getGroupModulusLength().getValue(), DataFormatConstants.MPINT_SIZE_LENGTH); - LOGGER.debug("Group modulus length: {}", message.getGroupModulusLength().getValue()); + Integer groupModulusLength = message.getGroupModulusLength().getValue(); + LOGGER.debug("Group modulus length: {}", groupModulusLength); + appendInt(groupModulusLength, DataFormatConstants.MPINT_SIZE_LENGTH); appendBytes(message.getGroupModulus().getValue().toByteArray()); LOGGER.debug( "Group modulus: {}", @@ -36,10 +36,9 @@ private void serializeGroupModulus() { } private void serializeGroupGenerator() { - appendInt( - message.getGroupGeneratorLength().getValue(), - DataFormatConstants.MPINT_SIZE_LENGTH); - LOGGER.debug("Group generator length: {}", message.getGroupGeneratorLength().getValue()); + Integer groupGeneratorLength = message.getGroupGeneratorLength().getValue(); + LOGGER.debug("Group generator length: {}", groupGeneratorLength); + appendInt(groupGeneratorLength, DataFormatConstants.MPINT_SIZE_LENGTH); appendBytes(message.getGroupGenerator().getValue().toByteArray()); LOGGER.debug( "Group generator: {}", diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeInitMessageSerializer.java index c7c6eb465..a4e2e2efd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeInitMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeInitMessageSerializer.java @@ -23,12 +23,9 @@ public DhGexKeyExchangeInitMessageSerializer(DhGexKeyExchangeInitMessage message } private void serializeEphemeralPublicKey() { - LOGGER.debug( - "Ephemeral public key (client) length: {}", - message.getEphemeralPublicKeyLength().getValue()); - appendInt( - message.getEphemeralPublicKeyLength().getValue(), - DataFormatConstants.MPINT_SIZE_LENGTH); + Integer ephemeralPublicKeyLength = message.getEphemeralPublicKeyLength().getValue(); + LOGGER.debug("Ephemeral public key (client) length: {}", ephemeralPublicKeyLength); + appendInt(ephemeralPublicKeyLength, DataFormatConstants.MPINT_SIZE_LENGTH); LOGGER.debug( "Ephemeral public key (client): {}", message.getEphemeralPublicKey().getValue()); appendBytes(message.getEphemeralPublicKey().getValue().toByteArray()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeOldRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeOldRequestMessageSerializer.java index 1c5796a9f..2846da799 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeOldRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeOldRequestMessageSerializer.java @@ -23,8 +23,9 @@ public DhGexKeyExchangeOldRequestMessageSerializer(DhGexKeyExchangeOldRequestMes } private void serializePreferredGroupSize() { - LOGGER.debug("Preferred group size: {}", message.getPreferredGroupSize().getValue()); - appendInt(message.getPreferredGroupSize().getValue(), DataFormatConstants.UINT32_SIZE); + Integer preferredGroupSize = message.getPreferredGroupSize().getValue(); + LOGGER.debug("Preferred group size: {}", preferredGroupSize); + appendInt(preferredGroupSize, DataFormatConstants.UINT32_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeReplyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeReplyMessageSerializer.java index 5ae7d9cfe..bcf958755 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeReplyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeReplyMessageSerializer.java @@ -24,30 +24,27 @@ public DhGexKeyExchangeReplyMessageSerializer(DhGexKeyExchangeReplyMessage messa } private void serializeHostKeyBytes() { - appendInt( - message.getHostKeyBytesLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Host key bytes length: {}", message.getHostKeyBytesLength().getValue()); - appendBytes(message.getHostKeyBytes().getValue()); - LOGGER.debug( - "Host key bytes: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); + Integer hostKeyBytesLength = message.getHostKeyBytesLength().getValue(); + LOGGER.debug("Host key bytes length: {}", hostKeyBytesLength); + appendInt(hostKeyBytesLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] hostKeyBytes = message.getHostKeyBytes().getValue(); + LOGGER.debug("Host key bytes: {}", () -> ArrayConverter.bytesToRawHexString(hostKeyBytes)); + appendBytes(hostKeyBytes); } private void serializeEphemeralPublicKey() { - appendInt( - message.getEphemeralPublicKeyLength().getValue(), - DataFormatConstants.MPINT_SIZE_LENGTH); - LOGGER.debug( - "Ephemeral public key (server) length: {}", - message.getEphemeralPublicKeyLength().getValue()); + Integer ephemeralPublicKeyLength = message.getEphemeralPublicKeyLength().getValue(); + LOGGER.debug("Ephemeral public key (server) length: {}", ephemeralPublicKeyLength); + appendInt(ephemeralPublicKeyLength, DataFormatConstants.MPINT_SIZE_LENGTH); appendBytes(message.getEphemeralPublicKey().getValue().toByteArray()); LOGGER.debug( "Ephemeral public key (server): {}", message.getEphemeralPublicKey().getValue()); } private void serializeSignature() { - appendInt(message.getSignatureLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); + Integer signatureLength = message.getSignatureLength().getValue(); + LOGGER.debug("Signature length: {}", signatureLength); + appendInt(signatureLength, DataFormatConstants.STRING_SIZE_LENGTH); appendBytes(message.getSignature().getValue()); LOGGER.debug("Signature: {}", message.getSignature()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeRequestMessageSerializer.java index d8538f4d3..7395986f4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhGexKeyExchangeRequestMessageSerializer.java @@ -23,18 +23,21 @@ public DhGexKeyExchangeRequestMessageSerializer(DhGexKeyExchangeRequestMessage m } private void serializeMinimalGroupSize() { - LOGGER.debug("Minimal group size: {}", message.getMinimalGroupSize().getValue()); - appendInt(message.getMinimalGroupSize().getValue(), DataFormatConstants.UINT32_SIZE); + Integer minimalGroupSize = message.getMinimalGroupSize().getValue(); + LOGGER.debug("Minimal group size: {}", minimalGroupSize); + appendInt(minimalGroupSize, DataFormatConstants.UINT32_SIZE); } private void serializePreferredGroupSize() { - LOGGER.debug("Preferred group size: {}", message.getPreferredGroupSize().getValue()); - appendInt(message.getPreferredGroupSize().getValue(), DataFormatConstants.UINT32_SIZE); + Integer preferredGroupSize = message.getPreferredGroupSize().getValue(); + LOGGER.debug("Preferred group size: {}", preferredGroupSize); + appendInt(preferredGroupSize, DataFormatConstants.UINT32_SIZE); } private void serializeMaximalGroupSize() { - LOGGER.debug("Maximal group size: {}", message.getMaximalGroupSize().getValue()); - appendInt(message.getMaximalGroupSize().getValue(), DataFormatConstants.UINT32_SIZE); + Integer maximalGroupSize = message.getMaximalGroupSize().getValue(); + LOGGER.debug("Maximal group size: {}", maximalGroupSize); + appendInt(maximalGroupSize, DataFormatConstants.UINT32_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeInitMessageSerializer.java index ef37b8663..c6e018f14 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeInitMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeInitMessageSerializer.java @@ -23,12 +23,9 @@ public DhKeyExchangeInitMessageSerializer(DhKeyExchangeInitMessage message) { } private void serializeEphemeralPublicKey() { - LOGGER.debug( - "Ephemeral public key (client) length: {}", - message.getEphemeralPublicKeyLength().getValue()); - appendInt( - message.getEphemeralPublicKeyLength().getValue(), - DataFormatConstants.MPINT_SIZE_LENGTH); + Integer ephemeralPublicKeyLength = message.getEphemeralPublicKeyLength().getValue(); + LOGGER.debug("Ephemeral public key (client) length: {}", ephemeralPublicKeyLength); + appendInt(ephemeralPublicKeyLength, DataFormatConstants.MPINT_SIZE_LENGTH); LOGGER.debug( "Ephemeral public key (client): {}", message.getEphemeralPublicKey().getValue()); appendBytes(message.getEphemeralPublicKey().getValue().toByteArray()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeReplyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeReplyMessageSerializer.java index 3234a52cb..6b9cf18ed 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeReplyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DhKeyExchangeReplyMessageSerializer.java @@ -24,30 +24,27 @@ public DhKeyExchangeReplyMessageSerializer(DhKeyExchangeReplyMessage message) { } private void serializeHostKeyBytes() { - appendInt( - message.getHostKeyBytesLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Host key length: {}", message.getHostKeyBytesLength().getValue()); - appendBytes(message.getHostKeyBytes().getValue()); - LOGGER.debug( - "Host key: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); + Integer hostKeyBytesLength = message.getHostKeyBytesLength().getValue(); + LOGGER.debug("Host key length: {}", hostKeyBytesLength); + appendInt(hostKeyBytesLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] hostKeyBytes = message.getHostKeyBytes().getValue(); + LOGGER.debug("Host key: {}", () -> ArrayConverter.bytesToRawHexString(hostKeyBytes)); + appendBytes(hostKeyBytes); } private void serializeEphemeralPublicKey() { - appendInt( - message.getEphemeralPublicKeyLength().getValue(), - DataFormatConstants.MPINT_SIZE_LENGTH); - LOGGER.debug( - "Ephemeral public key (server) length: {}", - message.getEphemeralPublicKeyLength().getValue()); + Integer ephemeralPublicKeyLength = message.getEphemeralPublicKeyLength().getValue(); + LOGGER.debug("Ephemeral public key (server) length: {}", ephemeralPublicKeyLength); + appendInt(ephemeralPublicKeyLength, DataFormatConstants.MPINT_SIZE_LENGTH); appendBytes(message.getEphemeralPublicKey().getValue().toByteArray()); LOGGER.debug( "Ephemeral public key (server): {}", message.getEphemeralPublicKey().getValue()); } private void serializeSignature() { - appendInt(message.getSignatureLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); + Integer signatureLength = message.getSignatureLength().getValue(); + LOGGER.debug("Signature length: {}", signatureLength); + appendInt(signatureLength, DataFormatConstants.STRING_SIZE_LENGTH); appendBytes(message.getSignature().getValue()); LOGGER.debug("Signature: {}", message.getSignature()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DisconnectMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DisconnectMessageSerializer.java index 66575002b..a07914a3a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DisconnectMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/DisconnectMessageSerializer.java @@ -34,21 +34,20 @@ private void serializeReasonCode() { } private void serializeDescription() { - LOGGER.debug("Description length: {}", message.getDescriptionLength().getValue()); - appendInt( - message.getDescriptionLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + Integer descriptionLength = message.getDescriptionLength().getValue(); + LOGGER.debug("Description length: {}", descriptionLength); + appendInt(descriptionLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug("Description: {}", message.getDescription().getValue()); appendString(message.getDescription().getValue(), StandardCharsets.UTF_8); } private void serializeLanguageTag() { - LOGGER.debug("Language tag length: {}", message.getLanguageTagLength().getValue()); - appendInt( - message.getLanguageTagLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Language tag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); - appendString(message.getLanguageTag().getValue(), StandardCharsets.US_ASCII); + Integer languageTagLength = message.getLanguageTagLength().getValue(); + LOGGER.debug("Language tag length: {}", languageTagLength); + appendInt(languageTagLength, DataFormatConstants.STRING_SIZE_LENGTH); + String languageTag = message.getLanguageTag().getValue(); + LOGGER.debug("Language tag: {}", () -> backslashEscapeString(languageTag)); + appendString(languageTag, StandardCharsets.US_ASCII); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeInitMessageSerializer.java index 288bd79b0..97a5d652e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeInitMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeInitMessageSerializer.java @@ -24,18 +24,14 @@ public EcdhKeyExchangeInitMessageSerializer(EcdhKeyExchangeInitMessage message) } private void serializeEphemeralPublicKey() { - LOGGER.debug( - "Ephemeral public key (client) length: {}", - message.getEphemeralPublicKeyLength().getValue()); - appendInt( - message.getEphemeralPublicKeyLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + Integer ephemeralPublicKeyLength = message.getEphemeralPublicKeyLength().getValue(); + LOGGER.debug("Ephemeral public key (client) length: {}", ephemeralPublicKeyLength); + appendInt(ephemeralPublicKeyLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] ephemeralPublicKey = message.getEphemeralPublicKey().getValue(); LOGGER.debug( "Ephemeral public key (client): {}", - () -> - ArrayConverter.bytesToRawHexString( - message.getEphemeralPublicKey().getValue())); - appendBytes(message.getEphemeralPublicKey().getValue()); + () -> ArrayConverter.bytesToRawHexString(ephemeralPublicKey)); + appendBytes(ephemeralPublicKey); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeReplyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeReplyMessageSerializer.java index 70ecb4844..711856889 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeReplyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/EcdhKeyExchangeReplyMessageSerializer.java @@ -24,28 +24,26 @@ public EcdhKeyExchangeReplyMessageSerializer(EcdhKeyExchangeReplyMessage message } private void serializeHostKeyBytes(EcdhKeyExchangeReplyMessage msg) { - appendInt(msg.getHostKeyBytesLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Host key bytes length: {}", msg.getHostKeyBytesLength().getValue()); - appendBytes(msg.getHostKeyBytes().getValue()); - LOGGER.debug( - "Host key bytes: {}", - () -> ArrayConverter.bytesToRawHexString(msg.getHostKeyBytes().getValue())); + Integer hostKeyBytesLength = msg.getHostKeyBytesLength().getValue(); + LOGGER.debug("Host key bytes length: {}", hostKeyBytesLength); + appendInt(hostKeyBytesLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] hostKeyBytes = msg.getHostKeyBytes().getValue(); + LOGGER.debug("Host key bytes: {}", () -> ArrayConverter.bytesToRawHexString(hostKeyBytes)); + appendBytes(hostKeyBytes); } private void serializeEphemeralPublicKey(EcdhKeyExchangeReplyMessage msg) { - appendInt( - msg.getEphemeralPublicKeyLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Ephemeral public key (server) length: {}", - msg.getEphemeralPublicKeyLength().getValue()); + Integer ephemeralPublicKeyLength = msg.getEphemeralPublicKeyLength().getValue(); + LOGGER.debug("Ephemeral public key (server) length: {}", ephemeralPublicKeyLength); + appendInt(ephemeralPublicKeyLength, DataFormatConstants.STRING_SIZE_LENGTH); appendBytes(msg.getEphemeralPublicKey().getValue()); LOGGER.debug("Ephemeral public key (server): {}", msg.getEphemeralPublicKey()); } private void serializeSignature(EcdhKeyExchangeReplyMessage msg) { - appendInt(msg.getSignatureLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Signature length: {}", msg.getSignatureLength().getValue()); + Integer signatureLength = msg.getSignatureLength().getValue(); + LOGGER.debug("Signature length: {}", signatureLength); + appendInt(signatureLength, DataFormatConstants.STRING_SIZE_LENGTH); appendBytes(msg.getSignature().getValue()); LOGGER.debug("Signature: {}", msg.getSignature()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ExtensionInfoMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ExtensionInfoMessageSerializer.java index c83806aa1..6cafade76 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ExtensionInfoMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ExtensionInfoMessageSerializer.java @@ -22,8 +22,9 @@ public ExtensionInfoMessageSerializer(ExtensionInfoMessage message) { } private void serializeExtensionCount() { - appendInt(message.getExtensionCount().getValue(), DataFormatConstants.UINT32_SIZE); - LOGGER.debug("Extension count: {}", message.getExtensionCount().getValue()); + Integer extensionCount = message.getExtensionCount().getValue(); + LOGGER.debug("Extension count: {}", extensionCount); + appendInt(extensionCount, DataFormatConstants.UINT32_SIZE); } private void serializeExtensions() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java index 26b6c34eb..41a13e03e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java @@ -37,14 +37,13 @@ protected void serializeMessageSpecificContents() { } private void serializeHostKeyBytes() { - appendInt( - message.getHostKeyBytesLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Host key bytes length: {}", message.getHostKeyBytesLength().getValue()); + Integer hostKeyBytesLength = message.getHostKeyBytesLength().getValue(); + LOGGER.debug("Host key bytes length: {}", hostKeyBytesLength); + appendInt(hostKeyBytesLength, DataFormatConstants.STRING_SIZE_LENGTH); - appendBytes(message.getHostKeyBytes().getValue()); - LOGGER.debug( - "Host key bytes: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); + byte[] hostKeyBytes = message.getHostKeyBytes().getValue(); + LOGGER.debug("Host key bytes: {}", () -> ArrayConverter.bytesToRawHexString(hostKeyBytes)); + appendBytes(hostKeyBytes); } private void serializeHybridKey() { @@ -78,8 +77,9 @@ private void serializeHybridKey() { } private void serializeSignature() { - appendInt(message.getSignatureLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); + Integer signatureLength = message.getSignatureLength().getValue(); + LOGGER.debug("Signature length: {}", signatureLength); + appendInt(signatureLength, DataFormatConstants.STRING_SIZE_LENGTH); appendBytes(message.getSignature().getValue()); LOGGER.debug("Signature: {}", message.getSignature()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/IgnoreMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/IgnoreMessageSerializer.java index 02ee18a9d..df6af08ac 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/IgnoreMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/IgnoreMessageSerializer.java @@ -23,11 +23,12 @@ public IgnoreMessageSerializer(IgnoreMessage message) { } private void serializeData() { - LOGGER.debug("Data length: {}", message.getDataLength().getValue()); - appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); - appendBytes(message.getData().getValue()); + Integer dataLength = message.getDataLength().getValue(); + LOGGER.debug("Data length: {}", dataLength); + appendInt(dataLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] data = message.getData().getValue(); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); + appendBytes(data); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/KeyExchangeInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/KeyExchangeInitMessageSerializer.java index 1da835afe..3c158cae1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/KeyExchangeInitMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/KeyExchangeInitMessageSerializer.java @@ -31,162 +31,149 @@ private void serializeCookie() { } private void serializeKeyExchangeAlgorithms() { + Integer keyExchangeAlgorithmsLength = message.getKeyExchangeAlgorithmsLength().getValue(); + LOGGER.debug("Key exchange algorithms: {}", keyExchangeAlgorithmsLength); + appendInt(keyExchangeAlgorithmsLength, DataFormatConstants.STRING_SIZE_LENGTH); + String keyExchangeAlgorithms = message.getKeyExchangeAlgorithms().getValue(); LOGGER.debug( - "Key exchange algorithms: {}", message.getKeyExchangeAlgorithmsLength().getValue()); - appendInt( - message.getKeyExchangeAlgorithmsLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Key exchange algorithms: {}", - () -> backslashEscapeString(message.getKeyExchangeAlgorithms().getValue())); - appendString(message.getKeyExchangeAlgorithms().getValue(), StandardCharsets.US_ASCII); + "Key exchange algorithms: {}", () -> backslashEscapeString(keyExchangeAlgorithms)); + appendString(keyExchangeAlgorithms, StandardCharsets.US_ASCII); } private void serializeServerHostKeyAlgorithms() { + Integer serverHostKeyAlgorithmsLength = + message.getServerHostKeyAlgorithmsLength().getValue(); + LOGGER.debug("Server host key algorithms: {}", serverHostKeyAlgorithmsLength); + appendInt(serverHostKeyAlgorithmsLength, DataFormatConstants.STRING_SIZE_LENGTH); + String serverHostKeyAlgorithms = message.getServerHostKeyAlgorithms().getValue(); LOGGER.debug( "Server host key algorithms: {}", - message.getServerHostKeyAlgorithmsLength().getValue()); - appendInt( - message.getServerHostKeyAlgorithmsLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Server host key algorithms: {}", - () -> backslashEscapeString(message.getServerHostKeyAlgorithms().getValue())); - appendString(message.getServerHostKeyAlgorithms().getValue(), StandardCharsets.US_ASCII); + () -> backslashEscapeString(serverHostKeyAlgorithms)); + appendString(serverHostKeyAlgorithms, StandardCharsets.US_ASCII); } private void serializeEncryptionAlgorithmsClientToServer() { + Integer encryptionAlgorithmsClientToServerLength = + message.getEncryptionAlgorithmsClientToServerLength().getValue(); LOGGER.debug( "Encryption algorithms length (client to server): {}", - message.getEncryptionAlgorithmsClientToServerLength().getValue()); - appendInt( - message.getEncryptionAlgorithmsClientToServerLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + encryptionAlgorithmsClientToServerLength); + appendInt(encryptionAlgorithmsClientToServerLength, DataFormatConstants.STRING_SIZE_LENGTH); + String encryptionAlgorithmsClientToServer = + message.getEncryptionAlgorithmsClientToServer().getValue(); LOGGER.debug( "Encryption algorithms (client to server): {}", - () -> - backslashEscapeString( - message.getEncryptionAlgorithmsClientToServer().getValue())); - appendString( - message.getEncryptionAlgorithmsClientToServer().getValue(), - StandardCharsets.US_ASCII); + () -> backslashEscapeString(encryptionAlgorithmsClientToServer)); + appendString(encryptionAlgorithmsClientToServer, StandardCharsets.US_ASCII); } private void serializeEncryptionAlgorithmsServerToClient() { + Integer encryptionAlgorithmsServerToClientLength = + message.getEncryptionAlgorithmsServerToClientLength().getValue(); LOGGER.debug( "Encryption algorithms length (server to client): {}", - message.getEncryptionAlgorithmsServerToClientLength().getValue()); - appendInt( - message.getEncryptionAlgorithmsServerToClientLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + encryptionAlgorithmsServerToClientLength); + appendInt(encryptionAlgorithmsServerToClientLength, DataFormatConstants.STRING_SIZE_LENGTH); + String encryptionAlgorithmsServerToClient = + message.getEncryptionAlgorithmsServerToClient().getValue(); LOGGER.debug( "Encryption algorithms (server to client): {}", - () -> - backslashEscapeString( - message.getEncryptionAlgorithmsServerToClient().getValue())); - appendString( - message.getEncryptionAlgorithmsServerToClient().getValue(), - StandardCharsets.US_ASCII); + () -> backslashEscapeString(encryptionAlgorithmsServerToClient)); + appendString(encryptionAlgorithmsServerToClient, StandardCharsets.US_ASCII); } private void serializeMacAlgorithmsClientToServer() { + Integer macAlgorithmsClientToServerLength = + message.getMacAlgorithmsClientToServerLength().getValue(); LOGGER.debug( - "MAC algorithms length (client to server): {}", - message.getMacAlgorithmsClientToServerLength().getValue()); - appendInt( - message.getMacAlgorithmsClientToServerLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + "MAC algorithms length (client to server): {}", macAlgorithmsClientToServerLength); + appendInt(macAlgorithmsClientToServerLength, DataFormatConstants.STRING_SIZE_LENGTH); + String macAlgorithmsClientToServer = message.getMacAlgorithmsClientToServer().getValue(); LOGGER.debug( "MAC algorithms (client to server): {}", - () -> backslashEscapeString(message.getMacAlgorithmsClientToServer().getValue())); - appendString( - message.getMacAlgorithmsClientToServer().getValue(), StandardCharsets.US_ASCII); + () -> backslashEscapeString(macAlgorithmsClientToServer)); + appendString(macAlgorithmsClientToServer, StandardCharsets.US_ASCII); } private void serializeMacAlgorithmsServerToClient() { + Integer macAlgorithmsServerToClientLength = + message.getMacAlgorithmsServerToClientLength().getValue(); LOGGER.debug( - "MAC algorithms length (server to client): {}", - message.getMacAlgorithmsServerToClientLength().getValue()); - appendInt( - message.getMacAlgorithmsServerToClientLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + "MAC algorithms length (server to client): {}", macAlgorithmsServerToClientLength); + appendInt(macAlgorithmsServerToClientLength, DataFormatConstants.STRING_SIZE_LENGTH); + String macAlgorithmsServerToClient = message.getMacAlgorithmsServerToClient().getValue(); LOGGER.debug( "MAC algorithms (server to client): {}", - () -> backslashEscapeString(message.getMacAlgorithmsServerToClient().getValue())); - appendString( - message.getMacAlgorithmsServerToClient().getValue(), StandardCharsets.US_ASCII); + () -> backslashEscapeString(macAlgorithmsServerToClient)); + appendString(macAlgorithmsServerToClient, StandardCharsets.US_ASCII); } private void serializeCompressionMethodsClientToServer() { + Integer compressionMethodsClientToServerLength = + message.getCompressionMethodsClientToServerLength().getValue(); LOGGER.debug( "Compression algorithms length (client to server): {}", - message.getCompressionMethodsClientToServerLength().getValue()); - appendInt( - message.getCompressionMethodsClientToServerLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + compressionMethodsClientToServerLength); + appendInt(compressionMethodsClientToServerLength, DataFormatConstants.STRING_SIZE_LENGTH); + String compressionMethodsClientToServer = + message.getCompressionMethodsClientToServer().getValue(); LOGGER.debug( "Compression algorithms (client to server): {}", - () -> - backslashEscapeString( - message.getCompressionMethodsClientToServer().getValue())); - appendString( - message.getCompressionMethodsClientToServer().getValue(), - StandardCharsets.US_ASCII); + () -> backslashEscapeString(compressionMethodsClientToServer)); + appendString(compressionMethodsClientToServer, StandardCharsets.US_ASCII); } private void serializeCompressionMethodsServerToClient() { + Integer compressionMethodsServerToClientLength = + message.getCompressionMethodsServerToClientLength().getValue(); LOGGER.debug( "Compression algorithms length (server to client): {}", - message.getCompressionMethodsServerToClientLength().getValue()); - appendInt( - message.getCompressionMethodsServerToClientLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + compressionMethodsServerToClientLength); + appendInt(compressionMethodsServerToClientLength, DataFormatConstants.STRING_SIZE_LENGTH); + String compressionMethodsServerToClient = + message.getCompressionMethodsServerToClient().getValue(); LOGGER.debug( "Compression algorithms (server to client): {}", - () -> - backslashEscapeString( - message.getCompressionMethodsServerToClient().getValue())); - appendString( - message.getCompressionMethodsServerToClient().getValue(), - StandardCharsets.US_ASCII); + () -> backslashEscapeString(compressionMethodsServerToClient)); + appendString(compressionMethodsServerToClient, StandardCharsets.US_ASCII); } private void serializeLanguagesClientToServer() { - LOGGER.debug( - "Languages length (client to server): {}", - message.getLanguagesClientToServerLength().getValue()); - appendInt( - message.getLanguagesClientToServerLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + Integer languagesClientToServerLength = + message.getLanguagesClientToServerLength().getValue(); + LOGGER.debug("Languages length (client to server): {}", languagesClientToServerLength); + appendInt(languagesClientToServerLength, DataFormatConstants.STRING_SIZE_LENGTH); + String languagesClientToServer = message.getLanguagesClientToServer().getValue(); LOGGER.debug( "Languages (client to server): {}", - () -> backslashEscapeString(message.getLanguagesClientToServer().getValue())); - appendString(message.getLanguagesClientToServer().getValue(), StandardCharsets.US_ASCII); + () -> backslashEscapeString(languagesClientToServer)); + appendString(languagesClientToServer, StandardCharsets.US_ASCII); } private void serializeLanguagesServerToClient() { - LOGGER.debug( - "Languages length (server to client): {}", - message.getLanguagesServerToClientLength().getValue()); - appendInt( - message.getLanguagesServerToClientLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + Integer languagesServerToClientLength = + message.getLanguagesServerToClientLength().getValue(); + LOGGER.debug("Languages length (server to client): {}", languagesServerToClientLength); + appendInt(languagesServerToClientLength, DataFormatConstants.STRING_SIZE_LENGTH); + String languagesServerToClient = message.getLanguagesServerToClient().getValue(); LOGGER.debug( "Languages (server to client): {}", - () -> backslashEscapeString(message.getLanguagesServerToClient().getValue())); - appendString(message.getLanguagesServerToClient().getValue(), StandardCharsets.US_ASCII); + () -> backslashEscapeString(languagesServerToClient)); + appendString(languagesServerToClient, StandardCharsets.US_ASCII); } private void serializeFirstKeyExchangePacketFollows() { + Byte firstKeyExchangePacketFollows = message.getFirstKeyExchangePacketFollows().getValue(); LOGGER.debug( "First key exchange packet follows: {}", - Converter.byteToBoolean(message.getFirstKeyExchangePacketFollows().getValue())); - appendByte(message.getFirstKeyExchangePacketFollows().getValue()); + () -> Converter.byteToBoolean(firstKeyExchangePacketFollows)); + appendByte(firstKeyExchangePacketFollows); } private void serializeReserved() { - LOGGER.debug("Reserved: {}", message.getReserved().getValue()); - appendInt(message.getReserved().getValue(), DataFormatConstants.UINT32_SIZE); + Integer reserved = message.getReserved().getValue(); + LOGGER.debug("Reserved: {}", reserved); + appendInt(reserved, DataFormatConstants.UINT32_SIZE); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PingMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PingMessageSerializer.java index 5601d598d..da9ce349a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PingMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PingMessageSerializer.java @@ -24,10 +24,11 @@ public PingMessageSerializer(PingMessage message) { @Override protected void serializeMessageSpecificContents() { - LOGGER.debug("Data length: {}", message.getDataLength().getValue()); - appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); - appendBytes(message.getData().getValue()); + Integer dataLength = message.getDataLength().getValue(); + LOGGER.debug("Data length: {}", dataLength); + appendInt(dataLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] data = message.getData().getValue(); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); + appendBytes(data); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PongMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PongMessageSerializer.java index fb1a8ac2e..f10b0027f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PongMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/PongMessageSerializer.java @@ -24,10 +24,11 @@ public PongMessageSerializer(PongMessage message) { @Override protected void serializeMessageSpecificContents() { - LOGGER.debug("Data length: {}", message.getDataLength().getValue()); - appendInt(message.getDataLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug( - "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); - appendBytes(message.getData().getValue()); + Integer dataLength = message.getDataLength().getValue(); + LOGGER.debug("Data length: {}", dataLength); + appendInt(dataLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] data = message.getData().getValue(); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); + appendBytes(data); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeDoneMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeDoneMessageSerializer.java index f8c90c185..42b0854e4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeDoneMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeDoneMessageSerializer.java @@ -23,8 +23,9 @@ public RsaKeyExchangeDoneMessageSerializer(RsaKeyExchangeDoneMessage message) { } private void serializeSignature() { - LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); - appendInt(message.getSignatureLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + Integer signatureLength = message.getSignatureLength().getValue(); + LOGGER.debug("Signature length: {}", signatureLength); + appendInt(signatureLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug("Signature: {}", message.getSignature()); appendBytes(message.getSignature().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangePubkeyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangePubkeyMessageSerializer.java index 5cd86fcc5..bca5811db 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangePubkeyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangePubkeyMessageSerializer.java @@ -23,9 +23,9 @@ public RsaKeyExchangePubkeyMessageSerializer(RsaKeyExchangePubkeyMessage message } private void serializeHostKeyBytes() { - LOGGER.debug("Host key bytes length: {}", message.getHostKeyBytesLength().getValue()); - appendInt( - message.getHostKeyBytesLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + Integer hostKeyBytesLength = message.getHostKeyBytesLength().getValue(); + LOGGER.debug("Host key bytes length: {}", hostKeyBytesLength); + appendInt(hostKeyBytesLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug("Host key bytes: {}", message.getHostKeyBytes()); appendBytes(message.getHostKeyBytes().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeSecretMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeSecretMessageSerializer.java index 2bd05dcbc..8e2ea0b40 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeSecretMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeSecretMessageSerializer.java @@ -24,10 +24,9 @@ public RsaKeyExchangeSecretMessageSerializer(RsaKeyExchangeSecretMessage message } private void serializeEncryptedSecret() { - LOGGER.debug("Encrypted secret length: {}", message.getEncryptedSecretLength().getValue()); - appendInt( - message.getEncryptedSecretLength().getValue(), - DataFormatConstants.MPINT_SIZE_LENGTH); + Integer encryptedSecretLength = message.getEncryptedSecretLength().getValue(); + LOGGER.debug("Encrypted secret length: {}", encryptedSecretLength); + appendInt(encryptedSecretLength, DataFormatConstants.MPINT_SIZE_LENGTH); LOGGER.debug( "Encrypted secret: {}", Arrays.toString(message.getEncryptedSecret().getValue())); appendBytes(message.getEncryptedSecret().getValue()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceAcceptMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceAcceptMessageSerializer.java index a13e2993a..853e3c799 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceAcceptMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceAcceptMessageSerializer.java @@ -25,12 +25,12 @@ public ServiceAcceptMessageSerializer(ServiceAcceptMessage message) { } private void serializeServiceName() { - LOGGER.debug("Service name length: {}", message.getServiceNameLength().getValue()); - appendInt(message.getServiceNameLength().getValue(), DataFormatConstants.UINT32_SIZE); - LOGGER.debug( - "Service name: {}", - () -> backslashEscapeString(message.getServiceName().getValue())); - appendString(message.getServiceName().getValue(), StandardCharsets.US_ASCII); + Integer serviceNameLength = message.getServiceNameLength().getValue(); + LOGGER.debug("Service name length: {}", serviceNameLength); + appendInt(serviceNameLength, DataFormatConstants.UINT32_SIZE); + String serviceName = message.getServiceName().getValue(); + LOGGER.debug("Service name: {}", () -> backslashEscapeString(serviceName)); + appendString(serviceName, StandardCharsets.US_ASCII); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceRequestMessageSerializer.java index 3719d6c14..08904ddfa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/ServiceRequestMessageSerializer.java @@ -25,12 +25,12 @@ public ServiceRequestMessageSerializer(ServiceRequestMessage message) { } private void serializeServiceName() { - LOGGER.debug("Service name length: {}", message.getServiceNameLength().getValue()); - appendInt(message.getServiceNameLength().getValue(), DataFormatConstants.UINT32_SIZE); - LOGGER.debug( - "Service name: {}", - () -> backslashEscapeString(message.getServiceName().getValue())); - appendString(message.getServiceName().getValue(), StandardCharsets.US_ASCII); + Integer serviceNameLength = message.getServiceNameLength().getValue(); + LOGGER.debug("Service name length: {}", serviceNameLength); + appendInt(serviceNameLength, DataFormatConstants.UINT32_SIZE); + String serviceName = message.getServiceName().getValue(); + LOGGER.debug("Service name: {}", () -> backslashEscapeString(serviceName)); + appendString(serviceName, StandardCharsets.US_ASCII); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/AbstractExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/AbstractExtensionSerializer.java index fa45d4724..31fe1b139 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/AbstractExtensionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/AbstractExtensionSerializer.java @@ -33,8 +33,9 @@ protected final void serializeBytes() { } private void serializeExtensionName() { - LOGGER.debug("Extension name length: {}", extension.getNameLength().getValue()); - appendInt(extension.getNameLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + Integer nameLength = extension.getNameLength().getValue(); + LOGGER.debug("Extension name length: {}", nameLength); + appendInt(nameLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug("Extension name: {}", extension.getName().getValue()); appendString(extension.getName().getValue(), StandardCharsets.US_ASCII); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/DelayCompressionExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/DelayCompressionExtensionSerializer.java index 8030c3830..110f96953 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/DelayCompressionExtensionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/DelayCompressionExtensionSerializer.java @@ -30,21 +30,18 @@ protected void serializeExtensionValue() { } private void serializeCompressionMethodsLength() { - LOGGER.debug( - "Compression methods length: {}", - extension.getCompressionMethodsLength().getValue()); - appendInt( - extension.getCompressionMethodsLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + Integer compressionMethodsLength = extension.getCompressionMethodsLength().getValue(); + LOGGER.debug("Compression methods length: {}", compressionMethodsLength); + appendInt(compressionMethodsLength, DataFormatConstants.STRING_SIZE_LENGTH); } private void serializeCompressionMethodsClientToServer() { + Integer compressionMethodsClientToServerLength = + extension.getCompressionMethodsClientToServerLength().getValue(); LOGGER.debug( "Compression algorithms length (client to server): {}", - extension.getCompressionMethodsClientToServerLength().getValue()); - appendInt( - extension.getCompressionMethodsClientToServerLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + compressionMethodsClientToServerLength); + appendInt(compressionMethodsClientToServerLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Compression algorithms (client to server): {}", extension.getCompressionMethodsClientToServer().getValue()); @@ -54,12 +51,12 @@ private void serializeCompressionMethodsClientToServer() { } private void serializeCompressionMethodsServerToClient() { + Integer compressionMethodsServerToClientLength = + extension.getCompressionMethodsServerToClientLength().getValue(); LOGGER.debug( "Compression algorithms length (server to client): {}", - extension.getCompressionMethodsServerToClientLength().getValue()); - appendInt( - extension.getCompressionMethodsServerToClientLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + compressionMethodsServerToClientLength); + appendInt(compressionMethodsServerToClientLength, DataFormatConstants.STRING_SIZE_LENGTH); LOGGER.debug( "Compression algorithms (server to client): {}", extension.getCompressionMethodsServerToClient().getValue()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/PingExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/PingExtensionSerializer.java index a2e8581da..cbca347a5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/PingExtensionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/PingExtensionSerializer.java @@ -28,8 +28,9 @@ protected void serializeExtensionValue() { } private void serializeVersionLength() { - LOGGER.debug("Version length: {}", extension.getVersionLength().getValue()); - appendInt(extension.getVersionLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); + Integer versionLength = extension.getVersionLength().getValue(); + LOGGER.debug("Version length: {}", versionLength); + appendInt(versionLength, DataFormatConstants.STRING_SIZE_LENGTH); } private void serializeVersion() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/ServerSigAlgsExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/ServerSigAlgsExtensionSerializer.java index 4d33244c7..9e1ef1ad9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/ServerSigAlgsExtensionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/ServerSigAlgsExtensionSerializer.java @@ -29,12 +29,11 @@ protected void serializeExtensionValue() { } private void serializeAcceptedPublicKeyAlgorithmsLength() { + Integer acceptedPublicKeyAlgorithmsLength = + extension.getAcceptedPublicKeyAlgorithmsLength().getValue(); LOGGER.debug( - "Accepted public key algorithms length: {}", - extension.getAcceptedPublicKeyAlgorithmsLength().getValue()); - appendInt( - extension.getAcceptedPublicKeyAlgorithmsLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + "Accepted public key algorithms length: {}", acceptedPublicKeyAlgorithmsLength); + appendInt(acceptedPublicKeyAlgorithmsLength, DataFormatConstants.STRING_SIZE_LENGTH); } private void serializeAcceptedPublicKeyAlgorithms() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/UnknownExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/UnknownExtensionSerializer.java index 40e198082..675a6a6e8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/UnknownExtensionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/UnknownExtensionSerializer.java @@ -23,8 +23,9 @@ public UnknownExtensionSerializer(UnknownExtension extension) { @Override protected void serializeExtensionValue() { - LOGGER.debug("Extension value length: {}", extension.getValueLength().getValue()); - appendInt(extension.getValueLength().getValue(), DataFormatConstants.UINT32_SIZE); + Integer valueLength = extension.getValueLength().getValue(); + LOGGER.debug("Extension value length: {}", valueLength); + appendInt(valueLength, DataFormatConstants.UINT32_SIZE); LOGGER.debug( "Extension value: {}", () -> ArrayConverter.bytesToHexString(extension.getValue())); appendBytes(extension.getValue().getValue()); From 0ecd981eabda518bd1dcc5a5595186d64f6f8836 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 2 Nov 2024 19:26:59 +0100 Subject: [PATCH 036/203] Use lazy logging for nearly all parser methods. Patterns used: (\w+)(\s*\.set)(\w+)\((\s*parseLongField\(\s*[^;]+)\); (\s*)(LOGGER\s*\.debug\(\s*"[^"]+",\s*)\1\s*.get\3\(\)\s*\.getValue\(\)(\);) Example: message.setMaximumPacketLength(parseLongField(DataFormatConstants.UINT64_SIZE)); LOGGER.debug("MaximumPacketLength: {}", message.getMaximumPacketLength().getValue()); 1. message 2. .set 3. MaximumPacketLength 4. parseLongField(DataFormatConstants.UINT64_SIZE)); 5. \s* 6. LOGGER.debug("MaximumPacketLength: {}", 7. ); long \l$3 = $4; $5$1$2$3(\l$3); $5$6\l$3$7 ------------------------------------------- (\w+)(\s*\.set)(\w+)\((\s*parseIntField\(\s*[^;]+)\); (\s*)(LOGGER\s*\.debug\(\s*"[^"]+",\s*)\1\s*\.get\3\(\)\s*\.getValue\(\)(\);) (\s*)(\1\s*\.set(\w+)\()\s*(parseByteString\(\s*)\1\s*\.get\3\(\)\s*\.getValue\(\)([^;]*\))(\);) (\s*)(LOGGER\s*\.debug[^;]*)\1\s*\.get\10\(\)\s*\.getValue\(\) Example: message.setPubKeyAlgorithmLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug( "Public key algorithm length: {}", message.getPubKeyAlgorithmLength().getValue()); message.setPubKeyAlgorithm(parseByteString(message.getPubKeyAlgorithmLength().getValue())); LOGGER.debug( "Public key algorithm: {}", () -> backslashEscapeString(message.getPubKeyAlgorithm().getValue())); 1. message 2. .set 3. PubKeyAlgorithmLength 4. parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); 5. \s* 6. LOGGER.debug("Public key algorithm length: {}", 7. ); 8. \s* 9. message.setPubKeyAlgorithm( 10. PubKeyAlgorithm 11. parseByteString( 12. ) 13. ); 14. \s* 15. LOGGER.debug( "Public key algorithm: {}", () -> backslashEscapeString( int \l$3 = $4; $5$1$2$3(\l$3); $5$6\l$3$7 $5String \l$10 = $11\l$3$12; $8$9\l$10$13 $14$15\l$10 ------------------------------------------- (\w+)(\s*\.set)(\w+)\((\s*parseIntField\(\s*[^;]+)\); (\s*)(LOGGER\s*\.debug\(\s*"[^"]+",\s*)\1\s*\.get\3\(\)\s*\.getValue\(\)(\);) (\s*)(\1\s*\.set(\w+)\()\s*(parseByteArrayField\(\s*)\1\s*\.get\3\(\)\s*\.getValue\(\)([^;]*\))(\);) (\s*)(LOGGER\s*\.debug[^;]*)\1\s*\.get\10\(\)\s*\.getValue\(\) Example: message.setSignatureLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); message.setSignature(parseByteArrayField(message.getSignatureLength().getValue())); LOGGER.debug("Signature: {}", message.getSignature().getValue()); 1. signature 2. .set 3. SignatureLength 4. parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); 5. \s* 6. LOGGER.debug("Signature length: {}", 7. ); 8. \s* 9. signature.setSignatureBytes( 10. PubKeyAlgorithm 11. parseByteArrayField( 12. ) 13. ); 14. \s* 15. LOGGER.debug( "Signature bytes: {}", () -> ArrayConverter.bytesToHexString( int \l$3 = $4; $5$1$2$3(\l$3); $5$6\l$3$7 $5byte[] \l$10 = $11\l$3$12; $8$9\l$10$13 $14$15\l$10 ------------------------------------------- (\w+)(\s*\.set)(\w+)\((\s*parseIntField\(\s*[^;]+)\); (\s*)(LOGGER\s*\.debug\(\s*"[^"]+",\s*)\1\s*\.get\3\(\)\s*\.getValue\(\)(\);) (\s*)(\1\s*\.set(\w+)\()\s*(parseBigIntField\(\s*)\1\s*\.get\3\(\)\s*\.getValue\(\)([^;]*\))(\);) (\s*)(LOGGER\s*\.debug\(\s*[^;]*)\1\s*\.get\10\(\)\s*\.getByteArray\(\) message.setGroupGeneratorLength(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug("Group generator length: {}", message.getGroupGeneratorLength().getValue()); message.setGroupGenerator(parseBigIntField(message.getGroupGeneratorLength().getValue())); LOGGER.debug( "Group generator: {}", () -> ArrayConverter.bytesToRawHexString( message.getGroupGenerator().getByteArray())); int \l$3 = $4; $5$1$2$3(\l$3); $5$6\l$3$7 $5BigInteger \l$10 = $11\l$3$12; $8$9\l$10$13 $14$15\l$10 ------------------------------------------- (\w+)(\s*\.set)(\w+)\((\s*parseIntField\(\s*[^;]+)\); (\s*)(LOGGER\s*\.debug\(\s*"[^"]+",\s*)\1\s*\.get\3\(\)\s*(\);) (\s*)(\1\s*\.set(\w+)\()\s*(parseBigIntField\(\s*)\1\s*\.get\3\(\)\s*\.getValue\(\)([^;]*\))(\);) (\s*)(LOGGER\s*\.debug\(\s*[^;]*)\1\s*\.get\10\(\)\s*\.getValue\(\) (\w+)(\s*\.set)(\w+)\((\s*parseIntField\(\s*[^;]+)\); (\s*)(LOGGER\s*\.debug\(\s*"[^"]+",\s*)\1\s*\.get\3\(\)\s*\.getValue\(\)(\);) (\s*)(\1\s*\.set(\w+)\()\s*(parseBigIntField\(\s*)\1\s*\.get\3\(\)\s*\.getValue\(\)([^;]*\))(\);) (\s*)(LOGGER\s*\.debug\(\s*[^;]*)\1\s*\.get\10\(\)\s*\.getValue\(\) message.setEphemeralPublicKeyLength(parseIntField(DataFormatConstants.UINT32_SIZE)); LOGGER.debug( "Ephemeral public key (client) length: {}", message.getEphemeralPublicKeyLength()); message.setEphemeralPublicKey( parseBigIntField(message.getEphemeralPublicKeyLength().getValue())); LOGGER.debug( "Ephemeral public key (client): {}", message.getEphemeralPublicKey().getValue()); ------------------------------------------- (\w+)(\s*\.set)(\w+)\((\s*parseIntField\(\s*[^;]+)\); (\s*)(LOGGER\s*\.debug\(\s*"[^"]+",\s*)\1\s*\.get\3\(\)\s*\.getValue\(\)(\);) (\s*)(\1\s*\.set(\w+)\()\s*(parseByteArrayField\(\s*)\1\s*\.get\3\(\)\s*\.getValue\(\)([^;]*\))(\);) (\s*)(LOGGER\s*\.debug[^;]*)\1\s*\.get\10\(\)\s*\) Example: message.setSignatureLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); message.setSignature(parseByteArrayField(message.getSignatureLength().getValue())); LOGGER.debug("Signature: {}", message.getSignature()); 1. signature 2. .set 3. SignatureLength 4. parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); 5. \s* 6. LOGGER.debug("Signature length: {}", 7. ); 8. \s* 9. signature.setSignatureBytes( 10. PubKeyAlgorithm 11. parseByteArrayField( 12. ) 13. ); 14. \s* 15. LOGGER.debug( "Signature bytes: {}", () -> ArrayConverter.bytesToHexString( int \l$3 = $4; $5$1$2$3(\l$3); $5$6\l$3$7 $5byte[] \l$10 = $11\l$3$12; $8$9\l$10$13 $14$15\l$10) ------------------------------------------- (\w+)(\s*\.set)(\w+)\((\s*parseIntField\(\s*[^;]+)\); (\s*)(LOGGER\s*\.debug\(\s*"[^"]+",\s*)\1\s*.get\3\(\)\s*\.getValue\(\)(\);) (\s*)(\1\s*\.set\w+\(\s*parseByteString\(\s*)\1\s*.get\3\(\)\s*\.getValue\(\) Example: message.setPubKeyAlgorithmLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug( "Public key algorithm length: {}", message.getPubKeyAlgorithmLength().getValue()); message.setPubKeyAlgorithm(parseByteString(message.getPubKeyAlgorithmLength().getValue())); 1. message 2. .set 3. PubKeyAlgorithmLength 4. parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); 5. \s* 6. LOGGER.debug("Public key algorithm length: {}", 7. ); 8. \s* 9. message.setPubKeyAlgorithm(parseByteString( int \l$3 = $4; $5$1$2$3(\l$3); $5$6\l$3$7 $8$9\l$3 --------------------------------------------------- (\w+)(\s*\.set)(\w+)\((\s*parseIntField\(\s*[^;]+)\); (\s*)(LOGGER\s*\.debug\(\s*"[^"]+",\s*)\1\s*.get\3\(\)\s*\.getValue\(\)(\);) Example: message.setWriteToHandleLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); LOGGER.debug("WriteToHandle length: {}", message.getWriteToHandleLength().getValue()); 1. message 2. .set 3. WriteToHandle 4. parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); 5. \s* 6. LOGGER.debug("WriteToHandle length: {}", 7. ); int \l$3 = $4; $5$1$2$3(\l$3); $5$6\l$3$7 --------------------------------------------------- (\w+)(\s*\.set)(\w+)\((\s*parseByteField\(\s*[^;]+)\); (\s*)(LOGGER\s*\.debug\(\s*"[^"]+",\s*[^()]*\()\1\s*.get\3\(\)\s*\.getValue\(\)(\)\);) (\w+)(\s*\.set)(\w+)\((\s*parseByteField\(\s*[^;]+)\); (\s*)(LOGGER\s*\.debug\(\s*"[^"]+",\s*[^()]*)\1\s*.get\3\(\)\s*\.getValue\(\)(\);) message.setAlwaysDisplay(parseByteField(1)); LOGGER.debug( "Always display: {}", Converter.byteToBoolean(message.getAlwaysDisplay().getValue())); byte \l$3 = $4; $5$1$2$3(\l$3); $5$6\l$3$7 --- .../parser/SftpHandshakeMessageParser.java | 5 +- .../sftp/parser/SftpUnknownMessageParser.java | 7 +- .../attribute/SftpFileAttributesParser.java | 40 ++-- .../SftpFileExtendedAttributeParser.java | 23 +-- ...tpRequestCheckFileHandleMessageParser.java | 29 +-- ...SftpRequestCheckFileNameMessageParser.java | 29 +-- .../SftpRequestCopyDataMessageParser.java | 27 +-- .../SftpRequestCopyFileMessageParser.java | 19 +- .../SftpRequestExtendedMessageParser.java | 18 +- ...equestExtendedWithHandleMessageParser.java | 12 +- ...pRequestExtendedWithPathMessageParser.java | 11 +- .../SftpRequestHardlinkMessageParser.java | 11 +- ...SftpRequestHomeDirectoryMessageParser.java | 11 +- .../SftpRequestPosixRenameMessageParser.java | 11 +- ...tpRequestUsersGroupsByIdMessageParser.java | 10 +- .../SftpRequestVendorIdMessageParser.java | 44 ++--- .../SftpResponseCheckFileMessageParser.java | 23 +-- .../SftpResponseLimitsMessageParser.java | 20 +- ...tpResponseSpaceAvailableMessageParser.java | 27 +-- .../SftpResponseStatVfsMessageParser.java | 55 +++--- ...pResponseUsersGroupsByIdMessageParser.java | 10 +- .../SftpAbstractExtensionParser.java | 12 +- .../SftpExtensionVendorIdParser.java | 52 +++-- .../SftpExtensionWithVersionParser.java | 12 +- .../request/SftpRequestMessageParser.java | 5 +- .../request/SftpRequestOpenMessageParser.java | 5 +- .../request/SftpRequestReadMessageParser.java | 10 +- .../SftpRequestRenameMessageParser.java | 11 +- .../SftpRequestSymbolicLinkMessageParser.java | 12 +- .../SftpRequestWithHandleMessageParser.java | 12 +- .../SftpRequestWithPathMessageParser.java | 11 +- .../SftpRequestWriteMessageParser.java | 16 +- .../SftpResponseDataMessageParser.java | 11 +- .../SftpResponseHandleMessageParser.java | 12 +- .../response/SftpResponseMessageParser.java | 5 +- .../response/SftpResponseNameEntryParser.java | 24 +-- .../SftpResponseNameMessageParser.java | 5 +- .../SftpResponseStatusMessageParser.java | 33 ++-- .../SftpUnknownMessageSerializer.java | 5 +- .../data/string/StringDataMessageParser.java | 5 +- .../unknown/UnknownDataMessageParser.java | 7 +- .../unknown/UnknownDataMessageSerializer.java | 5 +- .../UserAuthHostbasedMessageParser.java | 60 +++--- .../UserAuthInfoRequestMessageParser.java | 48 ++--- .../UserAuthInfoResponseMessageParser.java | 5 +- ...rAuthKeyboardInteractiveMessageParser.java | 26 ++- .../parser/UserAuthPasswordMessageParser.java | 27 +-- .../parser/UserAuthPkOkMessageParser.java | 26 ++- .../parser/UserAuthPubkeyMessageParser.java | 44 ++--- .../parser/UserAuthRequestMessageParser.java | 38 ++-- .../parser/ChannelDataMessageParser.java | 11 +- .../ChannelExtendedDataMessageParser.java | 16 +- .../parser/ChannelMessageParser.java | 5 +- .../ChannelOpenConfirmationMessageParser.java | 15 +- .../ChannelOpenFailureMessageParser.java | 25 ++- .../parser/ChannelOpenMessageParser.java | 29 +-- .../ChannelOpenUnknownMessageParser.java | 6 +- .../ChannelRequestBreakMessageParser.java | 5 +- .../ChannelRequestEnvMessageParser.java | 24 +-- .../ChannelRequestExecMessageParser.java | 10 +- ...ChannelRequestExitSignalMessageParser.java | 37 ++-- ...ChannelRequestExitStatusMessageParser.java | 5 +- .../parser/ChannelRequestMessageParser.java | 18 +- .../ChannelRequestPtyMessageParser.java | 48 ++--- .../ChannelRequestSignalMessageParser.java | 11 +- .../ChannelRequestSubsystemMessageParser.java | 14 +- .../ChannelRequestUnknownMessageParser.java | 6 +- ...annelRequestWindowChangeMessageParser.java | 20 +- .../ChannelRequestX11MessageParser.java | 31 ++- .../ChannelRequestXonXoffMessageParser.java | 7 +- .../ChannelWindowAdjustMessageParser.java | 5 +- ...equestCancelTcpIpForwardMessageParser.java | 18 +- .../parser/GlobalRequestMessageParser.java | 19 +- ...alRequestOpenSshHostKeysMessageParser.java | 7 +- ...lobalRequestTcpIpForwardMessageParser.java | 18 +- .../GlobalRequestUnknownMessageParser.java | 6 +- .../HybridKeyExchangeReplyMessageHandler.java | 14 +- .../transport/parser/DebugMessageParser.java | 32 ++-- .../DhGexKeyExchangeGroupMessageParser.java | 23 ++- .../DhGexKeyExchangeInitMessageParser.java | 14 +- ...GexKeyExchangeOldRequestMessageParser.java | 5 +- .../DhGexKeyExchangeReplyMessageParser.java | 36 ++-- .../DhGexKeyExchangeRequestMessageParser.java | 16 +- .../DhKeyExchangeInitMessageParser.java | 14 +- .../DhKeyExchangeReplyMessageParser.java | 37 ++-- .../parser/DisconnectMessageParser.java | 27 ++- .../EcdhKeyExchangeInitMessageParser.java | 15 +- .../EcdhKeyExchangeReplyMessageParser.java | 39 ++-- .../parser/ExtensionInfoMessageParser.java | 5 +- .../HybridKeyExchangeReplyMessageParser.java | 22 ++- .../transport/parser/IgnoreMessageParser.java | 11 +- .../parser/KeyExchangeInitMessageParser.java | 181 ++++++++---------- .../transport/parser/PingMessageParser.java | 11 +- .../transport/parser/PongMessageParser.java | 11 +- .../RsaKeyExchangeDoneMessageParser.java | 10 +- .../RsaKeyExchangePubkeyMessageParser.java | 25 +-- .../RsaKeyExchangeSecretMessageParser.java | 11 +- .../parser/ServiceRequestMessageParser.java | 14 +- .../parser/UnknownMessageParser.java | 7 +- .../extension/AbstractExtensionParser.java | 11 +- .../DelayCompressionExtensionParser.java | 40 ++-- .../parser/extension/PingExtensionParser.java | 5 +- .../ServerSigAlgsExtensionParser.java | 8 +- .../serializer/UnknownMessageSerializer.java | 5 +- 104 files changed, 1038 insertions(+), 1013 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java index 4f0e3d999..50835984e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java @@ -32,8 +32,9 @@ protected SftpHandshakeMessageParser(byte[] array, int startPosition) { } private void parseVersion() { - message.setVersion(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Version: {}", message.getVersion().getValue()); + int version = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setVersion(version); + LOGGER.debug("Version: {}", version); } private void parseExtensions() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java index 15021e149..7994e4b0e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java @@ -32,9 +32,8 @@ public SftpUnknownMessage createMessage() { @Override protected void parseMessageSpecificContents() { - message.setPayload(parseByteArrayField(getBytesLeft())); - LOGGER.debug( - "Payload: {}", - () -> ArrayConverter.bytesToRawHexString(message.getPayload().getValue())); + byte[] payload = parseByteArrayField(getBytesLeft()); + message.setPayload(payload); + LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToRawHexString(payload)); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java index 5a6aab273..7066d7dbc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java @@ -30,37 +30,45 @@ public SftpFileAttributesParser(byte[] array, int startPosition) { } private void parseFlags() { - attributes.setFlags(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Flags: {}", attributes.getFlags().getValue()); + int flags = parseIntField(DataFormatConstants.UINT32_SIZE); + attributes.setFlags(flags); + LOGGER.debug("Flags: {}", flags); } private void parseSize() { - attributes.setSize(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("Size: {}", attributes.getSize().getValue()); + long size = parseLongField(DataFormatConstants.UINT64_SIZE); + attributes.setSize(size); + LOGGER.debug("Size: {}", size); } private void parseUIdGId() { - attributes.setUId(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("UId: {}", attributes.getUId().getValue()); - attributes.setGId(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("GId: {}", attributes.getGId().getValue()); + int uId = parseIntField(DataFormatConstants.UINT32_SIZE); + attributes.setUId(uId); + LOGGER.debug("UId: {}", uId); + int gId = parseIntField(DataFormatConstants.UINT32_SIZE); + attributes.setGId(gId); + LOGGER.debug("GId: {}", gId); } private void parsePermissions() { - attributes.setPermissions(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Permissions: {}", attributes.getPermissions().getValue()); + int permissions = parseIntField(DataFormatConstants.UINT32_SIZE); + attributes.setPermissions(permissions); + LOGGER.debug("Permissions: {}", permissions); } private void parseAcModTime() { - attributes.setATime(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("ATime: {}", attributes.getATime().getValue()); - attributes.setMTime(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("MTime: {}", attributes.getMTime().getValue()); + int aTime = parseIntField(DataFormatConstants.UINT32_SIZE); + attributes.setATime(aTime); + LOGGER.debug("ATime: {}", aTime); + int mTime = parseIntField(DataFormatConstants.UINT32_SIZE); + attributes.setMTime(mTime); + LOGGER.debug("MTime: {}", mTime); } private void parseExtendedAttributes() { - attributes.setExtendedCount(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("ExtendedCount: {}", attributes.getExtendedCount().getValue()); + int extendedCount = parseIntField(DataFormatConstants.UINT32_SIZE); + attributes.setExtendedCount(extendedCount); + LOGGER.debug("ExtendedCount: {}", extendedCount); for (int extendedAttrIndex = 0, extendedAttrStartPointer = getPointer(); extendedAttrIndex < attributes.getExtendedCount().getValue(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java index 657749d41..21d36f1d5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java @@ -32,20 +32,21 @@ public SftpFileExtendedAttributeParser(byte[] array, int startPosition) { } private void parseType() { - attribute.setTypeLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Type length: {}", attribute.getTypeLength().getValue()); - attribute.setType( - parseByteString(attribute.getTypeLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("Type: {}", () -> backslashEscapeString(attribute.getType().getValue())); + int typeLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + attribute.setTypeLength(typeLength); + LOGGER.debug("Type length: {}", typeLength); + String type = parseByteString(typeLength, StandardCharsets.US_ASCII); + attribute.setType(type); + LOGGER.debug("Type: {}", () -> backslashEscapeString(type)); } private void parseData() { - attribute.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Data length: {}", attribute.getDataLength().getValue()); - attribute.setData(parseByteArrayField(attribute.getDataLength().getValue())); - LOGGER.debug( - "Data: {}", - () -> ArrayConverter.bytesToRawHexString(attribute.getData().getValue())); + int dataLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + attribute.setDataLength(dataLength); + LOGGER.debug("Data length: {}", dataLength); + byte[] data = parseByteArrayField(dataLength); + attribute.setData(data); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java index 12583dd36..5c7849544 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java @@ -34,29 +34,30 @@ protected SftpRequestCheckFileHandleMessage createMessage() { } private void parseHashAlgorithms() { - message.setHashAlgorithmsLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("HashAlgorithms length: {}", message.getHashAlgorithmsLength().getValue()); - message.setHashAlgorithms( - parseByteString( - message.getHashAlgorithmsLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "HashAlgorithms: {}", - () -> backslashEscapeString(message.getHashAlgorithms().getValue())); + int hashAlgorithmsLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setHashAlgorithmsLength(hashAlgorithmsLength); + LOGGER.debug("HashAlgorithms length: {}", hashAlgorithmsLength); + String hashAlgorithms = parseByteString(hashAlgorithmsLength, StandardCharsets.US_ASCII); + message.setHashAlgorithms(hashAlgorithms); + LOGGER.debug("HashAlgorithms: {}", () -> backslashEscapeString(hashAlgorithms)); } private void parseStartOffset() { - message.setStartOffset(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("StartOffset: {}", message.getStartOffset().getValue()); + long startOffset = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setStartOffset(startOffset); + LOGGER.debug("StartOffset: {}", startOffset); } private void parseLength() { - message.setLength(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("Length: {}", message.getLength().getValue()); + long length = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setLength(length); + LOGGER.debug("Length: {}", length); } private void parseBlockSize() { - message.setBlockSize(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("BlockSize: {}", message.getBlockSize().getValue()); + int blockSize = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setBlockSize(blockSize); + LOGGER.debug("BlockSize: {}", blockSize); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileNameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileNameMessageParser.java index 469789502..8b9da30b9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileNameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileNameMessageParser.java @@ -34,29 +34,30 @@ protected SftpRequestCheckFileNameMessage createMessage() { } private void parseHashAlgorithms() { - message.setHashAlgorithmsLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("HashAlgorithms length: {}", message.getHashAlgorithmsLength().getValue()); - message.setHashAlgorithms( - parseByteString( - message.getHashAlgorithmsLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "HashAlgorithms: {}", - () -> backslashEscapeString(message.getHashAlgorithms().getValue())); + int hashAlgorithmsLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setHashAlgorithmsLength(hashAlgorithmsLength); + LOGGER.debug("HashAlgorithms length: {}", hashAlgorithmsLength); + String hashAlgorithms = parseByteString(hashAlgorithmsLength, StandardCharsets.US_ASCII); + message.setHashAlgorithms(hashAlgorithms); + LOGGER.debug("HashAlgorithms: {}", () -> backslashEscapeString(hashAlgorithms)); } private void parseStartOffset() { - message.setStartOffset(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("StartOffset: {}", message.getStartOffset().getValue()); + long startOffset = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setStartOffset(startOffset); + LOGGER.debug("StartOffset: {}", startOffset); } private void parseLength() { - message.setLength(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("Length: {}", message.getLength().getValue()); + long length = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setLength(length); + LOGGER.debug("Length: {}", length); } private void parseBlockSize() { - message.setBlockSize(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("BlockSize: {}", message.getBlockSize().getValue()); + int blockSize = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setBlockSize(blockSize); + LOGGER.debug("BlockSize: {}", blockSize); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyDataMessageParser.java index 5b6a3f0cc..69f447826 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyDataMessageParser.java @@ -27,27 +27,30 @@ public SftpRequestCopyDataMessageParser(byte[] array, int startPosition) { } private void parseReadFromOffset() { - message.setReadFromOffset(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("ReadFromOffset: {}", message.getReadFromOffset().getValue()); + long readFromOffset = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setReadFromOffset(readFromOffset); + LOGGER.debug("ReadFromOffset: {}", readFromOffset); } private void parseReadDataLength() { - message.setReadDataLength(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("ReadDataLength: {}", message.getReadDataLength().getValue()); + long readDataLength = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setReadDataLength(readDataLength); + LOGGER.debug("ReadDataLength: {}", readDataLength); } private void parseWriteToHandle() { - message.setWriteToHandleLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("WriteToHandle length: {}", message.getWriteToHandleLength().getValue()); - message.setWriteToHandle(parseByteArrayField(message.getWriteToHandleLength().getValue())); - LOGGER.debug( - "WriteToHandle: {}", - () -> ArrayConverter.bytesToRawHexString(message.getWriteToHandle().getValue())); + int writeToHandleLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setWriteToHandleLength(writeToHandleLength); + LOGGER.debug("WriteToHandle length: {}", writeToHandleLength); + byte[] writeToHandle = parseByteArrayField(writeToHandleLength); + message.setWriteToHandle(writeToHandle); + LOGGER.debug("WriteToHandle: {}", () -> ArrayConverter.bytesToRawHexString(writeToHandle)); } private void parseWriteToOffset() { - message.setWriteToOffset(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("WriteToOffset: {}", message.getWriteToOffset().getValue()); + long writeToOffset = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setWriteToOffset(writeToOffset); + LOGGER.debug("WriteToOffset: {}", writeToOffset); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyFileMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyFileMessageParser.java index 012b2650a..7fbddb9ee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyFileMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyFileMessageParser.java @@ -34,19 +34,18 @@ protected SftpRequestCopyFileMessage createMessage() { } private void parseDestinationPath() { - message.setDestinationPathLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("DestinationPath length: {}", message.getDestinationPathLength().getValue()); - message.setDestinationPath( - parseByteString( - message.getDestinationPathLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "DestinationPath: {}", - () -> backslashEscapeString(message.getDestinationPath().getValue())); + int destinationPathLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setDestinationPathLength(destinationPathLength); + LOGGER.debug("DestinationPath length: {}", destinationPathLength); + String destinationPath = parseByteString(destinationPathLength, StandardCharsets.UTF_8); + message.setDestinationPath(destinationPath); + LOGGER.debug("DestinationPath: {}", () -> backslashEscapeString(destinationPath)); } private void parseOverwriteDestination() { - message.setOverwriteDestination(parseByteField(1)); - LOGGER.debug("OverwriteDestination: {}", message.getOverwriteDestination().getValue()); + byte overwriteDestination = parseByteField(1); + message.setOverwriteDestination(overwriteDestination); + LOGGER.debug("OverwriteDestination: {}", overwriteDestination); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedMessageParser.java index 452fd1078..7b10564ce 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedMessageParser.java @@ -30,17 +30,13 @@ protected SftpRequestExtendedMessageParser(byte[] array, int startPosition) { } private void parseExtendedRequestName() { - message.setExtendedRequestNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "ExtendedRequestName length: {}", - message.getExtendedRequestNameLength().getValue()); - message.setExtendedRequestName( - parseByteString( - message.getExtendedRequestNameLength().getValue(), - StandardCharsets.US_ASCII)); - LOGGER.debug( - "ExtendedRequestName: {}", - () -> backslashEscapeString(message.getExtendedRequestName().getValue())); + int extendedRequestNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setExtendedRequestNameLength(extendedRequestNameLength); + LOGGER.debug("ExtendedRequestName length: {}", extendedRequestNameLength); + String extendedRequestName = + parseByteString(extendedRequestNameLength, StandardCharsets.US_ASCII); + message.setExtendedRequestName(extendedRequestName); + LOGGER.debug("ExtendedRequestName: {}", () -> backslashEscapeString(extendedRequestName)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithHandleMessageParser.java index eb9142a11..af76ba7d0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithHandleMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithHandleMessageParser.java @@ -28,12 +28,12 @@ protected SftpRequestExtendedWithHandleMessageParser(byte[] array, int startPosi } private void parseHandle() { - message.setHandleLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Handle length: {}", message.getHandleLength().getValue()); - message.setHandle(parseByteArrayField(message.getHandleLength().getValue())); - LOGGER.debug( - "Handle: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHandle().getValue())); + int handleLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setHandleLength(handleLength); + LOGGER.debug("Handle length: {}", handleLength); + byte[] handle = parseByteArrayField(handleLength); + message.setHandle(handle); + LOGGER.debug("Handle: {}", () -> ArrayConverter.bytesToRawHexString(handle)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithPathMessageParser.java index 728893049..374814067 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithPathMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithPathMessageParser.java @@ -30,11 +30,12 @@ protected SftpRequestExtendedWithPathMessageParser(byte[] array, int startPositi } private void parsePath() { - message.setPathLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Path length: {}", message.getPathLength().getValue()); - message.setPath( - parseByteString(message.getPathLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("Path: {}", () -> backslashEscapeString(message.getPath().getValue())); + int pathLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setPathLength(pathLength); + LOGGER.debug("Path length: {}", pathLength); + String path = parseByteString(pathLength, StandardCharsets.UTF_8); + message.setPath(path); + LOGGER.debug("Path: {}", () -> backslashEscapeString(path)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHardlinkMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHardlinkMessageParser.java index 7b8c20202..314073bf0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHardlinkMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHardlinkMessageParser.java @@ -34,11 +34,12 @@ protected SftpRequestHardlinkMessage createMessage() { } private void parseNewPath() { - message.setNewPathLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("NewPath length: {}", message.getNewPathLength().getValue()); - message.setNewPath( - parseByteString(message.getNewPathLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("NewPath: {}", () -> backslashEscapeString(message.getNewPath().getValue())); + int newPathLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setNewPathLength(newPathLength); + LOGGER.debug("NewPath length: {}", newPathLength); + String newPath = parseByteString(newPathLength, StandardCharsets.UTF_8); + message.setNewPath(newPath); + LOGGER.debug("NewPath: {}", () -> backslashEscapeString(newPath)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHomeDirectoryMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHomeDirectoryMessageParser.java index 22c653bb9..0b59c63ea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHomeDirectoryMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHomeDirectoryMessageParser.java @@ -34,11 +34,12 @@ protected SftpRequestHomeDirectoryMessage createMessage() { } private void parseUsername() { - message.setUsernameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Username length: {}", message.getUsernameLength().getValue()); - message.setUsername( - parseByteString(message.getUsernameLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("Username: {}", () -> backslashEscapeString(message.getUsername().getValue())); + int usernameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setUsernameLength(usernameLength); + LOGGER.debug("Username length: {}", usernameLength); + String username = parseByteString(usernameLength, StandardCharsets.UTF_8); + message.setUsername(username); + LOGGER.debug("Username: {}", () -> backslashEscapeString(username)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestPosixRenameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestPosixRenameMessageParser.java index 5f2a62973..2d545747e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestPosixRenameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestPosixRenameMessageParser.java @@ -34,11 +34,12 @@ protected SftpRequestPosixRenameMessage createMessage() { } private void parseNewPath() { - message.setNewPathLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("NewPath length: {}", message.getNewPathLength().getValue()); - message.setNewPath( - parseByteString(message.getNewPathLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("NewPath: {}", () -> backslashEscapeString(message.getNewPath().getValue())); + int newPathLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setNewPathLength(newPathLength); + LOGGER.debug("NewPath length: {}", newPathLength); + String newPath = parseByteString(newPathLength, StandardCharsets.UTF_8); + message.setNewPath(newPath); + LOGGER.debug("NewPath: {}", () -> backslashEscapeString(newPath)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java index 955c28ee3..e7265d763 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java @@ -31,8 +31,9 @@ protected SftpRequestUsersGroupsByIdMessage createMessage() { } private void parseUserIds() { - message.setUserIdsLength(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("UserIdsLength: {}", message.getUserIdsLength().getValue()); + int userIdsLength = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setUserIdsLength(userIdsLength); + LOGGER.debug("UserIdsLength: {}", userIdsLength); int userIdsCount = message.getUserIdsLength().getValue() / DataFormatConstants.UINT32_SIZE; for (int i = 0; i < userIdsCount; i++) { int userId = parseIntField(DataFormatConstants.UINT32_SIZE); @@ -42,8 +43,9 @@ private void parseUserIds() { } private void parseGroupIds() { - message.setGroupIdsLength(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("GroupIdsLength: {}", message.getGroupIdsLength().getValue()); + int groupIdsLength = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setGroupIdsLength(groupIdsLength); + LOGGER.debug("GroupIdsLength: {}", groupIdsLength); int groupIdsCount = message.getGroupIdsLength().getValue() / DataFormatConstants.UINT32_SIZE; for (int i = 0; i < groupIdsCount; i++) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestVendorIdMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestVendorIdMessageParser.java index 9cd72ae25..8e2f0fca7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestVendorIdMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestVendorIdMessageParser.java @@ -34,38 +34,36 @@ protected SftpRequestVendorIdMessage createMessage() { } private void parseVendorName() { - message.setVendorNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("VendorName length: {}", message.getVendorNameLength().getValue()); - message.setVendorName( - parseByteString(message.getVendorNameLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "VendorName: {}", () -> backslashEscapeString(message.getVendorName().getValue())); + int vendorNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setVendorNameLength(vendorNameLength); + LOGGER.debug("VendorName length: {}", vendorNameLength); + String vendorName = parseByteString(vendorNameLength, StandardCharsets.UTF_8); + message.setVendorName(vendorName); + LOGGER.debug("VendorName: {}", () -> backslashEscapeString(vendorName)); } private void parseProductName() { - message.setProductNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("ProductName length: {}", message.getProductNameLength().getValue()); - message.setProductName( - parseByteString(message.getProductNameLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "ProductName: {}", - () -> backslashEscapeString(message.getProductName().getValue())); + int productNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setProductNameLength(productNameLength); + LOGGER.debug("ProductName length: {}", productNameLength); + String productName = parseByteString(productNameLength, StandardCharsets.UTF_8); + message.setProductName(productName); + LOGGER.debug("ProductName: {}", () -> backslashEscapeString(productName)); } private void parseProductVersion() { - message.setProductVersionLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("ProductVersion length: {}", message.getProductVersionLength().getValue()); - message.setProductVersion( - parseByteString( - message.getProductVersionLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "ProductVersion: {}", - () -> backslashEscapeString(message.getProductVersion().getValue())); + int productVersionLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setProductVersionLength(productVersionLength); + LOGGER.debug("ProductVersion length: {}", productVersionLength); + String productVersion = parseByteString(productVersionLength, StandardCharsets.UTF_8); + message.setProductVersion(productVersion); + LOGGER.debug("ProductVersion: {}", () -> backslashEscapeString(productVersion)); } private void parseProductBuildNumber() { - message.setProductBuildNumber(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("ProductBuildNumber: {}", message.getProductBuildNumber().getValue()); + long productBuildNumber = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setProductBuildNumber(productBuildNumber); + LOGGER.debug("ProductBuildNumber: {}", productBuildNumber); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseCheckFileMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseCheckFileMessageParser.java index 6f33cc27c..a73b7c8ed 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseCheckFileMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseCheckFileMessageParser.java @@ -36,22 +36,19 @@ public SftpResponseCheckFileMessage createMessage() { } private void parseUsedHashAlgorithm() { - message.setUsedHashAlgorithmLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "UsedHashAlgorithm length: {}", message.getUsedHashAlgorithmLength().getValue()); - message.setUsedHashAlgorithm( - parseByteString( - message.getUsedHashAlgorithmLength().getValue(), - StandardCharsets.US_ASCII)); - LOGGER.debug( - "UsedHashAlgorithm: {}", - () -> backslashEscapeString(message.getUsedHashAlgorithm().getValue())); + int usedHashAlgorithmLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setUsedHashAlgorithmLength(usedHashAlgorithmLength); + LOGGER.debug("UsedHashAlgorithm length: {}", usedHashAlgorithmLength); + String usedHashAlgorithm = + parseByteString(usedHashAlgorithmLength, StandardCharsets.US_ASCII); + message.setUsedHashAlgorithm(usedHashAlgorithm); + LOGGER.debug("UsedHashAlgorithm: {}", () -> backslashEscapeString(usedHashAlgorithm)); } private void parseHash() { - message.setHash(parseByteArrayField(getBytesLeft())); - LOGGER.debug( - "Hash: {}", () -> ArrayConverter.bytesToRawHexString(message.getHash().getValue())); + byte[] hash = parseByteArrayField(getBytesLeft()); + message.setHash(hash); + LOGGER.debug("Hash: {}", () -> ArrayConverter.bytesToRawHexString(hash)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseLimitsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseLimitsMessageParser.java index 900ae3ec7..ab3a03857 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseLimitsMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseLimitsMessageParser.java @@ -33,16 +33,20 @@ public SftpResponseLimitsMessage createMessage() { @Override protected void parseResponseSpecificContents() { - message.setMaximumPacketLength(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("MaximumPacketLength: {}", message.getMaximumPacketLength().getValue()); + long maximumPacketLength = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setMaximumPacketLength(maximumPacketLength); + LOGGER.debug("MaximumPacketLength: {}", maximumPacketLength); - message.setMaximumReadLength(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("MaximumReadLength: {}", message.getMaximumReadLength().getValue()); + long maximumReadLength = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setMaximumReadLength(maximumReadLength); + LOGGER.debug("MaximumReadLength: {}", maximumReadLength); - message.setMaximumWriteLength(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("MaximumWriteLength: {}", message.getMaximumWriteLength().getValue()); + long maximumWriteLength = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setMaximumWriteLength(maximumWriteLength); + LOGGER.debug("MaximumWriteLength: {}", maximumWriteLength); - message.setMaximumOpenHandles(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("MaximumOpenHandles: {}", message.getMaximumOpenHandles().getValue()); + long maximumOpenHandles = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setMaximumOpenHandles(maximumOpenHandles); + LOGGER.debug("MaximumOpenHandles: {}", maximumOpenHandles); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java index ea9d40253..ccde9ef60 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java @@ -33,21 +33,24 @@ public SftpResponseSpaceAvailableMessage createMessage() { @Override protected void parseResponseSpecificContents() { - message.setBytesOnDevice(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("BytesOnDevice: {}", message.getBytesOnDevice().getValue()); + long bytesOnDevice = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setBytesOnDevice(bytesOnDevice); + LOGGER.debug("BytesOnDevice: {}", bytesOnDevice); - message.setUnusedBytesOnDevice(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("UnusedBytesOnDevice: {}", message.getUnusedBytesOnDevice().getValue()); + long unusedBytesOnDevice = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setUnusedBytesOnDevice(unusedBytesOnDevice); + LOGGER.debug("UnusedBytesOnDevice: {}", unusedBytesOnDevice); - message.setBytesAvailableToUser(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("BytesAvailableToUser: {}", message.getBytesAvailableToUser().getValue()); + long bytesAvailableToUser = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setBytesAvailableToUser(bytesAvailableToUser); + LOGGER.debug("BytesAvailableToUser: {}", bytesAvailableToUser); - message.setUnusedBytesAvailableToUser(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug( - "UnusedBytesAvailableToUser: {}", - message.getUnusedBytesAvailableToUser().getValue()); + long unusedBytesAvailableToUser = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setUnusedBytesAvailableToUser(unusedBytesAvailableToUser); + LOGGER.debug("UnusedBytesAvailableToUser: {}", unusedBytesAvailableToUser); - message.setBytesPerAllocationUnit(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("BytesPerAllocationUnit: {}", message.getBytesPerAllocationUnit().getValue()); + int bytesPerAllocationUnit = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setBytesPerAllocationUnit(bytesPerAllocationUnit); + LOGGER.debug("BytesPerAllocationUnit: {}", bytesPerAllocationUnit); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseStatVfsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseStatVfsMessageParser.java index fc49832a3..1a490461d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseStatVfsMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseStatVfsMessageParser.java @@ -32,58 +32,69 @@ public SftpResponseStatVfsMessage createMessage() { } private void parseBlockSize() { - message.setBlockSize(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("BlockSize: {}", message.getBlockSize().getValue()); + long blockSize = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setBlockSize(blockSize); + LOGGER.debug("BlockSize: {}", blockSize); } private void parseFundamentalBlockSize() { - message.setFundamentalBlockSize(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("FundamentalBlockSize: {}", message.getFundamentalBlockSize().getValue()); + long fundamentalBlockSize = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setFundamentalBlockSize(fundamentalBlockSize); + LOGGER.debug("FundamentalBlockSize: {}", fundamentalBlockSize); } private void parseCountBlocks() { - message.setCountBlocks(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("CountBlocks: {}", message.getCountBlocks().getValue()); + long countBlocks = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setCountBlocks(countBlocks); + LOGGER.debug("CountBlocks: {}", countBlocks); } private void parseFreeBlocks() { - message.setFreeBlocks(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("FreeBlocks: {}", message.getFreeBlocks().getValue()); + long freeBlocks = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setFreeBlocks(freeBlocks); + LOGGER.debug("FreeBlocks: {}", freeBlocks); } private void parseFreeBlocksNonRoot() { - message.setFreeBlocksNonRoot(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("FreeBlocksNonRoot: {}", message.getFreeBlocksNonRoot().getValue()); + long freeBlocksNonRoot = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setFreeBlocksNonRoot(freeBlocksNonRoot); + LOGGER.debug("FreeBlocksNonRoot: {}", freeBlocksNonRoot); } private void parseFileInodes() { - message.setFileInodes(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("FileInodes: {}", message.getFileInodes().getValue()); + long fileInodes = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setFileInodes(fileInodes); + LOGGER.debug("FileInodes: {}", fileInodes); } private void parseFreeInodes() { - message.setFreeInodes(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("FreeInodes: {}", message.getFreeInodes().getValue()); + long freeInodes = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setFreeInodes(freeInodes); + LOGGER.debug("FreeInodes: {}", freeInodes); } private void parseFreeInodesNonRoot() { - message.setFreeInodesNonRoot(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("FreeInodesNonRoot: {}", message.getFreeInodesNonRoot().getValue()); + long freeInodesNonRoot = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setFreeInodesNonRoot(freeInodesNonRoot); + LOGGER.debug("FreeInodesNonRoot: {}", freeInodesNonRoot); } private void parseSystemId() { - message.setSystemId(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("SystemId: {}", message.getSystemId().getValue()); + long systemId = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setSystemId(systemId); + LOGGER.debug("SystemId: {}", systemId); } private void parseFlags() { - message.setFlags(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("Flags: {}", message.getFlags().getValue()); + long flags = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setFlags(flags); + LOGGER.debug("Flags: {}", flags); } private void parseMaximumFilenameLength() { - message.setMaximumFilenameLength(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("MaximumFilenameLength: {}", message.getMaximumFilenameLength().getValue()); + long maximumFilenameLength = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setMaximumFilenameLength(maximumFilenameLength); + LOGGER.debug("MaximumFilenameLength: {}", maximumFilenameLength); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java index b3a0c65ec..f9b00a5b7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java @@ -35,8 +35,9 @@ public SftpResponseUsersGroupsByIdMessage createMessage() { } private void parseUserNames() { - message.setUserNamesLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("UserNames length: {}", message.getUserNamesLength().getValue()); + int userNamesLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setUserNamesLength(userNamesLength); + LOGGER.debug("UserNames length: {}", userNamesLength); int oldPointer = getPointer(); int bytesToRead = message.getUserNamesLength().getValue(); while (getPointer() - oldPointer < bytesToRead) { @@ -49,8 +50,9 @@ private void parseUserNames() { } private void parseGroupNames() { - message.setGroupNamesLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("GroupNames length: {}", message.getGroupNamesLength().getValue()); + int groupNamesLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setGroupNamesLength(groupNamesLength); + LOGGER.debug("GroupNames length: {}", groupNamesLength); int oldPointer = getPointer(); int bytesToRead = message.getGroupNamesLength().getValue(); while (getPointer() - oldPointer < bytesToRead) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java index 591fdb178..ef1f56cff 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java @@ -43,12 +43,12 @@ public final E parse() { } protected void parseExtensionName() { - extension.setNameLength(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Extension name length: {}", extension.getNameLength().getValue()); - extension.setName( - parseByteString(extension.getNameLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "Extension name: {}", () -> backslashEscapeString(extension.getName().getValue())); + int nameLength = parseIntField(DataFormatConstants.UINT32_SIZE); + extension.setNameLength(nameLength); + LOGGER.debug("Extension name length: {}", nameLength); + String name = parseByteString(nameLength, StandardCharsets.US_ASCII); + extension.setName(name); + LOGGER.debug("Extension name: {}", () -> backslashEscapeString(name)); } protected abstract void parseExtensionValue(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java index 9ddbc3c5d..310d6ee16 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java @@ -29,46 +29,42 @@ public SftpExtensionVendorIdParser(byte[] array, int startPosition) { } private void parseVendorStructureLength() { - extension.setVendorStructureLength(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("VendorStructureLength: {}", extension.getVendorStructureLength().getValue()); + int vendorStructureLength = parseIntField(DataFormatConstants.UINT32_SIZE); + extension.setVendorStructureLength(vendorStructureLength); + LOGGER.debug("VendorStructureLength: {}", vendorStructureLength); } private void parseVendorName() { - extension.setVendorNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("VendorName length: {}", extension.getVendorNameLength().getValue()); - extension.setVendorName( - parseByteString( - extension.getVendorNameLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "VendorName: {}", - () -> backslashEscapeString(extension.getVendorName().getValue())); + int vendorNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + extension.setVendorNameLength(vendorNameLength); + LOGGER.debug("VendorName length: {}", vendorNameLength); + String vendorName = parseByteString(vendorNameLength, StandardCharsets.UTF_8); + extension.setVendorName(vendorName); + LOGGER.debug("VendorName: {}", () -> backslashEscapeString(vendorName)); } private void parseProductName() { - extension.setProductNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("ProductName length: {}", extension.getProductNameLength().getValue()); - extension.setProductName( - parseByteString( - extension.getProductNameLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "ProductName: {}", - () -> backslashEscapeString(extension.getProductName().getValue())); + int productNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + extension.setProductNameLength(productNameLength); + LOGGER.debug("ProductName length: {}", productNameLength); + String productName = parseByteString(productNameLength, StandardCharsets.UTF_8); + extension.setProductName(productName); + LOGGER.debug("ProductName: {}", () -> backslashEscapeString(productName)); } private void parseProductVersion() { - extension.setProductVersionLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("ProductVersion length: {}", extension.getProductVersionLength().getValue()); - extension.setProductVersion( - parseByteString( - extension.getProductVersionLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "ProductVersion: {}", - () -> backslashEscapeString(extension.getProductVersion().getValue())); + int productVersionLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + extension.setProductVersionLength(productVersionLength); + LOGGER.debug("ProductVersion length: {}", productVersionLength); + String productVersion = parseByteString(productVersionLength, StandardCharsets.UTF_8); + extension.setProductVersion(productVersion); + LOGGER.debug("ProductVersion: {}", () -> backslashEscapeString(productVersion)); } private void parseProductBuildNumber() { - extension.setProductBuildNumber(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("ProductBuildNumber: {}", extension.getProductBuildNumber().getValue()); + long productBuildNumber = parseLongField(DataFormatConstants.UINT64_SIZE); + extension.setProductBuildNumber(productBuildNumber); + LOGGER.debug("ProductBuildNumber: {}", productBuildNumber); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionWithVersionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionWithVersionParser.java index e713064f6..e2ce1f4d6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionWithVersionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionWithVersionParser.java @@ -31,12 +31,12 @@ public SftpExtensionWithVersionParser( } private void parseVersion() { - extension.setVersionLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Version length: {}", extension.getVersionLength().getValue()); - extension.setVersion( - parseByteString( - extension.getVersionLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("Version: {}", () -> backslashEscapeString(extension.getVersion().getValue())); + int versionLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + extension.setVersionLength(versionLength); + LOGGER.debug("Version length: {}", versionLength); + String version = parseByteString(versionLength, StandardCharsets.US_ASCII); + extension.setVersion(version); + LOGGER.debug("Version: {}", () -> backslashEscapeString(version)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMessageParser.java index 5fdc3592c..26428978b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMessageParser.java @@ -27,8 +27,9 @@ protected SftpRequestMessageParser(byte[] array, int startPosition) { } private void parseRequestId() { - message.setRequestId(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("RequestId: {}", message.getRequestId().getValue()); + int requestId = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setRequestId(requestId); + LOGGER.debug("RequestId: {}", requestId); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java index b1ab5fd74..915a24492 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java @@ -32,8 +32,9 @@ public SftpRequestOpenMessage createMessage() { } private void parsePFlags() { - message.setPFlags(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("PFlags: {}", message.getPFlags().getValue()); + int pFlags = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setPFlags(pFlags); + LOGGER.debug("PFlags: {}", pFlags); } private void parseAttributes() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadMessageParser.java index 143a1cf28..e8d88d8cb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadMessageParser.java @@ -31,13 +31,15 @@ public SftpRequestReadMessage createMessage() { } private void parseOffset() { - message.setOffset(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("Offset: {}", message.getOffset().getValue()); + long offset = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setOffset(offset); + LOGGER.debug("Offset: {}", offset); } private void parseLength() { - message.setLength(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Length: {}", message.getLength().getValue()); + int length = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setLength(length); + LOGGER.debug("Length: {}", length); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRenameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRenameMessageParser.java index 79d644f4a..0566b8ddf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRenameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRenameMessageParser.java @@ -34,11 +34,12 @@ public SftpRequestRenameMessage createMessage() { } private void parseNewPath() { - message.setNewPathLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("NewPath length: {}", message.getNewPathLength().getValue()); - message.setNewPath( - parseByteString(message.getNewPathLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("NewPath: {}", () -> backslashEscapeString(message.getNewPath().getValue())); + int newPathLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setNewPathLength(newPathLength); + LOGGER.debug("NewPath length: {}", newPathLength); + String newPath = parseByteString(newPathLength, StandardCharsets.UTF_8); + message.setNewPath(newPath); + LOGGER.debug("NewPath: {}", () -> backslashEscapeString(newPath)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSymbolicLinkMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSymbolicLinkMessageParser.java index 47743592f..536bafcf8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSymbolicLinkMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSymbolicLinkMessageParser.java @@ -34,12 +34,12 @@ public SftpRequestSymbolicLinkMessage createMessage() { } private void parseTargetPath() { - message.setTargetPathLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("TargetPath length: {}", message.getTargetPathLength().getValue()); - message.setTargetPath( - parseByteString(message.getTargetPathLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "TargetPath: {}", () -> backslashEscapeString(message.getTargetPath().getValue())); + int targetPathLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setTargetPathLength(targetPathLength); + LOGGER.debug("TargetPath length: {}", targetPathLength); + String targetPath = parseByteString(targetPathLength, StandardCharsets.UTF_8); + message.setTargetPath(targetPath); + LOGGER.debug("TargetPath: {}", () -> backslashEscapeString(targetPath)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithHandleMessageParser.java index 58eb9261a..3fb95e575 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithHandleMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithHandleMessageParser.java @@ -27,12 +27,12 @@ protected SftpRequestWithHandleMessageParser(byte[] array, int startPosition) { } private void parseHandle() { - message.setHandleLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Handle length: {}", message.getHandleLength().getValue()); - message.setHandle(parseByteArrayField(message.getHandleLength().getValue())); - LOGGER.debug( - "Handle: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHandle().getValue())); + int handleLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setHandleLength(handleLength); + LOGGER.debug("Handle length: {}", handleLength); + byte[] handle = parseByteArrayField(handleLength); + message.setHandle(handle); + LOGGER.debug("Handle: {}", () -> ArrayConverter.bytesToRawHexString(handle)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithPathMessageParser.java index 9848db493..a6cbc873d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithPathMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithPathMessageParser.java @@ -29,11 +29,12 @@ protected SftpRequestWithPathMessageParser(byte[] array, int startPosition) { } private void parsePath() { - message.setPathLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Path length: {}", message.getPathLength().getValue()); - message.setPath( - parseByteString(message.getPathLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("Path: {}", () -> backslashEscapeString(message.getPath().getValue())); + int pathLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setPathLength(pathLength); + LOGGER.debug("Path length: {}", pathLength); + String path = parseByteString(pathLength, StandardCharsets.UTF_8); + message.setPath(path); + LOGGER.debug("Path: {}", () -> backslashEscapeString(path)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWriteMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWriteMessageParser.java index c8a4d9671..86f99273c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWriteMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWriteMessageParser.java @@ -32,16 +32,18 @@ public SftpRequestWriteMessage createMessage() { } private void parseOffset() { - message.setOffset(parseLongField(DataFormatConstants.UINT64_SIZE)); - LOGGER.debug("Offset: {}", message.getOffset().getValue()); + long offset = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setOffset(offset); + LOGGER.debug("Offset: {}", offset); } private void parseData() { - message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Data length: {}", message.getDataLength().getValue()); - message.setData(parseByteArrayField(message.getDataLength().getValue())); - LOGGER.debug( - "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); + int dataLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setDataLength(dataLength); + LOGGER.debug("Data length: {}", dataLength); + byte[] data = parseByteArrayField(dataLength); + message.setData(data); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseDataMessageParser.java index 0f7ace9cd..afb6f52c5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseDataMessageParser.java @@ -32,11 +32,12 @@ public SftpResponseDataMessage createMessage() { } private void parseData() { - message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Data length: {}", message.getDataLength().getValue()); - message.setData(parseByteArrayField(message.getDataLength().getValue())); - LOGGER.debug( - "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); + int dataLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setDataLength(dataLength); + LOGGER.debug("Data length: {}", dataLength); + byte[] data = parseByteArrayField(dataLength); + message.setData(data); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseHandleMessageParser.java index 24d09a574..16ecc3322 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseHandleMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseHandleMessageParser.java @@ -32,12 +32,12 @@ public SftpResponseHandleMessage createMessage() { } private void parseHandle() { - message.setHandleLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Handle length: {}", message.getHandleLength().getValue()); - message.setHandle(parseByteArrayField(message.getHandleLength().getValue())); - LOGGER.debug( - "Handle: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHandle().getValue())); + int handleLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setHandleLength(handleLength); + LOGGER.debug("Handle length: {}", handleLength); + byte[] handle = parseByteArrayField(handleLength); + message.setHandle(handle); + LOGGER.debug("Handle: {}", () -> ArrayConverter.bytesToRawHexString(handle)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseMessageParser.java index d27fd87b8..41e2949ec 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseMessageParser.java @@ -27,8 +27,9 @@ protected SftpResponseMessageParser(byte[] array, int startPosition) { } private void parseRequestId() { - message.setRequestId(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("RequestId: {}", message.getRequestId().getValue()); + int requestId = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setRequestId(requestId); + LOGGER.debug("RequestId: {}", requestId); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameEntryParser.java index 9aadbd54b..dbb6b4ef9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameEntryParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameEntryParser.java @@ -32,21 +32,21 @@ public SftpResponseNameEntryParser(byte[] array, int startPosition) { } private void parseFilename() { - nameEntry.setFilenameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Filename length: {}", nameEntry.getFilenameLength().getValue()); - nameEntry.setFilename( - parseByteString(nameEntry.getFilenameLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "Filename: {}", () -> backslashEscapeString(nameEntry.getFilename().getValue())); + int filenameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + nameEntry.setFilenameLength(filenameLength); + LOGGER.debug("Filename length: {}", filenameLength); + String filename = parseByteString(filenameLength, StandardCharsets.UTF_8); + nameEntry.setFilename(filename); + LOGGER.debug("Filename: {}", () -> backslashEscapeString(filename)); } private void parseLongName() { - nameEntry.setLongNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("LongName length: {}", nameEntry.getLongNameLength().getValue()); - nameEntry.setLongName( - parseByteString(nameEntry.getLongNameLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "LongName: {}", () -> backslashEscapeString(nameEntry.getLongName().getValue())); + int longNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + nameEntry.setLongNameLength(longNameLength); + LOGGER.debug("LongName length: {}", longNameLength); + String longName = parseByteString(longNameLength, StandardCharsets.UTF_8); + nameEntry.setLongName(longName); + LOGGER.debug("LongName: {}", () -> backslashEscapeString(longName)); } private void parseAttributes() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java index 4b6385792..8d138743a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java @@ -31,8 +31,9 @@ public SftpResponseNameMessage createMessage() { } private void parseNameEntries() { - message.setCountNameEntries(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("CountNameEntries: {}", message.getCountNameEntries().getValue()); + int countNameEntries = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setCountNameEntries(countNameEntries); + LOGGER.debug("CountNameEntries: {}", countNameEntries); for (int nameEntryIndex = 0, nameEntryStartPointer = getPointer(); nameEntryIndex < message.getCountNameEntries().getValue(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseStatusMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseStatusMessageParser.java index 07ebb0385..a81fd0385 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseStatusMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseStatusMessageParser.java @@ -34,30 +34,27 @@ public SftpResponseStatusMessage createMessage() { } private void parseStatusCode() { - message.setStatusCode(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("StatusCode: {}", message.getStatusCode().getValue()); + int statusCode = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setStatusCode(statusCode); + LOGGER.debug("StatusCode: {}", statusCode); } private void parseErrorMessage() { - message.setErrorMessageLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("ErrorMessage length: {}", message.getErrorMessageLength().getValue()); - message.setErrorMessage( - parseByteString( - message.getErrorMessageLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "ErrorMessage: {}", - () -> backslashEscapeString(message.getErrorMessage().getValue())); + int errorMessageLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setErrorMessageLength(errorMessageLength); + LOGGER.debug("ErrorMessage length: {}", errorMessageLength); + String errorMessage = parseByteString(errorMessageLength, StandardCharsets.UTF_8); + message.setErrorMessage(errorMessage); + LOGGER.debug("ErrorMessage: {}", () -> backslashEscapeString(errorMessage)); } private void parseLanguageTag() { - message.setLanguageTagLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("LanguageTag length: {}", message.getLanguageTagLength().getValue()); - message.setLanguageTag( - parseByteString( - message.getLanguageTagLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "LanguageTag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); + int languageTagLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setLanguageTagLength(languageTagLength); + LOGGER.debug("LanguageTag length: {}", languageTagLength); + String languageTag = parseByteString(languageTagLength, StandardCharsets.US_ASCII); + message.setLanguageTag(languageTag); + LOGGER.debug("LanguageTag: {}", () -> backslashEscapeString(languageTag)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java index c479b58c9..755334d1b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java @@ -23,7 +23,8 @@ public SftpUnknownMessageSerializer(SftpUnknownMessage message) { @Override protected void serializeMessageSpecificContents() { - LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToHexString(message.getPayload())); - appendBytes(message.getPayload().getValue()); + byte[] payload = message.getPayload().getValue(); + LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToHexString(payload)); + appendBytes(payload); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java index 28060ca56..efea254d3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageParser.java @@ -32,8 +32,9 @@ public StringDataMessage createMessage() { } private void parseData() { - message.setData(parseByteString(getBytesLeft(), StandardCharsets.UTF_8)); - LOGGER.debug("Data: {}", () -> backslashEscapeString(message.getData().getValue())); + String data = parseByteString(getBytesLeft(), StandardCharsets.UTF_8); + message.setData(data); + LOGGER.debug("Data: {}", () -> backslashEscapeString(data)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java index 1266d9a9c..b708b4142 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageParser.java @@ -31,9 +31,8 @@ public UnknownDataMessage createMessage() { @Override protected void parseProtocolMessageContents() { - message.setPayload(parseByteArrayField(getBytesLeft())); - LOGGER.debug( - "Payload: {}", - () -> ArrayConverter.bytesToRawHexString(message.getPayload().getValue())); + byte[] payload = parseByteArrayField(getBytesLeft()); + message.setPayload(payload); + LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToRawHexString(payload)); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java index 74a22f6ee..f0105bf17 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java @@ -22,7 +22,8 @@ public UnknownDataMessageSerializer(UnknownDataMessage message) { @Override public final void serializeProtocolMessageContents() { - LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToHexString(message.getPayload())); - appendBytes(message.getPayload().getValue()); + byte[] payload = message.getPayload().getValue(); + LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToHexString(payload)); + appendBytes(payload); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthHostbasedMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthHostbasedMessageParser.java index 228ad9d19..5094982d0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthHostbasedMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthHostbasedMessageParser.java @@ -36,48 +36,48 @@ protected UserAuthHostbasedMessage createMessage() { } private void parsePubKeyAlgorithm() { - message.setPubKeyAlgorithmLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "Public key algorithm length: {}", message.getPubKeyAlgorithmLength().getValue()); - message.setPubKeyAlgorithm(parseByteString(message.getPubKeyAlgorithmLength().getValue())); - LOGGER.debug( - "Public key algorithm: {}", - () -> backslashEscapeString(message.getPubKeyAlgorithm().getValue())); + int pubKeyAlgorithmLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setPubKeyAlgorithmLength(pubKeyAlgorithmLength); + LOGGER.debug("Public key algorithm length: {}", pubKeyAlgorithmLength); + String pubKeyAlgorithm = parseByteString(pubKeyAlgorithmLength); + message.setPubKeyAlgorithm(pubKeyAlgorithm); + LOGGER.debug("Public key algorithm: {}", () -> backslashEscapeString(pubKeyAlgorithm)); } private void parseHostKeyBytes() { - message.setHostKeyBytesLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); - LOGGER.debug("Host key bytes length: {}", message.getHostKeyBytesLength().getValue()); - message.setHostKeyBytes(parseByteArrayField(message.getHostKeyBytesLength().getValue())); - LOGGER.debug( - "Host key bytes: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); + int hostKeyBytesLength = parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); + message.setHostKeyBytesLength(hostKeyBytesLength); + LOGGER.debug("Host key bytes length: {}", hostKeyBytesLength); + byte[] hostKeyBytes = parseByteArrayField(hostKeyBytesLength); + message.setHostKeyBytes(hostKeyBytes); + LOGGER.debug("Host key bytes: {}", () -> ArrayConverter.bytesToRawHexString(hostKeyBytes)); } private void parseHostName() { - message.setHostNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Host name length: {}", message.getHostNameLength().getValue()); - message.setHostName(parseByteString(message.getHostNameLength().getValue())); - LOGGER.debug( - "Host name: {}", () -> backslashEscapeString(message.getHostName().getValue())); + int hostNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setHostNameLength(hostNameLength); + LOGGER.debug("Host name length: {}", hostNameLength); + String hostName = parseByteString(hostNameLength); + message.setHostName(hostName); + LOGGER.debug("Host name: {}", () -> backslashEscapeString(hostName)); } private void parseClientUserName() { - message.setClientUserNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Client user name length: {}", message.getClientUserNameLength().getValue()); - message.setClientUserName( - parseByteString( - message.getClientUserNameLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "Client user name: {}", - () -> backslashEscapeString(message.getClientUserName().getValue())); + int clientUserNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setClientUserNameLength(clientUserNameLength); + LOGGER.debug("Client user name length: {}", clientUserNameLength); + String clientUserName = parseByteString(clientUserNameLength, StandardCharsets.UTF_8); + message.setClientUserName(clientUserName); + LOGGER.debug("Client user name: {}", () -> backslashEscapeString(clientUserName)); } private void parseSignature() { - message.setSignatureLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); - LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); - message.setSignature(parseByteArrayField(message.getSignatureLength().getValue())); - LOGGER.debug("Signature: {}", message.getSignature()); + int signatureLength = parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); + message.setSignatureLength(signatureLength); + LOGGER.debug("Signature length: {}", signatureLength); + byte[] signature = parseByteArrayField(signatureLength); + message.setSignature(signature); + LOGGER.debug("Signature: {}", signature); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoRequestMessageParser.java index 99a744898..b4c214059 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoRequestMessageParser.java @@ -35,34 +35,36 @@ protected UserAuthInfoRequestMessage createMessage() { } private void parseUserName() { - message.setUserNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("User name length: {}", message.getUserNameLength().getValue()); - message.setUserName(parseByteString(message.getUserNameLength().getValue())); - LOGGER.debug( - "User name: {}", () -> backslashEscapeString(message.getUserName().getValue())); + int userNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setUserNameLength(userNameLength); + LOGGER.debug("User name length: {}", userNameLength); + String userName = parseByteString(userNameLength); + message.setUserName(userName); + LOGGER.debug("User name: {}", () -> backslashEscapeString(userName)); } private void parseInstruction() { - message.setInstructionLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Instruction length: {}", message.getInstructionLength().getValue()); - message.setInstruction(parseByteString(message.getInstructionLength().getValue())); - LOGGER.debug( - "Instruction: {}", - () -> backslashEscapeString(message.getInstruction().getValue())); + int instructionLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setInstructionLength(instructionLength); + LOGGER.debug("Instruction length: {}", instructionLength); + String instruction = parseByteString(instructionLength); + message.setInstruction(instruction); + LOGGER.debug("Instruction: {}", () -> backslashEscapeString(instruction)); } private void parseLanguageTag() { - message.setLanguageTagLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Language tag length: {}", message.getLanguageTagLength().getValue()); - message.setLanguageTag(parseByteString(message.getLanguageTagLength().getValue())); - LOGGER.debug( - "Language tag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); + int languageTagLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setLanguageTagLength(languageTagLength); + LOGGER.debug("Language tag length: {}", languageTagLength); + String languageTag = parseByteString(languageTagLength); + message.setLanguageTag(languageTag); + LOGGER.debug("Language tag: {}", () -> backslashEscapeString(languageTag)); } private void parsePromptEntries() { - message.setPromptEntryCount(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Number of prompt entries: {}", message.getPromptEntryCount().getValue()); + int promptEntryCount = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setPromptEntryCount(promptEntryCount); + LOGGER.debug("Number of prompt entries: {}", promptEntryCount); for (int i = 0; i < message.getPromptEntryCount().getValue(); i++) { AuthenticationPrompt.PromptEntry entry = new AuthenticationPrompt.PromptEntry(); @@ -73,11 +75,9 @@ private void parsePromptEntries() { "Prompt entry [{}]: {}", i, backslashEscapeString(entry.getPrompt().getValue())); - entry.setEcho(parseByteField(1)); - LOGGER.debug( - "Prompt entry [{}] wants echo:{}", - i, - Converter.byteToBoolean(entry.getEcho().getValue())); + byte echo = parseByteField(1); + entry.setEcho(echo); + LOGGER.debug("Prompt entry [{}] wants echo:{}", i, Converter.byteToBoolean(echo)); message.getPrompt().add(entry); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoResponseMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoResponseMessageParser.java index 2211a37ff..c8c975ca7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoResponseMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoResponseMessageParser.java @@ -33,8 +33,9 @@ protected UserAuthInfoResponseMessage createMessage() { } private void parseResponseEntries() { - message.setResponseEntryCount(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Number of response entries: {}", message.getResponseEntryCount().getValue()); + int responseEntryCount = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setResponseEntryCount(responseEntryCount); + LOGGER.debug("Number of response entries: {}", responseEntryCount); for (int i = 0; i < message.getResponseEntryCount().getValue(); i++) { AuthenticationResponse.ResponseEntry entry = new AuthenticationResponse.ResponseEntry(); entry.setResponseLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthKeyboardInteractiveMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthKeyboardInteractiveMessageParser.java index cc07be497..5b2b5951a 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthKeyboardInteractiveMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthKeyboardInteractiveMessageParser.java @@ -34,23 +34,21 @@ protected UserAuthKeyboardInteractiveMessage createMessage() { } private void parseLanguageTag() { - message.setLanguageTagLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Language tag length: {}", message.getLanguageTagLength().getValue()); - message.setLanguageTag( - parseByteString( - message.getLanguageTagLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "Language tag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); + int languageTagLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setLanguageTagLength(languageTagLength); + LOGGER.debug("Language tag length: {}", languageTagLength); + String languageTag = parseByteString(languageTagLength, StandardCharsets.US_ASCII); + message.setLanguageTag(languageTag); + LOGGER.debug("Language tag: {}", () -> backslashEscapeString(languageTag)); } private void parseSubMethods() { - message.setSubMethodsLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Sub methods length: {}", message.getSubMethodsLength().getValue()); - message.setSubMethods( - parseByteString(message.getSubMethodsLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "Sub methods: {}", () -> backslashEscapeString(message.getSubMethods().getValue())); + int subMethodsLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setSubMethodsLength(subMethodsLength); + LOGGER.debug("Sub methods length: {}", subMethodsLength); + String subMethods = parseByteString(subMethodsLength, StandardCharsets.UTF_8); + message.setSubMethods(subMethods); + LOGGER.debug("Sub methods: {}", () -> backslashEscapeString(subMethods)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPasswordMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPasswordMessageParser.java index a7c2811a6..d30298972 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPasswordMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPasswordMessageParser.java @@ -33,24 +33,27 @@ public UserAuthPasswordMessage createMessage() { } private void parseChangePassword() { - message.setChangePassword(parseByteField(1)); - LOGGER.debug("Change password: {}", message.getChangePassword().getValue()); + byte changePassword = parseByteField(1); + message.setChangePassword(changePassword); + LOGGER.debug("Change password: {}", changePassword); } private void parsePassword() { - message.setPasswordLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Password length: {}", message.getPasswordLength().getValue()); - message.setPassword( - parseByteString(message.getPasswordLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("Password: {}", message.getPassword().getValue()); + int passwordLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setPasswordLength(passwordLength); + LOGGER.debug("Password length: {}", passwordLength); + String password = parseByteString(passwordLength, StandardCharsets.UTF_8); + message.setPassword(password); + LOGGER.debug("Password: {}", password); } private void parseNewPassword() { - message.setNewPasswordLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("New password length: {}", message.getNewPasswordLength().getValue()); - message.setNewPassword( - parseByteString(message.getNewPasswordLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("New password: {}", message.getNewPassword().getValue()); + int newPasswordLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setNewPasswordLength(newPasswordLength); + LOGGER.debug("New password length: {}", newPasswordLength); + String newPassword = parseByteString(newPasswordLength, StandardCharsets.UTF_8); + message.setNewPassword(newPassword); + LOGGER.debug("New password: {}", newPassword); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPkOkMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPkOkMessageParser.java index 6b6e05795..f9c1d1a0b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPkOkMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPkOkMessageParser.java @@ -34,23 +34,21 @@ protected UserAuthPkOkMessage createMessage() { } private void parsePubkey() { - message.setPubkeyLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Pubkey length: {}", message.getPubkeyLength().getValue()); - message.setPubkey( - parseByteString(message.getPubkeyLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("Pubkey: {}", () -> backslashEscapeString(message.getPubkey().getValue())); + int pubkeyLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setPubkeyLength(pubkeyLength); + LOGGER.debug("Pubkey length: {}", pubkeyLength); + String pubkey = parseByteString(pubkeyLength, StandardCharsets.US_ASCII); + message.setPubkey(pubkey); + LOGGER.debug("Pubkey: {}", () -> backslashEscapeString(pubkey)); } private void parsePubkeyAlgName() { - message.setPubkeyAlgNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "Pubkey algorithm name length: {}", message.getPubkeyAlgNameLength().getValue()); - message.setPubkeyAlgName( - parseByteString( - message.getPubkeyAlgNameLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "Pubkey algorithm name: {}", - () -> backslashEscapeString(message.getPubkeyAlgName().getValue())); + int pubkeyAlgNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setPubkeyAlgNameLength(pubkeyAlgNameLength); + LOGGER.debug("Pubkey algorithm name length: {}", pubkeyAlgNameLength); + String pubkeyAlgName = parseByteString(pubkeyAlgNameLength, StandardCharsets.US_ASCII); + message.setPubkeyAlgName(pubkeyAlgName); + LOGGER.debug("Pubkey algorithm name: {}", () -> backslashEscapeString(pubkeyAlgName)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPubkeyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPubkeyMessageParser.java index 027568c44..51b807c5d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPubkeyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPubkeyMessageParser.java @@ -36,38 +36,36 @@ protected UserAuthPubkeyMessage createMessage() { } private void parsePubkey() { - message.setPubkeyLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Pubkey length: {}", message.getPubkeyLength().getValue()); - message.setPubkey(parseByteArrayField(message.getPubkeyLength().getValue())); - LOGGER.debug( - "Pubkey: {}", - () -> ArrayConverter.bytesToRawHexString(message.getPubkey().getValue())); + int pubkeyLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setPubkeyLength(pubkeyLength); + LOGGER.debug("Pubkey length: {}", pubkeyLength); + byte[] pubkey = parseByteArrayField(pubkeyLength); + message.setPubkey(pubkey); + LOGGER.debug("Pubkey: {}", () -> ArrayConverter.bytesToRawHexString(pubkey)); } private void parsePubkeyAlgName() { - message.setPubkeyAlgNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "Pubkey algorithm name length: {}", message.getPubkeyAlgNameLength().getValue()); - message.setPubkeyAlgName( - parseByteString( - message.getPubkeyAlgNameLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "Pubkey algorithm name: {}", - () -> backslashEscapeString(message.getPubkeyAlgName().getValue())); + int pubkeyAlgNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setPubkeyAlgNameLength(pubkeyAlgNameLength); + LOGGER.debug("Pubkey algorithm name length: {}", pubkeyAlgNameLength); + String pubkeyAlgName = parseByteString(pubkeyAlgNameLength, StandardCharsets.US_ASCII); + message.setPubkeyAlgName(pubkeyAlgName); + LOGGER.debug("Pubkey algorithm name: {}", () -> backslashEscapeString(pubkeyAlgName)); } private void parseUseSignature() { - message.setUseSignature(parseByteField(1)); - LOGGER.debug("Use signature: {}", message.getUseSignature().getValue()); + byte useSignature = parseByteField(1); + message.setUseSignature(useSignature); + LOGGER.debug("Use signature: {}", useSignature); } private void parseSignature() { - message.setSignatureLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); - message.setSignature(parseByteArrayField(message.getSignatureLength().getValue())); - LOGGER.debug( - "Signature: {}", - () -> ArrayConverter.bytesToRawHexString(message.getSignature().getValue())); + int signatureLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setSignatureLength(signatureLength); + LOGGER.debug("Signature length: {}", signatureLength); + byte[] signature = parseByteArrayField(signatureLength); + message.setSignature(signature); + LOGGER.debug("Signature: {}", () -> ArrayConverter.bytesToRawHexString(signature)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthRequestMessageParser.java index 4437a0dde..0a4238233 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthRequestMessageParser.java @@ -30,32 +30,30 @@ protected UserAuthRequestMessageParser(byte[] array, int startPosition) { } private void parseUserName() { - message.setUserNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Username length: {}", message.getUserNameLength().getValue()); - message.setUserName( - parseByteString(message.getUserNameLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("Username: {}", () -> backslashEscapeString(message.getUserName().getValue())); + int userNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setUserNameLength(userNameLength); + LOGGER.debug("Username length: {}", userNameLength); + String userName = parseByteString(userNameLength, StandardCharsets.US_ASCII); + message.setUserName(userName); + LOGGER.debug("Username: {}", () -> backslashEscapeString(userName)); } private void parseServiceName() { - message.setServiceNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Servicename length: {}", message.getServiceNameLength().getValue()); - message.setServiceName( - parseByteString( - message.getServiceNameLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "Servicename: {}", - () -> backslashEscapeString(message.getServiceName().getValue())); + int serviceNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setServiceNameLength(serviceNameLength); + LOGGER.debug("Servicename length: {}", serviceNameLength); + String serviceName = parseByteString(serviceNameLength, StandardCharsets.US_ASCII); + message.setServiceName(serviceName); + LOGGER.debug("Servicename: {}", () -> backslashEscapeString(serviceName)); } private void parseMethodName() { - message.setMethodNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Methodname length: {}", message.getMethodNameLength().getValue()); - message.setMethodName( - parseByteString( - message.getMethodNameLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "Methodname: {}", () -> backslashEscapeString(message.getMethodName().getValue())); + int methodNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setMethodNameLength(methodNameLength); + LOGGER.debug("Methodname length: {}", methodNameLength); + String methodName = parseByteString(methodNameLength, StandardCharsets.US_ASCII); + message.setMethodName(methodName); + LOGGER.debug("Methodname: {}", () -> backslashEscapeString(methodName)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java index 412f02d46..3058bd2c9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java @@ -31,11 +31,12 @@ public ChannelDataMessage createMessage() { } private void parseData() { - message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Data length: {}", message.getDataLength().getValue()); - message.setData(parseByteArrayField(message.getDataLength().getValue())); - LOGGER.debug( - "Data: {}", () -> ArrayConverter.bytesToHexString(message.getData().getValue())); + int dataLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setDataLength(dataLength); + LOGGER.debug("Data length: {}", dataLength); + byte[] data = parseByteArrayField(dataLength); + message.setData(data); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToHexString(data)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelExtendedDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelExtendedDataMessageParser.java index 20758ff79..22cde262e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelExtendedDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelExtendedDataMessageParser.java @@ -33,19 +33,21 @@ public ChannelExtendedDataMessage createMessage() { } private void parseDataTypeCode() { - message.setDataTypeCode(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Data type code: {}", message.getDataTypeCode().getValue()); + int dataTypeCode = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setDataTypeCode(dataTypeCode); + LOGGER.debug("Data type code: {}", dataTypeCode); LOGGER.debug( "Data type: {}", ExtendedChannelDataType.fromDataTypeCode(message.getDataTypeCode().getValue())); } private void parseData() { - message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Data length: {}", message.getDataLength().getValue()); - message.setData(parseByteArrayField(message.getDataLength().getValue())); - LOGGER.debug( - "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); + int dataLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setDataLength(dataLength); + LOGGER.debug("Data length: {}", dataLength); + byte[] data = parseByteArrayField(dataLength); + message.setData(data); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelMessageParser.java index d207917ff..674969866 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelMessageParser.java @@ -27,8 +27,9 @@ protected ChannelMessageParser(byte[] array, int startPosition) { } private void parseRecipientChannel() { - message.setRecipientChannelId(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Recipient channel id: {}", message.getRecipientChannelId().getValue()); + int recipientChannelId = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setRecipientChannelId(recipientChannelId); + LOGGER.debug("Recipient channel id: {}", recipientChannelId); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenConfirmationMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenConfirmationMessageParser.java index d181e63b5..858df5e8b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenConfirmationMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenConfirmationMessageParser.java @@ -31,18 +31,21 @@ public ChannelOpenConfirmationMessage createMessage() { } private void parseSenderChannel() { - message.setSenderChannelId(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Sender channel id: {}", message.getSenderChannelId().getValue()); + int senderChannelId = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setSenderChannelId(senderChannelId); + LOGGER.debug("Sender channel id: {}", senderChannelId); } private void parseWindowSize() { - message.setWindowSize(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Initial window size: {}", message.getWindowSize().getValue()); + int windowSize = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setWindowSize(windowSize); + LOGGER.debug("Initial window size: {}", windowSize); } private void parsePacketSize() { - message.setPacketSize(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Maximum packet size: {}", message.getPacketSize().getValue()); + int packetSize = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setPacketSize(packetSize); + LOGGER.debug("Maximum packet size: {}", packetSize); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenFailureMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenFailureMessageParser.java index 62d429c41..df9e59eb2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenFailureMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenFailureMessageParser.java @@ -39,22 +39,21 @@ private void parseReasonCode() { } private void parseReason() { - message.setReasonLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Reason length: {}", message.getReasonLength()); - message.setReason( - parseByteString(message.getReasonLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("Reason: {}", () -> backslashEscapeString(message.getReason().getValue())); + int reasonLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setReasonLength(reasonLength); + LOGGER.debug("Reason length: {}", reasonLength); + String reason = parseByteString(reasonLength, StandardCharsets.UTF_8); + message.setReason(reason); + LOGGER.debug("Reason: {}", () -> backslashEscapeString(reason)); } private void parseLanguageTag() { - message.setLanguageTagLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Language tag length: {}", message.getLanguageTagLength().getValue()); - message.setLanguageTag( - parseByteString( - message.getLanguageTagLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "Language tag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); + int languageTagLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setLanguageTagLength(languageTagLength); + LOGGER.debug("Language tag length: {}", languageTagLength); + String languageTag = parseByteString(languageTagLength, StandardCharsets.US_ASCII); + message.setLanguageTag(languageTag); + LOGGER.debug("Language tag: {}", () -> backslashEscapeString(languageTag)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenMessageParser.java index a1547f7a4..f6c043da9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenMessageParser.java @@ -30,29 +30,30 @@ protected ChannelOpenMessageParser(byte[] array, int startPosition) { } private void parseChannelType() { - message.setChannelTypeLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Channel type length: {}", message.getChannelTypeLength().getValue()); - message.setChannelType( - parseByteString( - message.getChannelTypeLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "Channel type: {}", - () -> backslashEscapeString(message.getChannelType().getValue())); + int channelTypeLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setChannelTypeLength(channelTypeLength); + LOGGER.debug("Channel type length: {}", channelTypeLength); + String channelType = parseByteString(channelTypeLength, StandardCharsets.US_ASCII); + message.setChannelType(channelType); + LOGGER.debug("Channel type: {}", () -> backslashEscapeString(channelType)); } private void parseSenderChannel() { - message.setSenderChannelId(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Sender channel id: {}", message.getSenderChannelId().getValue()); + int senderChannelId = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setSenderChannelId(senderChannelId); + LOGGER.debug("Sender channel id: {}", senderChannelId); } private void parseWindowSize() { - message.setWindowSize(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Initial window size: {}", message.getWindowSize().getValue()); + int windowSize = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setWindowSize(windowSize); + LOGGER.debug("Initial window size: {}", windowSize); } private void parsePacketSize() { - message.setPacketSize(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Maximum packet size: {}", message.getPacketSize().getValue()); + int packetSize = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setPacketSize(packetSize); + LOGGER.debug("Maximum packet size: {}", packetSize); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenUnknownMessageParser.java index 3a2a2ad56..76398b39b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelOpenUnknownMessageParser.java @@ -30,10 +30,10 @@ public ChannelOpenUnknownMessage createMessage() { } private void parseTypeSpecificData() { - message.setTypeSpecificData(parseByteArrayField(getBytesLeft())); + byte[] typeSpecificData = parseByteArrayField(getBytesLeft()); + message.setTypeSpecificData(typeSpecificData); LOGGER.debug( - "Type specific data: {}", - () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); + "TypeSpecificData: {}", () -> ArrayConverter.bytesToHexString(typeSpecificData)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestBreakMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestBreakMessageParser.java index 0f203b7c7..7236ef573 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestBreakMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestBreakMessageParser.java @@ -30,8 +30,9 @@ public ChannelRequestBreakMessage createMessage() { } private void parseBreakLength() { - message.setBreakLength(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Break length in milliseconds: {}", message.getBreakLength().getValue()); + int breakLength = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setBreakLength(breakLength); + LOGGER.debug("Break length in milliseconds: {}", breakLength); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestEnvMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestEnvMessageParser.java index 97ea72622..c19fef3f9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestEnvMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestEnvMessageParser.java @@ -33,21 +33,21 @@ public ChannelRequestEnvMessage createMessage() { } private void parseVariableName() { - message.setVariableNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Variable name length: {}", message.getVariableNameLength().getValue()); - message.setVariableName(parseByteString(message.getVariableNameLength().getValue())); - LOGGER.debug( - "Variable name: {}", - () -> backslashEscapeString(message.getVariableName().getValue())); + int variableNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setVariableNameLength(variableNameLength); + LOGGER.debug("Variable name length: {}", variableNameLength); + String variableName = parseByteString(variableNameLength); + message.setVariableName(variableName); + LOGGER.debug("Variable name: {}", () -> backslashEscapeString(variableName)); } private void parseVariableValue() { - message.setVariableValueLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Variable value length: {}", message.getVariableValueLength().getValue()); - message.setVariableValue(parseByteString(message.getVariableValueLength().getValue())); - LOGGER.debug( - "Variable value: {}", - () -> backslashEscapeString(message.getVariableValue().getValue())); + int variableValueLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setVariableValueLength(variableValueLength); + LOGGER.debug("Variable value length: {}", variableValueLength); + String variableValue = parseByteString(variableValueLength); + message.setVariableValue(variableValue); + LOGGER.debug("Variable value: {}", () -> backslashEscapeString(variableValue)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExecMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExecMessageParser.java index 60759de83..5af24d2a5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExecMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExecMessageParser.java @@ -31,10 +31,12 @@ public ChannelRequestExecMessage createMessage() { } private void parseCommand() { - message.setCommandLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Command length: {}", message.getCommandLength().getValue()); - message.setCommand(parseByteString(message.getCommandLength().getValue())); - LOGGER.debug("Command: {}", message.getCommand().getValue()); + int commandLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setCommandLength(commandLength); + LOGGER.debug("Command length: {}", commandLength); + String command = parseByteString(commandLength); + message.setCommand(command); + LOGGER.debug("Command: {}", command); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitSignalMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitSignalMessageParser.java index 776a93c5a..ba0322efd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitSignalMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitSignalMessageParser.java @@ -34,11 +34,12 @@ public ChannelRequestExitSignalMessage createMessage() { } private void parseSignalName() { - message.setSignalNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Signal name length: {}", message.getSignalNameLength().getValue()); - message.setSignalName(parseByteString(message.getSignalNameLength().getValue())); - LOGGER.debug( - "Signal name: {}", () -> backslashEscapeString(message.getSignalName().getValue())); + int signalNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setSignalNameLength(signalNameLength); + LOGGER.debug("Signal name length: {}", signalNameLength); + String signalName = parseByteString(signalNameLength); + message.setSignalName(signalName); + LOGGER.debug("Signal name: {}", () -> backslashEscapeString(signalName)); } private void parseCoreDump() { @@ -47,23 +48,21 @@ private void parseCoreDump() { } private void parseErrorMessage() { - message.setErrorMessageLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Error message length: {}", message.getErrorMessageLength().getValue()); - message.setErrorMessage(parseByteString(message.getErrorMessageLength().getValue())); - LOGGER.debug( - "Error message: {}", - () -> backslashEscapeString(message.getErrorMessage().getValue())); + int errorMessageLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setErrorMessageLength(errorMessageLength); + LOGGER.debug("Error message length: {}", errorMessageLength); + String errorMessage = parseByteString(errorMessageLength); + message.setErrorMessage(errorMessage); + LOGGER.debug("Error message: {}", () -> backslashEscapeString(errorMessage)); } private void parseLanguageTag() { - message.setLanguageTagLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Language tag length: {}", message.getLanguageTagLength().getValue()); - message.setLanguageTag( - parseByteString( - message.getLanguageTagLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "Language tag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); + int languageTagLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setLanguageTagLength(languageTagLength); + LOGGER.debug("Language tag length: {}", languageTagLength); + String languageTag = parseByteString(languageTagLength, StandardCharsets.US_ASCII); + message.setLanguageTag(languageTag); + LOGGER.debug("Language tag: {}", () -> backslashEscapeString(languageTag)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitStatusMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitStatusMessageParser.java index 9276d4ae5..ddf0f3cac 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitStatusMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestExitStatusMessageParser.java @@ -31,8 +31,9 @@ public ChannelRequestExitStatusMessage createMessage() { } private void parseExitStatus() { - message.setExitStatus(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Exit status: {}", message.getExitStatus().getValue()); + int exitStatus = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setExitStatus(exitStatus); + LOGGER.debug("Exit status: {}", exitStatus); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestMessageParser.java index 677cf641a..e6c3e0be6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestMessageParser.java @@ -28,18 +28,18 @@ protected ChannelRequestMessageParser(byte[] array, int startPosition) { } private void parseRequestType() { - message.setRequestTypeLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Request type length: {}", message.getRequestTypeLength().getValue()); - message.setRequestType( - parseByteString( - message.getRequestTypeLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("Request type: {}", message.getRequestType().getValue()); + int requestTypeLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setRequestTypeLength(requestTypeLength); + LOGGER.debug("Request type length: {}", requestTypeLength); + String requestType = parseByteString(requestTypeLength, StandardCharsets.US_ASCII); + message.setRequestType(requestType); + LOGGER.debug("Request type: {}", requestType); } private void parseWantReply() { - message.setWantReply(parseByteField(1)); - LOGGER.debug( - "Reply wanted: {}", Converter.byteToBoolean(message.getWantReply().getValue())); + byte wantReply = parseByteField(1); + message.setWantReply(wantReply); + LOGGER.debug("Reply wanted: {}", Converter.byteToBoolean(wantReply)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestPtyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestPtyMessageParser.java index bad5ecf94..5d090bc46 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestPtyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestPtyMessageParser.java @@ -32,47 +32,47 @@ public ChannelRequestPtyMessage createMessage() { } private void parseTermEnvVariable() { - message.setTermEnvVariableLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "TERM environment variable length: {}", - message.getTermEnvVariableLength().getValue()); - message.setTermEnvVariable(parseByteString(message.getTermEnvVariableLength().getValue())); - LOGGER.debug("TERM environment variable: {}", message.getTermEnvVariable().getValue()); + int termEnvVariableLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setTermEnvVariableLength(termEnvVariableLength); + LOGGER.debug("TERM environment variable length: {}", termEnvVariableLength); + String termEnvVariable = parseByteString(termEnvVariableLength); + message.setTermEnvVariable(termEnvVariable); + LOGGER.debug("TERM environment variable: {}", termEnvVariable); } private void parseWidthCharacters() { - message.setWidthCharacters(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Terminal width in characters: {}", message.getWidthCharacters().getValue()); + int widthCharacters = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setWidthCharacters(widthCharacters); + LOGGER.debug("Terminal width in characters: {}", widthCharacters); } private void parseHeightRows() { - message.setHeightRows(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Terminal height in rows: {}", message.getHeightRows().getValue()); + int heightRows = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setHeightRows(heightRows); + LOGGER.debug("Terminal height in rows: {}", heightRows); } private void parseWidthPixels() { - message.setWidthPixels(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Terminal width in pixels: {}", message.getWidthPixels().getValue()); + int widthPixels = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setWidthPixels(widthPixels); + LOGGER.debug("Terminal width in pixels: {}", widthPixels); } private void parseHeightPixels() { - message.setHeightPixels(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Terminal height in pixels: {}", message.getHeightPixels().getValue()); + int heightPixels = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setHeightPixels(heightPixels); + LOGGER.debug("Terminal height in pixels: {}", heightPixels); } private void parseEncodedTerminalModes() { - message.setEncodedTerminalModesLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "Encoded terminal modes length: {}", - message.getEncodedTerminalModesLength().getValue()); - message.setEncodedTerminalModes( - parseByteArrayField(message.getEncodedTerminalModesLength().getValue())); + int encodedTerminalModesLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setEncodedTerminalModesLength(encodedTerminalModesLength); + LOGGER.debug("Encoded terminal modes length: {}", encodedTerminalModesLength); + byte[] encodedTerminalModes = parseByteArrayField(encodedTerminalModesLength); + message.setEncodedTerminalModes(encodedTerminalModes); LOGGER.debug( "Encoded terminal modes: {}", - () -> - ArrayConverter.bytesToHexString( - message.getEncodedTerminalModes().getValue())); + () -> ArrayConverter.bytesToHexString(encodedTerminalModes)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSignalMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSignalMessageParser.java index 68510bb39..ef75f871b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSignalMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSignalMessageParser.java @@ -33,11 +33,12 @@ public ChannelRequestSignalMessage createMessage() { } private void parseSignalName() { - message.setSignalNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Signal name length: {}", message.getSignalNameLength().getValue()); - message.setSignalName(parseByteString(message.getSignalNameLength().getValue())); - LOGGER.debug( - "Signal name: {}", () -> backslashEscapeString(message.getSignalName().getValue())); + int signalNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setSignalNameLength(signalNameLength); + LOGGER.debug("Signal name length: {}", signalNameLength); + String signalName = parseByteString(signalNameLength); + message.setSignalName(signalName); + LOGGER.debug("Signal name: {}", () -> backslashEscapeString(signalName)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSubsystemMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSubsystemMessageParser.java index fef8ff4a1..e7462bd81 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSubsystemMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestSubsystemMessageParser.java @@ -33,14 +33,12 @@ public ChannelRequestSubsystemMessage createMessage() { } private void parseSubsystemName() { - message.setSubsystemNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Subsystem name length: {}", message.getSubsystemNameLength().getValue()); - message.setSubsystemName( - parseByteString( - message.getSubsystemNameLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "Subsystem name: {}", - () -> backslashEscapeString(message.getSubsystemName().getValue())); + int subsystemNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setSubsystemNameLength(subsystemNameLength); + LOGGER.debug("Subsystem name length: {}", subsystemNameLength); + String subsystemName = parseByteString(subsystemNameLength, StandardCharsets.UTF_8); + message.setSubsystemName(subsystemName); + LOGGER.debug("Subsystem name: {}", () -> backslashEscapeString(subsystemName)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestUnknownMessageParser.java index 9565c33a3..b9521de03 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestUnknownMessageParser.java @@ -30,10 +30,10 @@ public ChannelRequestUnknownMessage createMessage() { } private void parseTypeSpecificData() { - message.setTypeSpecificData(parseByteArrayField(getBytesLeft())); + byte[] typeSpecificData = parseByteArrayField(getBytesLeft()); + message.setTypeSpecificData(typeSpecificData); LOGGER.debug( - "Type specific data: {}", - () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); + "TypeSpecificData: {}", () -> ArrayConverter.bytesToHexString(typeSpecificData)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestWindowChangeMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestWindowChangeMessageParser.java index 358b2efe4..5d72d0667 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestWindowChangeMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestWindowChangeMessageParser.java @@ -31,23 +31,27 @@ public ChannelRequestWindowChangeMessage createMessage() { } private void parseWidthColumns() { - message.setWidthColumns(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Terminal width in colums: {}", message.getWidthColumns().getValue()); + int widthColumns = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setWidthColumns(widthColumns); + LOGGER.debug("Terminal width in colums: {}", widthColumns); } private void parseHeightRows() { - message.setHeightRows(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Terminal height in rows: {}", message.getHeightRows().getValue()); + int heightRows = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setHeightRows(heightRows); + LOGGER.debug("Terminal height in rows: {}", heightRows); } private void parseWidthPixels() { - message.setWidthPixels(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Terminal width in pixels: {}", message.getWidthPixels().getValue()); + int widthPixels = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setWidthPixels(widthPixels); + LOGGER.debug("Terminal width in pixels: {}", widthPixels); } private void parseHeightPixels() { - message.setHeightPixels(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Terminal height in pixels: {}", message.getHeightPixels().getValue()); + int heightPixels = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setHeightPixels(heightPixels); + LOGGER.debug("Terminal height in pixels: {}", heightPixels); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestX11MessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestX11MessageParser.java index d594c1d82..787172abe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestX11MessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestX11MessageParser.java @@ -33,25 +33,19 @@ public ChannelRequestX11Message createMessage() { } private void parseSingleConnection() { - message.setSingleConnection(parseByteField(1)); - LOGGER.debug( - "Single connection: {}", - Converter.byteToBoolean(message.getSingleConnection().getValue())); + byte singleConnection = parseByteField(1); + message.setSingleConnection(singleConnection); + LOGGER.debug("Single connection: {}", Converter.byteToBoolean(singleConnection)); } private void parseX11AuthenticationProtocol() { - message.setX11AuthenticationProtocolLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "X11 authentication protocol length: {}", - message.getX11AuthenticationProtocolLength().getValue()); - message.setX11AuthenticationProtocol( - parseByteString( - message.getX11AuthenticationProtocolLength().getValue(), - StandardCharsets.UTF_8)); - LOGGER.debug( - "X11 authentication protocol: {}", - message.getX11AuthenticationProtocol().getValue()); + int x11AuthenticationProtocolLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setX11AuthenticationProtocolLength(x11AuthenticationProtocolLength); + LOGGER.debug("X11 authentication protocol length: {}", x11AuthenticationProtocolLength); + String x11AuthenticationProtocol = + parseByteString(x11AuthenticationProtocolLength, StandardCharsets.UTF_8); + message.setX11AuthenticationProtocol(x11AuthenticationProtocol); + LOGGER.debug("X11 authentication protocol: {}", x11AuthenticationProtocol); } private void parseX11AuthenticationCookie() { @@ -68,8 +62,9 @@ private void parseX11AuthenticationCookie() { } private void parseX11ScreenNumber() { - message.setX11ScreenNumber(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("X11 screen number: {}", message.getX11ScreenNumber().getValue()); + int x11ScreenNumber = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setX11ScreenNumber(x11ScreenNumber); + LOGGER.debug("X11 screen number: {}", x11ScreenNumber); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestXonXoffMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestXonXoffMessageParser.java index 4abdfe9fd..2d023dfc4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestXonXoffMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelRequestXonXoffMessageParser.java @@ -31,10 +31,9 @@ public ChannelRequestXonXoffMessage createMessage() { } private void parseClientFlowControl() { - message.setClientFlowControl(parseByteField(1)); - LOGGER.debug( - "Client can do flow control: {}", - Converter.byteToBoolean(message.getClientFlowControl().getValue())); + byte clientFlowControl = parseByteField(1); + message.setClientFlowControl(clientFlowControl); + LOGGER.debug("Client can do flow control: {}", Converter.byteToBoolean(clientFlowControl)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelWindowAdjustMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelWindowAdjustMessageParser.java index 388f514f3..29357239e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelWindowAdjustMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelWindowAdjustMessageParser.java @@ -31,8 +31,9 @@ public ChannelWindowAdjustMessage createMessage() { } private void parseBytesToAdd() { - message.setBytesToAdd(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Bytes to add: {}", message.getBytesToAdd().getValue()); + int bytesToAdd = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setBytesToAdd(bytesToAdd); + LOGGER.debug("Bytes to add: {}", bytesToAdd); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestCancelTcpIpForwardMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestCancelTcpIpForwardMessageParser.java index 232e90043..c713b9938 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestCancelTcpIpForwardMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestCancelTcpIpForwardMessageParser.java @@ -27,18 +27,18 @@ public GlobalRequestCancelTcpIpForwardMessageParser(byte[] array, int startPosit } private void parseIPAddressToBind() { - message.setIpAddressToBindLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "IP address to bind length: {}", message.getIpAddressToBindLength().getValue()); - message.setIpAddressToBind( - parseByteString( - message.getIpAddressToBindLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("IP address to bind: {}", message.getIpAddressToBind().getValue()); + int ipAddressToBindLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setIpAddressToBindLength(ipAddressToBindLength); + LOGGER.debug("IP address to bind length: {}", ipAddressToBindLength); + String ipAddressToBind = parseByteString(ipAddressToBindLength, StandardCharsets.US_ASCII); + message.setIpAddressToBind(ipAddressToBind); + LOGGER.debug("IP address to bind: {}", ipAddressToBind); } private void parsePortToBind() { - message.setPortToBind(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Port to bind: {}", message.getPortToBind().getValue()); + int portToBind = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setPortToBind(portToBind); + LOGGER.debug("Port to bind: {}", portToBind); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestMessageParser.java index 9ac4c7f38..ea6a8f33d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestMessageParser.java @@ -31,19 +31,18 @@ protected GlobalRequestMessageParser(byte[] array, int startPosition) { } private void parseRequestName() { - message.setRequestNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Request name length: {}", message.getRequestNameLength().getValue()); - message.setRequestName( - parseByteString( - message.getRequestNameLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "Request name: {}", - () -> backslashEscapeString(message.getRequestName().getValue())); + int requestNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setRequestNameLength(requestNameLength); + LOGGER.debug("Request name length: {}", requestNameLength); + String requestName = parseByteString(requestNameLength, StandardCharsets.US_ASCII); + message.setRequestName(requestName); + LOGGER.debug("Request name: {}", () -> backslashEscapeString(requestName)); } private void parseWantReply() { - message.setWantReply(parseByteField(1)); - LOGGER.debug("Want reply: {}", Converter.byteToBoolean(message.getWantReply().getValue())); + byte wantReply = parseByteField(1); + message.setWantReply(wantReply); + LOGGER.debug("Want reply: {}", Converter.byteToBoolean(wantReply)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestOpenSshHostKeysMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestOpenSshHostKeysMessageParser.java index 40260492b..c65d1ae88 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestOpenSshHostKeysMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestOpenSshHostKeysMessageParser.java @@ -26,10 +26,9 @@ public GlobalRequestOpenSshHostKeysMessageParser(byte[] array, int startPosition } private void parseHostKeys() { - message.setHostKeys(parseByteArrayField(getBytesLeft())); - LOGGER.debug( - "Host keys blob: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHostKeys().getValue())); + byte[] hostKeys = parseByteArrayField(getBytesLeft()); + message.setHostKeys(hostKeys); + LOGGER.debug("HostKeys blob: {}", () -> ArrayConverter.bytesToRawHexString(hostKeys)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestTcpIpForwardMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestTcpIpForwardMessageParser.java index e08e9d59e..275decc29 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestTcpIpForwardMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestTcpIpForwardMessageParser.java @@ -27,18 +27,18 @@ public GlobalRequestTcpIpForwardMessageParser(byte[] array, int startPosition) { } private void parseIPAddressToBind() { - message.setIpAddressToBindLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "IP address to bind length: {}", message.getIpAddressToBindLength().getValue()); - message.setIpAddressToBind( - parseByteString( - message.getIpAddressToBindLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("IP address to bind: {}", message.getIpAddressToBind().getValue()); + int ipAddressToBindLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setIpAddressToBindLength(ipAddressToBindLength); + LOGGER.debug("IP address to bind length: {}", ipAddressToBindLength); + String ipAddressToBind = parseByteString(ipAddressToBindLength, StandardCharsets.US_ASCII); + message.setIpAddressToBind(ipAddressToBind); + LOGGER.debug("IP address to bind: {}", ipAddressToBind); } private void parsePortToBind() { - message.setPortToBind(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Port to bind: {}", message.getPortToBind().getValue()); + int portToBind = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setPortToBind(portToBind); + LOGGER.debug("Port to bind: {}", portToBind); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestUnknownMessageParser.java index 0f7d9b0d9..dfc626ef9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/GlobalRequestUnknownMessageParser.java @@ -30,10 +30,10 @@ public GlobalRequestUnknownMessage createMessage() { } private void parseTypeSpecificData() { - message.setTypeSpecificData(parseByteArrayField(getBytesLeft())); + byte[] typeSpecificData = parseByteArrayField(getBytesLeft()); + message.setTypeSpecificData(typeSpecificData); LOGGER.debug( - "Type specific data: {}", - () -> ArrayConverter.bytesToHexString(message.getTypeSpecificData().getValue())); + "TypeSpecificData: {}", () -> ArrayConverter.bytesToHexString(typeSpecificData)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/HybridKeyExchangeReplyMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/HybridKeyExchangeReplyMessageHandler.java index c19f71eef..56caa0a4c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/HybridKeyExchangeReplyMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/HybridKeyExchangeReplyMessageHandler.java @@ -51,20 +51,18 @@ public void adjustContext() { } private void setRemoteValues() { - context.getChooser() - .getHybridKeyExchange() - .getKeyAgreement() - .setRemotePublicKey(message.getPublicKey().getValue()); + byte[] publicKey = message.getPublicKey().getValue(); + context.getChooser().getHybridKeyExchange().getKeyAgreement().setRemotePublicKey(publicKey); LOGGER.info( - "RemoteKey Agreement = {}", - () -> ArrayConverter.bytesToRawHexString(message.getPublicKey().getValue())); + "RemoteKey Agreement = {}", () -> ArrayConverter.bytesToRawHexString(publicKey)); + byte[] combinedKeyShare = message.getCombinedKeyShare().getValue(); context.getChooser() .getHybridKeyExchange() .getKeyEncapsulation() - .setEncryptedSharedSecret(message.getCombinedKeyShare().getValue()); + .setEncryptedSharedSecret(combinedKeyShare); LOGGER.info( "Ciphertext Encapsulation = {}", - () -> ArrayConverter.bytesToRawHexString(message.getCombinedKeyShare().getValue())); + () -> ArrayConverter.bytesToRawHexString(combinedKeyShare)); byte[] combined; switch (context.getChooser().getHybridKeyExchange().getCombiner()) { case CLASSICAL_CONCATENATE_POSTQUANTUM: diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DebugMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DebugMessageParser.java index 5706deafd..0c380fd17 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DebugMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DebugMessageParser.java @@ -35,29 +35,27 @@ public DebugMessage createMessage() { } private void parseAlwaysDisplay() { - message.setAlwaysDisplay(parseByteField(1)); - LOGGER.debug( - "Always display: {}", - Converter.byteToBoolean(message.getAlwaysDisplay().getValue())); + byte alwaysDisplay = parseByteField(1); + message.setAlwaysDisplay(alwaysDisplay); + LOGGER.debug("Always display: {}", Converter.byteToBoolean(alwaysDisplay)); } private void parseMessage() { - message.setMessageLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Message length: {}", message.getMessageLength().getValue()); - message.setMessage( - parseByteString(message.getMessageLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug("Message: {}", () -> backslashEscapeString(message.getMessage().getValue())); + int messageLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setMessageLength(messageLength); + LOGGER.debug("Message length: {}", messageLength); + String messageStr = parseByteString(messageLength, StandardCharsets.UTF_8); + message.setMessage(messageStr); + LOGGER.debug("Message: {}", () -> backslashEscapeString(messageStr)); } private void parseLanguageTag() { - message.setLanguageTagLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Language tag length: {}", message.getLanguageTagLength().getValue()); - message.setLanguageTag( - parseByteString( - message.getLanguageTagLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "Language tag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); + int languageTagLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setLanguageTagLength(languageTagLength); + LOGGER.debug("Language tag length: {}", languageTagLength); + String languageTag = parseByteString(languageTagLength, StandardCharsets.US_ASCII); + message.setLanguageTag(languageTag); + LOGGER.debug("Language tag: {}", () -> backslashEscapeString(languageTag)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeGroupMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeGroupMessageParser.java index e7b1f66d7..ec95aa059 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeGroupMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeGroupMessageParser.java @@ -11,6 +11,7 @@ import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.protocol.common.SshMessageParser; import de.rub.nds.sshattacker.core.protocol.transport.message.DhGexKeyExchangeGroupMessage; +import java.math.BigInteger; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -33,23 +34,29 @@ public DhGexKeyExchangeGroupMessage createMessage() { } private void parseGroupModulus() { - message.setGroupModulusLength(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Group modulus length: {}", message.getGroupModulusLength().getValue()); - message.setGroupModulus(parseBigIntField(message.getGroupModulusLength().getValue())); + int groupModulusLength = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setGroupModulusLength(groupModulusLength); + LOGGER.debug("Group modulus length: {}", groupModulusLength); + BigInteger groupModulus = parseBigIntField(groupModulusLength); + message.setGroupModulus(groupModulus); LOGGER.debug( "Group modulus: {}", - () -> ArrayConverter.bytesToRawHexString(message.getGroupModulus().getByteArray())); + () -> + ArrayConverter.bytesToRawHexString( + ArrayConverter.bigIntegerToByteArray(groupModulus))); } private void parseGroupGenerator() { - message.setGroupGeneratorLength(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Group generator length: {}", message.getGroupGeneratorLength().getValue()); - message.setGroupGenerator(parseBigIntField(message.getGroupGeneratorLength().getValue())); + int groupGeneratorLength = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setGroupGeneratorLength(groupGeneratorLength); + LOGGER.debug("Group generator length: {}", groupGeneratorLength); + BigInteger groupGenerator = parseBigIntField(groupGeneratorLength); + message.setGroupGenerator(groupGenerator); LOGGER.debug( "Group generator: {}", () -> ArrayConverter.bytesToRawHexString( - message.getGroupGenerator().getByteArray())); + ArrayConverter.bigIntegerToByteArray(groupGenerator))); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeInitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeInitMessageParser.java index 29e0da2cd..0e4ce8a3f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeInitMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeInitMessageParser.java @@ -10,6 +10,7 @@ import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.protocol.common.SshMessageParser; import de.rub.nds.sshattacker.core.protocol.transport.message.DhGexKeyExchangeInitMessage; +import java.math.BigInteger; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -32,13 +33,12 @@ protected DhGexKeyExchangeInitMessage createMessage() { } private void parseEphemeralPublicKey() { - message.setEphemeralPublicKeyLength(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug( - "Ephemeral public key (client) length: {}", message.getEphemeralPublicKeyLength()); - message.setEphemeralPublicKey( - parseBigIntField(message.getEphemeralPublicKeyLength().getValue())); - LOGGER.debug( - "Ephemeral public key (client): {}", message.getEphemeralPublicKey().getValue()); + int ephemeralPublicKeyLength = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setEphemeralPublicKeyLength(ephemeralPublicKeyLength); + LOGGER.debug("Ephemeral public key (client) length: {}", ephemeralPublicKeyLength); + BigInteger ephemeralPublicKey = parseBigIntField(ephemeralPublicKeyLength); + message.setEphemeralPublicKey(ephemeralPublicKey); + LOGGER.debug("Ephemeral public key (client): {}", ephemeralPublicKey); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeOldRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeOldRequestMessageParser.java index b1a3d11ae..5a3c40111 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeOldRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeOldRequestMessageParser.java @@ -32,8 +32,9 @@ protected DhGexKeyExchangeOldRequestMessage createMessage() { } private void parsePreferredGroupSize() { - message.setPreferredGroupSize(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Preferred group size: {} bits", message.getPreferredGroupSize().getValue()); + int preferredGroupSize = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setPreferredGroupSize(preferredGroupSize); + LOGGER.debug("Preferred group size: {} bits", preferredGroupSize); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeReplyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeReplyMessageParser.java index 5796038c8..8c6197ad5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeReplyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeReplyMessageParser.java @@ -10,6 +10,7 @@ import de.rub.nds.sshattacker.core.constants.BinaryPacketConstants; import de.rub.nds.sshattacker.core.protocol.common.SshMessageParser; import de.rub.nds.sshattacker.core.protocol.transport.message.DhGexKeyExchangeReplyMessage; +import java.math.BigInteger; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -32,29 +33,30 @@ public DhGexKeyExchangeReplyMessage createMessage() { } private void parseHostKeyBytes() { - message.setHostKeyBytesLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); - LOGGER.debug("Host key bytes length: {}", message.getHostKeyBytesLength().getValue()); - message.setHostKeyBytes(parseByteArrayField(message.getHostKeyBytesLength().getValue())); - LOGGER.debug("Host key bytes: {}", message.getHostKeyBytes()); + int hostKeyBytesLength = parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); + message.setHostKeyBytesLength(hostKeyBytesLength); + LOGGER.debug("Host key bytes length: {}", hostKeyBytesLength); + byte[] hostKeyBytes = parseByteArrayField(hostKeyBytesLength); + message.setHostKeyBytes(hostKeyBytes); + LOGGER.debug("Host key bytes: {}", hostKeyBytes); } private void parseEphemeralPublicKey() { - message.setEphemeralPublicKeyLength( - parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); - LOGGER.debug( - "Ephemeral public key (server) length: {}", - message.getEphemeralPublicKeyLength().getValue()); - message.setEphemeralPublicKey( - parseBigIntField(message.getEphemeralPublicKeyLength().getValue())); - LOGGER.debug( - "Ephemeral public key (server): {}", message.getEphemeralPublicKey().getValue()); + int ephemeralPublicKeyLength = parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); + message.setEphemeralPublicKeyLength(ephemeralPublicKeyLength); + LOGGER.debug("Ephemeral public key (server) length: {}", ephemeralPublicKeyLength); + BigInteger ephemeralPublicKey = parseBigIntField(ephemeralPublicKeyLength); + message.setEphemeralPublicKey(ephemeralPublicKey); + LOGGER.debug("Ephemeral public key (server): {}", ephemeralPublicKey); } private void parseSignature() { - message.setSignatureLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); - LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); - message.setSignature(parseByteArrayField(message.getSignatureLength().getValue())); - LOGGER.debug("Signature: {}", message.getSignature()); + int signatureLength = parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); + message.setSignatureLength(signatureLength); + LOGGER.debug("Signature length: {}", signatureLength); + byte[] signature = parseByteArrayField(signatureLength); + message.setSignature(signature); + LOGGER.debug("Signature: {}", signature); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeRequestMessageParser.java index 984ec3f5f..90ac1b497 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeRequestMessageParser.java @@ -32,19 +32,21 @@ public DhGexKeyExchangeRequestMessage createMessage() { } private void parseMinimalGroupSize() { - message.setMinimalGroupSize(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Minimal DH group size: {} bits", message.getMinimalGroupSize().getValue()); + int minimalGroupSize = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setMinimalGroupSize(minimalGroupSize); + LOGGER.debug("Minimal DH group size: {} bits", minimalGroupSize); } private void parsePreferredGroupSize() { - message.setPreferredGroupSize(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug( - "Preferred DH group size: {} bits", message.getPreferredGroupSize().getValue()); + int preferredGroupSize = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setPreferredGroupSize(preferredGroupSize); + LOGGER.debug("Preferred DH group size: {} bits", preferredGroupSize); } private void parseMaximalGroupSize() { - message.setMaximalGroupSize(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Maximal DH group size: {} bits", message.getMaximalGroupSize().getValue()); + int maximalGroupSize = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setMaximalGroupSize(maximalGroupSize); + LOGGER.debug("Maximal DH group size: {} bits", maximalGroupSize); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeInitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeInitMessageParser.java index 0f9ba218c..b0611f4ab 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeInitMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeInitMessageParser.java @@ -10,6 +10,7 @@ import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.protocol.common.SshMessageParser; import de.rub.nds.sshattacker.core.protocol.transport.message.DhKeyExchangeInitMessage; +import java.math.BigInteger; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -31,13 +32,12 @@ protected DhKeyExchangeInitMessage createMessage() { } private void parseEphemeralPublicKey() { - message.setEphemeralPublicKeyLength(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug( - "Ephemeral public key (client) length: {}", message.getEphemeralPublicKeyLength()); - message.setEphemeralPublicKey( - parseBigIntField(message.getEphemeralPublicKeyLength().getValue())); - LOGGER.debug( - "Ephemeral public key (client): {}", message.getEphemeralPublicKey().getValue()); + int ephemeralPublicKeyLength = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setEphemeralPublicKeyLength(ephemeralPublicKeyLength); + LOGGER.debug("Ephemeral public key (client) length: {}", ephemeralPublicKeyLength); + BigInteger ephemeralPublicKey = parseBigIntField(ephemeralPublicKeyLength); + message.setEphemeralPublicKey(ephemeralPublicKey); + LOGGER.debug("Ephemeral public key (client): {}", ephemeralPublicKey); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeReplyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeReplyMessageParser.java index ffc577fb8..601a5736e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeReplyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeReplyMessageParser.java @@ -11,6 +11,7 @@ import de.rub.nds.sshattacker.core.constants.BinaryPacketConstants; import de.rub.nds.sshattacker.core.protocol.common.SshMessageParser; import de.rub.nds.sshattacker.core.protocol.transport.message.DhKeyExchangeReplyMessage; +import java.math.BigInteger; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -32,30 +33,30 @@ public DhKeyExchangeReplyMessage createMessage() { } private void parseHostKeyBytes() { - message.setHostKeyBytesLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); - LOGGER.debug("Host key bytes length: {}", message.getHostKeyBytesLength().getValue()); - message.setHostKeyBytes(parseByteArrayField(message.getHostKeyBytesLength().getValue())); - LOGGER.debug( - "Host key bytes: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); + int hostKeyBytesLength = parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); + message.setHostKeyBytesLength(hostKeyBytesLength); + LOGGER.debug("Host key bytes length: {}", hostKeyBytesLength); + byte[] hostKeyBytes = parseByteArrayField(hostKeyBytesLength); + message.setHostKeyBytes(hostKeyBytes); + LOGGER.debug("Host key bytes: {}", () -> ArrayConverter.bytesToRawHexString(hostKeyBytes)); } private void parseEphemeralPublicKey() { - message.setEphemeralPublicKeyLength( - parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); - LOGGER.debug( - "Ephemeral public key (server) length: {}", - message.getEphemeralPublicKeyLength().getValue()); - message.setEphemeralPublicKey( - parseBigIntField(message.getEphemeralPublicKeyLength().getValue())); - LOGGER.debug("Ephemeral public key (server): {}", message.getEphemeralPublicKey()); + int ephemeralPublicKeyLength = parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); + message.setEphemeralPublicKeyLength(ephemeralPublicKeyLength); + LOGGER.debug("Ephemeral public key (server) length: {}", ephemeralPublicKeyLength); + BigInteger ephemeralPublicKey = parseBigIntField(ephemeralPublicKeyLength); + message.setEphemeralPublicKey(ephemeralPublicKey); + LOGGER.debug("Ephemeral public key (server): {}", ephemeralPublicKey); } private void parseSignature() { - message.setSignatureLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); - LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); - message.setSignature(parseByteArrayField(message.getSignatureLength().getValue())); - LOGGER.debug("Signature: {}", message.getSignature()); + int signatureLength = parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); + message.setSignatureLength(signatureLength); + LOGGER.debug("Signature length: {}", signatureLength); + byte[] signature = parseByteArrayField(signatureLength); + message.setSignature(signature); + LOGGER.debug("Signature: {}", signature); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DisconnectMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DisconnectMessageParser.java index 0f10d180b..61a9039b3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DisconnectMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DisconnectMessageParser.java @@ -47,24 +47,21 @@ private void parseReasonCode() { } private void parseDescription() { - message.setDescriptionLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Description length: {}", message.getDescriptionLength().getValue()); - message.setDescription( - parseByteString(message.getDescriptionLength().getValue(), StandardCharsets.UTF_8)); - LOGGER.debug( - "Description: {}", - () -> backslashEscapeString(message.getDescription().getValue())); + int descriptionLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setDescriptionLength(descriptionLength); + LOGGER.debug("Description length: {}", descriptionLength); + String description = parseByteString(descriptionLength, StandardCharsets.UTF_8); + message.setDescription(description); + LOGGER.debug("Description: {}", () -> backslashEscapeString(description)); } private void parseLanguageTag() { - message.setLanguageTagLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Language tag length: {}", message.getLanguageTagLength().getValue()); - message.setLanguageTag( - parseByteString( - message.getLanguageTagLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "Language tag: {}", - () -> backslashEscapeString(message.getLanguageTag().getValue())); + int languageTagLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setLanguageTagLength(languageTagLength); + LOGGER.debug("Language tag length: {}", languageTagLength); + String languageTag = parseByteString(languageTagLength, StandardCharsets.US_ASCII); + message.setLanguageTag(languageTag); + LOGGER.debug("Language tag: {}", () -> backslashEscapeString(languageTag)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeInitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeInitMessageParser.java index 73d97f11b..83f41498a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeInitMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeInitMessageParser.java @@ -32,17 +32,14 @@ public EcdhKeyExchangeInitMessage createMessage() { } private void parseEphemeralPublicKey() { - message.setEphemeralPublicKeyLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "Ephemeral public key (client) length: {}", - message.getEphemeralPublicKeyLength().getValue()); - message.setEphemeralPublicKey( - parseByteArrayField(message.getEphemeralPublicKeyLength().getValue())); + int ephemeralPublicKeyLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setEphemeralPublicKeyLength(ephemeralPublicKeyLength); + LOGGER.debug("Ephemeral public key (client) length: {}", ephemeralPublicKeyLength); + byte[] ephemeralPublicKey = parseByteArrayField(ephemeralPublicKeyLength); + message.setEphemeralPublicKey(ephemeralPublicKey); LOGGER.debug( "Ephemeral public key (client): {}", - () -> - ArrayConverter.bytesToRawHexString( - message.getEphemeralPublicKey().getValue())); + () -> ArrayConverter.bytesToRawHexString(ephemeralPublicKey)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeReplyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeReplyMessageParser.java index c378540d0..d65783057 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeReplyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/EcdhKeyExchangeReplyMessageParser.java @@ -34,35 +34,32 @@ public EcdhKeyExchangeReplyMessage createMessage() { } private void parseHostKeyBytes() { - message.setHostKeyBytesLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); - LOGGER.debug("Host key bytes length: {}", message.getHostKeyBytesLength().getValue()); - message.setHostKeyBytes(parseByteArrayField(message.getHostKeyBytesLength().getValue())); - LOGGER.debug( - "Host key bytes: {}", - () -> ArrayConverter.bytesToRawHexString(message.getHostKeyBytes().getValue())); + int hostKeyBytesLength = parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); + message.setHostKeyBytesLength(hostKeyBytesLength); + LOGGER.debug("Host key bytes length: {}", hostKeyBytesLength); + byte[] hostKeyBytes = parseByteArrayField(hostKeyBytesLength); + message.setHostKeyBytes(hostKeyBytes); + LOGGER.debug("Host key bytes: {}", () -> ArrayConverter.bytesToRawHexString(hostKeyBytes)); } private void parseEphemeralPublicKey() { - message.setEphemeralPublicKeyLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "Ephemeral public key (server) length: {}", - message.getEphemeralPublicKeyLength().getValue()); - message.setEphemeralPublicKey( - parseByteArrayField(message.getEphemeralPublicKeyLength().getValue())); + int ephemeralPublicKeyLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setEphemeralPublicKeyLength(ephemeralPublicKeyLength); + LOGGER.debug("Ephemeral public key (server) length: {}", ephemeralPublicKeyLength); + byte[] ephemeralPublicKey = parseByteArrayField(ephemeralPublicKeyLength); + message.setEphemeralPublicKey(ephemeralPublicKey); LOGGER.debug( "Ephemeral public key (server): {}", - () -> - ArrayConverter.bytesToRawHexString( - message.getEphemeralPublicKey().getValue())); + () -> ArrayConverter.bytesToRawHexString(ephemeralPublicKey)); } private void parseSignature() { - message.setSignatureLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); - message.setSignature(parseByteArrayField(message.getSignatureLength().getValue())); - LOGGER.debug( - "Signature :{}", - () -> ArrayConverter.bytesToRawHexString(message.getSignature().getValue())); + int signatureLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setSignatureLength(signatureLength); + LOGGER.debug("Signature length: {}", signatureLength); + byte[] signature = parseByteArrayField(signatureLength); + message.setSignature(signature); + LOGGER.debug("Signature :{}", () -> ArrayConverter.bytesToRawHexString(signature)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/ExtensionInfoMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/ExtensionInfoMessageParser.java index c580bb2ef..a02d343f9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/ExtensionInfoMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/ExtensionInfoMessageParser.java @@ -34,8 +34,9 @@ public ExtensionInfoMessage createMessage() { } private void parseExtensionCount() { - message.setExtensionCount(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Extension count: {}", message.getExtensionCount().getValue()); + int extensionCount = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setExtensionCount(extensionCount); + LOGGER.debug("Extension count: {}", extensionCount); } private void parseExtensions() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java index 82b635dee..804186e14 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java @@ -46,12 +46,12 @@ public HybridKeyExchangeReplyMessageParser( } private void parseHostKeyBytes() { - message.setHostKeyBytesLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); - LOGGER.debug("Host key byte length{}", message.getHostKeyBytesLength()); - message.setHostKeyBytes(parseByteArrayField(message.getHostKeyBytesLength().getValue())); - LOGGER.debug( - "Host key bytes: {}", - () -> ArrayConverter.bytesToHexString(message.getHostKeyBytes().getValue())); + int hostKeyBytesLength = parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); + message.setHostKeyBytesLength(hostKeyBytesLength); + LOGGER.debug("Host key byte length{}", hostKeyBytesLength); + byte[] hostKeyBytes = parseByteArrayField(hostKeyBytesLength); + message.setHostKeyBytes(hostKeyBytes); + LOGGER.debug("Host key bytes: {}", () -> ArrayConverter.bytesToHexString(hostKeyBytes)); } private void parseHybridKey() { @@ -78,10 +78,12 @@ private void parseHybridKey() { } private void parseSignature() { - message.setSignatureLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); - LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); - message.setSignature(parseByteArrayField(message.getSignatureLength().getValue())); - LOGGER.debug("Signature: {}", message.getSignature()); + int signatureLength = parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); + message.setSignatureLength(signatureLength); + LOGGER.debug("Signature length: {}", signatureLength); + byte[] signature = parseByteArrayField(signatureLength); + message.setSignature(signature); + LOGGER.debug("Signature: {}", signature); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/IgnoreMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/IgnoreMessageParser.java index 201f310ff..e7fe50549 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/IgnoreMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/IgnoreMessageParser.java @@ -32,11 +32,12 @@ public IgnoreMessage createMessage() { } private void parseData() { - message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Data length: {}", message.getDataLength().getValue()); - message.setData(parseByteArrayField(message.getDataLength().getValue())); - LOGGER.debug( - "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); + int dataLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setDataLength(dataLength); + LOGGER.debug("Data length: {}", dataLength); + byte[] data = parseByteArrayField(dataLength); + message.setData(data); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/KeyExchangeInitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/KeyExchangeInitMessageParser.java index fd7f73068..29df40368 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/KeyExchangeInitMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/KeyExchangeInitMessageParser.java @@ -41,173 +41,156 @@ private void parseCookie() { } private void parseKeyExchangeAlgorithms() { - message.setKeyExchangeAlgorithmsLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + int keyExchangeAlgorithmsLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setKeyExchangeAlgorithmsLength(keyExchangeAlgorithmsLength); + LOGGER.debug("Key exchange algorithms length: {}", keyExchangeAlgorithmsLength); + String keyExchangeAlgorithms = + parseByteString(keyExchangeAlgorithmsLength, StandardCharsets.US_ASCII); + message.setKeyExchangeAlgorithms(keyExchangeAlgorithms); LOGGER.debug( - "Key exchange algorithms length: {}", - message.getKeyExchangeAlgorithmsLength().getValue()); - message.setKeyExchangeAlgorithms( - parseByteString( - message.getKeyExchangeAlgorithmsLength().getValue(), - StandardCharsets.US_ASCII)); - LOGGER.debug( - "Key exchange algorithms: {}", - () -> backslashEscapeString(message.getKeyExchangeAlgorithms().getValue())); + "Key exchange algorithms: {}", () -> backslashEscapeString(keyExchangeAlgorithms)); } private void parseServerHostKeyAlgorithms() { - message.setServerHostKeyAlgorithmsLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "Server host key algorithms length: {}", - message.getServerHostKeyAlgorithmsLength().getValue()); - message.setServerHostKeyAlgorithms( - parseByteString( - message.getServerHostKeyAlgorithmsLength().getValue(), - StandardCharsets.US_ASCII)); + int serverHostKeyAlgorithmsLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setServerHostKeyAlgorithmsLength(serverHostKeyAlgorithmsLength); + LOGGER.debug("Server host key algorithms length: {}", serverHostKeyAlgorithmsLength); + String serverHostKeyAlgorithms = + parseByteString(serverHostKeyAlgorithmsLength, StandardCharsets.US_ASCII); + message.setServerHostKeyAlgorithms(serverHostKeyAlgorithms); LOGGER.debug( "Server host key algorithms: {}", - () -> backslashEscapeString(message.getServerHostKeyAlgorithms().getValue())); + () -> backslashEscapeString(serverHostKeyAlgorithms)); } private void parseEncryptionAlgorithmsClientToServer() { + int encryptionAlgorithmsClientToServerLength = + parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); message.setEncryptionAlgorithmsClientToServerLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + encryptionAlgorithmsClientToServerLength); LOGGER.debug( "Encryption algorithms length (client to server): {}", - message.getEncryptionAlgorithmsClientToServerLength().getValue()); - message.setEncryptionAlgorithmsClientToServer( + encryptionAlgorithmsClientToServerLength); + String encryptionAlgorithmsClientToServer = parseByteString( - message.getEncryptionAlgorithmsClientToServerLength().getValue(), - StandardCharsets.US_ASCII)); + encryptionAlgorithmsClientToServerLength, StandardCharsets.US_ASCII); + message.setEncryptionAlgorithmsClientToServer(encryptionAlgorithmsClientToServer); LOGGER.debug( "Encryption algorithms (client to server): {}", - () -> - backslashEscapeString( - message.getEncryptionAlgorithmsClientToServer().getValue())); + () -> backslashEscapeString(encryptionAlgorithmsClientToServer)); } private void parseEncryptionAlgorithmsServerToClient() { + int encryptionAlgorithmsServerToClientLength = + parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); message.setEncryptionAlgorithmsServerToClientLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + encryptionAlgorithmsServerToClientLength); LOGGER.debug( "Encryption algorithms length (server to client): {}", - message.getEncryptionAlgorithmsServerToClientLength().getValue()); - message.setEncryptionAlgorithmsServerToClient( + encryptionAlgorithmsServerToClientLength); + String encryptionAlgorithmsServerToClient = parseByteString( - message.getEncryptionAlgorithmsServerToClientLength().getValue(), - StandardCharsets.US_ASCII)); + encryptionAlgorithmsServerToClientLength, StandardCharsets.US_ASCII); + message.setEncryptionAlgorithmsServerToClient(encryptionAlgorithmsServerToClient); LOGGER.debug( "Encryption algorithms (server to client): {}", - () -> - backslashEscapeString( - message.getEncryptionAlgorithmsServerToClient().getValue())); + () -> backslashEscapeString(encryptionAlgorithmsServerToClient)); } private void parseMacAlgorithmsClientToServer() { - message.setMacAlgorithmsClientToServerLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + int macAlgorithmsClientToServerLength = + parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setMacAlgorithmsClientToServerLength(macAlgorithmsClientToServerLength); LOGGER.debug( - "MAC algorithms length (client to server): {}", - message.getMacAlgorithmsClientToServerLength().getValue()); - message.setMacAlgorithmsClientToServer( - parseByteString( - message.getMacAlgorithmsClientToServerLength().getValue(), - StandardCharsets.US_ASCII)); + "MAC algorithms length (client to server): {}", macAlgorithmsClientToServerLength); + String macAlgorithmsClientToServer = + parseByteString(macAlgorithmsClientToServerLength, StandardCharsets.US_ASCII); + message.setMacAlgorithmsClientToServer(macAlgorithmsClientToServer); LOGGER.debug( "MAC algorithms (client to server): {}", - () -> backslashEscapeString(message.getMacAlgorithmsClientToServer().getValue())); + () -> backslashEscapeString(macAlgorithmsClientToServer)); } private void parseMacAlgorithmsServerToClient() { - message.setMacAlgorithmsServerToClientLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + int macAlgorithmsServerToClientLength = + parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setMacAlgorithmsServerToClientLength(macAlgorithmsServerToClientLength); LOGGER.debug( - "MAC algorithms length (server to client): {}", - message.getMacAlgorithmsServerToClientLength().getValue()); - message.setMacAlgorithmsServerToClient( - parseByteString( - message.getMacAlgorithmsServerToClientLength().getValue(), - StandardCharsets.US_ASCII)); + "MAC algorithms length (server to client): {}", macAlgorithmsServerToClientLength); + String macAlgorithmsServerToClient = + parseByteString(macAlgorithmsServerToClientLength, StandardCharsets.US_ASCII); + message.setMacAlgorithmsServerToClient(macAlgorithmsServerToClient); LOGGER.debug( "MAC algorithms (server to client): {}", - () -> backslashEscapeString(message.getMacAlgorithmsServerToClient().getValue())); + () -> backslashEscapeString(macAlgorithmsServerToClient)); } private void parseCompressionMethodsClientToServer() { - message.setCompressionMethodsClientToServerLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + int compressionMethodsClientToServerLength = + parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setCompressionMethodsClientToServerLength(compressionMethodsClientToServerLength); LOGGER.debug( "Compression algorithms length (client to server): {}", - message.getCompressionMethodsClientToServerLength().getValue()); - message.setCompressionMethodsClientToServer( - parseByteString( - message.getCompressionMethodsClientToServerLength().getValue(), - StandardCharsets.US_ASCII)); + compressionMethodsClientToServerLength); + String compressionMethodsClientToServer = + parseByteString(compressionMethodsClientToServerLength, StandardCharsets.US_ASCII); + message.setCompressionMethodsClientToServer(compressionMethodsClientToServer); LOGGER.debug( "Compression algorithms (client to server): {}", - () -> - backslashEscapeString( - message.getCompressionMethodsClientToServer().getValue())); + () -> backslashEscapeString(compressionMethodsClientToServer)); } private void parseCompressionMethodsServerToClient() { - message.setCompressionMethodsServerToClientLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + int compressionMethodsServerToClientLength = + parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setCompressionMethodsServerToClientLength(compressionMethodsServerToClientLength); LOGGER.debug( "Compression algorithms length (server to client): {}", - message.getCompressionMethodsServerToClientLength().getValue()); - message.setCompressionMethodsServerToClient( - parseByteString( - message.getCompressionMethodsServerToClientLength().getValue(), - StandardCharsets.US_ASCII)); + compressionMethodsServerToClientLength); + String compressionMethodsServerToClient = + parseByteString(compressionMethodsServerToClientLength, StandardCharsets.US_ASCII); + message.setCompressionMethodsServerToClient(compressionMethodsServerToClient); LOGGER.debug( "Compression algorithms (server to client): {}", - () -> - backslashEscapeString( - message.getCompressionMethodsServerToClient().getValue())); + () -> backslashEscapeString(compressionMethodsServerToClient)); } private void parseLanguagesClientToServer() { - message.setLanguagesClientToServerLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "Languages length (client to server): {}", - message.getLanguagesClientToServerLength().getValue()); - message.setLanguagesClientToServer( - parseByteString( - message.getLanguagesClientToServerLength().getValue(), - StandardCharsets.US_ASCII)); + int languagesClientToServerLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setLanguagesClientToServerLength(languagesClientToServerLength); + LOGGER.debug("Languages length (client to server): {}", languagesClientToServerLength); + String languagesClientToServer = + parseByteString(languagesClientToServerLength, StandardCharsets.US_ASCII); + message.setLanguagesClientToServer(languagesClientToServer); LOGGER.debug( "Languages (client to server): {}", - () -> backslashEscapeString(message.getLanguagesClientToServer().getValue())); + () -> backslashEscapeString(languagesClientToServer)); } private void parseLanguagesServerToClient() { - message.setLanguagesServerToClientLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "Languages length (server to client): {}", - message.getLanguagesServerToClientLength().getValue()); - message.setLanguagesServerToClient( - parseByteString( - message.getLanguagesServerToClientLength().getValue(), - StandardCharsets.US_ASCII)); + int languagesServerToClientLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setLanguagesServerToClientLength(languagesServerToClientLength); + LOGGER.debug("Languages length (server to client): {}", languagesServerToClientLength); + String languagesServerToClient = + parseByteString(languagesServerToClientLength, StandardCharsets.US_ASCII); + message.setLanguagesServerToClient(languagesServerToClient); LOGGER.debug( "Languages (server to client): {}", - () -> backslashEscapeString(message.getLanguagesServerToClient().getValue())); + () -> backslashEscapeString(languagesServerToClient)); } private void parseFirstKeyExchangePacketFollows() { - message.setFirstKeyExchangePacketFollows(parseByteField(1)); + byte firstKeyExchangePacketFollows = parseByteField(1); + message.setFirstKeyExchangePacketFollows(firstKeyExchangePacketFollows); LOGGER.debug( "First key exchange packet follows: {}", - Converter.byteToBoolean(message.getFirstKeyExchangePacketFollows().getValue())); + Converter.byteToBoolean(firstKeyExchangePacketFollows)); } private void parseReserved() { - message.setReserved(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Reserved: {}", message.getReserved().getValue()); + int reserved = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setReserved(reserved); + LOGGER.debug("Reserved: {}", reserved); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PingMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PingMessageParser.java index aab1a8425..5cc9da65a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PingMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PingMessageParser.java @@ -33,10 +33,11 @@ protected PingMessage createMessage() { @Override protected void parseMessageSpecificContents() { - message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Data length: {}", message.getDataLength().getValue()); - message.setData(parseByteArrayField(message.getDataLength().getValue())); - LOGGER.debug( - "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); + int dataLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setDataLength(dataLength); + LOGGER.debug("Data length: {}", dataLength); + byte[] data = parseByteArrayField(dataLength); + message.setData(data); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PongMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PongMessageParser.java index ab124beb2..8dd1ac999 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PongMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/PongMessageParser.java @@ -33,10 +33,11 @@ protected PongMessage createMessage() { @Override protected void parseMessageSpecificContents() { - message.setDataLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Data length: {}", message.getDataLength().getValue()); - message.setData(parseByteArrayField(message.getDataLength().getValue())); - LOGGER.debug( - "Data: {}", () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); + int dataLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setDataLength(dataLength); + LOGGER.debug("Data length: {}", dataLength); + byte[] data = parseByteArrayField(dataLength); + message.setData(data); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangeDoneMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangeDoneMessageParser.java index 392449c99..973a24d49 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangeDoneMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangeDoneMessageParser.java @@ -36,9 +36,11 @@ protected void parseMessageSpecificContents() { } private void parseSignature() { - message.setSignatureLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); - LOGGER.debug("Signature length: {}", message.getSignatureLength().getValue()); - message.setSignature(parseByteArrayField(message.getSignatureLength().getValue())); - LOGGER.debug("Signature: {}", message.getSignature()); + int signatureLength = parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); + message.setSignatureLength(signatureLength); + LOGGER.debug("Signature length: {}", signatureLength); + byte[] signature = parseByteArrayField(signatureLength); + message.setSignature(signature); + LOGGER.debug("Signature: {}", signature); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangePubkeyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangePubkeyMessageParser.java index c3c6376f4..25c4672b6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangePubkeyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangePubkeyMessageParser.java @@ -32,21 +32,22 @@ protected RsaKeyExchangePubkeyMessage createMessage() { } private void parseHostKeyBytes() { - message.setHostKeyBytesLength(parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); - LOGGER.debug("Host key bytes length: {}", message.getHostKeyBytesLength().getValue()); - message.setHostKeyBytes(parseByteArrayField(message.getHostKeyBytesLength().getValue())); - LOGGER.debug("Host key bytes: {}", message.getHostKeyBytes().getValue()); + int hostKeyBytesLength = parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); + message.setHostKeyBytesLength(hostKeyBytesLength); + LOGGER.debug("Host key bytes length: {}", hostKeyBytesLength); + byte[] hostKeyBytes = parseByteArrayField(hostKeyBytesLength); + message.setHostKeyBytes(hostKeyBytes); + LOGGER.debug("Host key bytes: {}", hostKeyBytes); } private void parseTransientPublicKey() { - message.setTransientPublicKeyBytesLength( - parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH)); - LOGGER.debug( - "Transient public key length: {}", - message.getTransientPublicKeyBytesLength().getValue()); - message.setTransientPublicKeyBytes( - parseByteArrayField(message.getTransientPublicKeyBytesLength().getValue())); - LOGGER.debug("Transient public key: {}", message.getTransientPublicKeyBytes().getValue()); + int transientPublicKeyBytesLength = + parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); + message.setTransientPublicKeyBytesLength(transientPublicKeyBytesLength); + LOGGER.debug("Transient public key length: {}", transientPublicKeyBytesLength); + byte[] transientPublicKeyBytes = parseByteArrayField(transientPublicKeyBytesLength); + message.setTransientPublicKeyBytes(transientPublicKeyBytes); + LOGGER.debug("Transient public key: {}", transientPublicKeyBytes); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangeSecretMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangeSecretMessageParser.java index a1fac2121..291582e26 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangeSecretMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangeSecretMessageParser.java @@ -32,11 +32,12 @@ public RsaKeyExchangeSecretMessage createMessage() { } private void parseEncryptedSecret() { - message.setEncryptedSecretLength(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Encrypted secret length: {}", message.getEncryptedSecretLength().getValue()); - message.setEncryptedSecret( - parseByteArrayField(message.getEncryptedSecretLength().getValue())); - LOGGER.debug("Encrypted secret: {}", message.getEncryptedSecret()); + int encryptedSecretLength = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setEncryptedSecretLength(encryptedSecretLength); + LOGGER.debug("Encrypted secret length: {}", encryptedSecretLength); + byte[] encryptedSecret = parseByteArrayField(encryptedSecretLength); + message.setEncryptedSecret(encryptedSecret); + LOGGER.debug("Encrypted secret: {}", encryptedSecret); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/ServiceRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/ServiceRequestMessageParser.java index 04d505df0..3fed23c58 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/ServiceRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/ServiceRequestMessageParser.java @@ -29,14 +29,12 @@ public ServiceRequestMessageParser(byte[] array, int startPosition) { } private void parseServiceName() { - message.setServiceNameLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Service name length: {}", message.getServiceNameLength().getValue()); - message.setServiceName( - parseByteString( - message.getServiceNameLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug( - "Service name: {}", - () -> backslashEscapeString(message.getServiceName().getValue())); + int serviceNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + message.setServiceNameLength(serviceNameLength); + LOGGER.debug("Service name length: {}", serviceNameLength); + String serviceName = parseByteString(serviceNameLength, StandardCharsets.US_ASCII); + message.setServiceName(serviceName); + LOGGER.debug("Service name: {}", () -> backslashEscapeString(serviceName)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/UnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/UnknownMessageParser.java index bd9793d36..553c9c16d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/UnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/UnknownMessageParser.java @@ -32,9 +32,8 @@ public UnknownMessage createMessage() { @Override protected void parseMessageSpecificContents() { - message.setPayload(parseArrayOrTillEnd(-1)); - LOGGER.debug( - "Payload: {}", - () -> ArrayConverter.bytesToRawHexString(message.getPayload().getValue())); + byte[] payload = parseByteArrayField(getBytesLeft()); + message.setPayload(payload); + LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToRawHexString(payload)); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/AbstractExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/AbstractExtensionParser.java index abfb62976..e38ca1b6b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/AbstractExtensionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/AbstractExtensionParser.java @@ -38,11 +38,12 @@ public final E parse() { } protected void parseExtensionName() { - extension.setNameLength(parseIntField(DataFormatConstants.UINT32_SIZE)); - LOGGER.debug("Extension name length: {}", extension.getNameLength().getValue()); - extension.setName( - parseByteString(extension.getNameLength().getValue(), StandardCharsets.US_ASCII)); - LOGGER.debug("Extension name: {}", extension.getName().getValue()); + int nameLength = parseIntField(DataFormatConstants.UINT32_SIZE); + extension.setNameLength(nameLength); + LOGGER.debug("Extension name length: {}", nameLength); + String name = parseByteString(nameLength, StandardCharsets.US_ASCII); + extension.setName(name); + LOGGER.debug("Extension name: {}", name); } protected abstract void parseExtensionValue(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/DelayCompressionExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/DelayCompressionExtensionParser.java index eb4501bad..d688e4f90 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/DelayCompressionExtensionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/DelayCompressionExtensionParser.java @@ -39,40 +39,34 @@ protected void parseExtensionValue() { } private void parseCompressionMethodsLength() { - extension.setCompressionMethodsLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "Compression methods length: {}", - extension.getCompressionMethodsLength().getValue()); + int compressionMethodsLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + extension.setCompressionMethodsLength(compressionMethodsLength); + LOGGER.debug("Compression methods length: {}", compressionMethodsLength); } private void parseCompressionMethodsClientToServer() { - extension.setCompressionMethodsClientToServerLength( - parseIntField(DataFormatConstants.UINT32_SIZE)); + int compressionMethodsClientToServerLength = parseIntField(DataFormatConstants.UINT32_SIZE); + extension.setCompressionMethodsClientToServerLength(compressionMethodsClientToServerLength); LOGGER.debug( "Compression algorithms length (client to server): {}", - extension.getCompressionMethodsClientToServerLength().getValue()); - extension.setCompressionMethodsClientToServer( - parseByteString( - extension.getCompressionMethodsClientToServerLength().getValue(), - StandardCharsets.US_ASCII)); + compressionMethodsClientToServerLength); + String compressionMethodsClientToServer = + parseByteString(compressionMethodsClientToServerLength, StandardCharsets.US_ASCII); + extension.setCompressionMethodsClientToServer(compressionMethodsClientToServer); LOGGER.debug( - "Compression algorithms (client to server): {}", - extension.getCompressionMethodsClientToServer().getValue()); + "Compression algorithms (client to server): {}", compressionMethodsClientToServer); } private void parseCompressionMethodsServerToClient() { - extension.setCompressionMethodsServerToClientLength( - parseIntField(DataFormatConstants.UINT32_SIZE)); + int compressionMethodsServerToClientLength = parseIntField(DataFormatConstants.UINT32_SIZE); + extension.setCompressionMethodsServerToClientLength(compressionMethodsServerToClientLength); LOGGER.debug( "Compression algorithms length (server to client): {}", - extension.getCompressionMethodsServerToClientLength().getValue()); - extension.setCompressionMethodsServerToClient( - parseByteString( - extension.getCompressionMethodsServerToClientLength().getValue(), - StandardCharsets.US_ASCII)); + compressionMethodsServerToClientLength); + String compressionMethodsServerToClient = + parseByteString(compressionMethodsServerToClientLength, StandardCharsets.US_ASCII); + extension.setCompressionMethodsServerToClient(compressionMethodsServerToClient); LOGGER.debug( - "Compression algorithms (server to client): {}", - extension.getCompressionMethodsServerToClient().getValue()); + "Compression algorithms (server to client): {}", compressionMethodsServerToClient); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/PingExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/PingExtensionParser.java index ac5955805..0e3cd4116 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/PingExtensionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/PingExtensionParser.java @@ -36,8 +36,9 @@ protected void parseExtensionValue() { } private void parseVersionLength() { - extension.setVersionLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Version length: {}", extension.getVersionLength().getValue()); + int versionLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + extension.setVersionLength(versionLength); + LOGGER.debug("Version length: {}", versionLength); } private void parseVersion() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/ServerSigAlgsExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/ServerSigAlgsExtensionParser.java index 009ed503e..141a981e1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/ServerSigAlgsExtensionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/ServerSigAlgsExtensionParser.java @@ -37,11 +37,11 @@ protected void parseExtensionValue() { } private void parseAcceptedPublicKeyAlgorithmsLength() { - extension.setAcceptedPublicKeyAlgorithmsLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); + int acceptedPublicKeyAlgorithmsLength = + parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + extension.setAcceptedPublicKeyAlgorithmsLength(acceptedPublicKeyAlgorithmsLength); LOGGER.debug( - "Accepted public key algorithms length: {}", - extension.getAcceptedPublicKeyAlgorithmsLength().getValue()); + "Accepted public key algorithms length: {}", acceptedPublicKeyAlgorithmsLength); } private void parseAcceptedPublicKeyAlgorithms() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnknownMessageSerializer.java index 2078fad13..66339e85e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/UnknownMessageSerializer.java @@ -23,7 +23,8 @@ public UnknownMessageSerializer(UnknownMessage message) { @Override protected void serializeMessageSpecificContents() { - LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToHexString(message.getPayload())); - appendBytes(message.getPayload().getValue()); + byte[] payload = message.getPayload().getValue(); + LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToHexString(payload)); + appendBytes(payload); } } From 20df64b30d2f5e1fadfa76e998ebf4e46c44b07f Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sun, 3 Nov 2024 09:14:06 +0100 Subject: [PATCH 037/203] Fix serialization of SFTP Messages --- .../serializer/DataPacketSerializer.java | 2 +- .../message/attribute/SftpFileAttributes.java | 5 +- .../attribute/SftpFileExtendedAttribute.java | 3 + .../extension/SftpAbstractExtension.java | 3 + .../response/SftpResponseNameEntry.java | 3 + .../SftpResponseStatusMessageParser.java | 3 +- .../parser/ChannelDataMessageParser.java | 2 +- .../ChannelDataMessageSerializer.java | 2 +- .../core/workflow/action/MessageAction.java | 76 ++++++++++++++++++- .../core/workflow/action/ReceiveAction.java | 76 ++++++++++++++++++- .../factory/WorkflowConfigurationFactory.java | 14 ++++ 11 files changed, 178 insertions(+), 11 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java index b5173076f..46f8609e8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/serializer/DataPacketSerializer.java @@ -33,7 +33,7 @@ protected void serializeBytes() { appendInt(length, DataFormatConstants.STRING_SIZE_LENGTH); byte[] payload = dataPacket.getPayload().getValue(); - LOGGER.debug("Payload: {}", () -> ArrayConverter.bytesToHexString(payload)); + LOGGER.trace("Payload: {}", () -> ArrayConverter.bytesToHexString(payload)); appendBytes(payload); dataPacket.setCompletePacketBytes(getAlreadySerialized()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java index ad58bfe13..cbc55aa40 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java @@ -15,12 +15,11 @@ import de.rub.nds.sshattacker.core.data.sftp.handler.attribute.SftpFileAttributesHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; -import jakarta.xml.bind.annotation.XmlElement; -import jakarta.xml.bind.annotation.XmlElementWrapper; -import jakarta.xml.bind.annotation.XmlElements; +import jakarta.xml.bind.annotation.*; import java.util.ArrayList; import java.util.List; +@XmlAccessorType(XmlAccessType.FIELD) public class SftpFileAttributes extends ModifiableVariableHolder { private ModifiableInteger flags; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileExtendedAttribute.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileExtendedAttribute.java index 9ee7fc393..4b670a96b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileExtendedAttribute.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileExtendedAttribute.java @@ -14,8 +14,11 @@ import de.rub.nds.sshattacker.core.data.sftp.handler.attribute.SftpFileExtendedAttributeHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; import java.nio.charset.StandardCharsets; +@XmlAccessorType(XmlAccessType.FIELD) public class SftpFileExtendedAttribute extends ModifiableVariableHolder { private ModifiableInteger typeLength; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java index 6c118cd9c..03b02305b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java @@ -14,8 +14,11 @@ import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpAbstractExtensionHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; import java.nio.charset.StandardCharsets; +@XmlAccessorType(XmlAccessType.FIELD) public abstract class SftpAbstractExtension> extends ModifiableVariableHolder { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameEntry.java index 3399d914a..d38d2b0ee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameEntry.java @@ -15,9 +15,12 @@ import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; import java.nio.charset.StandardCharsets; import java.util.List; +@XmlAccessorType(XmlAccessType.FIELD) public class SftpResponseNameEntry extends ModifiableVariableHolder { private ModifiableInteger filenameLength; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseStatusMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseStatusMessageParser.java index a81fd0385..d5cc307f5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseStatusMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseStatusMessageParser.java @@ -10,6 +10,7 @@ import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.constants.SftpStatusCode; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseStatusMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; @@ -36,7 +37,7 @@ public SftpResponseStatusMessage createMessage() { private void parseStatusCode() { int statusCode = parseIntField(DataFormatConstants.UINT32_SIZE); message.setStatusCode(statusCode); - LOGGER.debug("StatusCode: {}", statusCode); + LOGGER.debug("StatusCode: {}", SftpStatusCode.getNameByCode(statusCode)); } private void parseErrorMessage() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java index 3058bd2c9..a0213847a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/parser/ChannelDataMessageParser.java @@ -36,7 +36,7 @@ private void parseData() { LOGGER.debug("Data length: {}", dataLength); byte[] data = parseByteArrayField(dataLength); message.setData(data); - LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToHexString(data)); + LOGGER.trace("Data: {}", () -> ArrayConverter.bytesToHexString(data)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java index d4b1ec921..d335d9e92 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/serializer/ChannelDataMessageSerializer.java @@ -26,7 +26,7 @@ private void serializeData() { LOGGER.debug("Data length: {}", dataLength); appendInt(dataLength, DataFormatConstants.STRING_SIZE_LENGTH); byte[] data = message.getData().getValue(); - LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToHexString(data)); + LOGGER.trace("Data: {}", () -> ArrayConverter.bytesToHexString(data)); appendBytes(data); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java index c3f2be837..b118cbb88 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java @@ -12,6 +12,10 @@ import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.*; +import de.rub.nds.sshattacker.core.data.sftp.message.request.*; +import de.rub.nds.sshattacker.core.data.sftp.message.response.*; import de.rub.nds.sshattacker.core.protocol.authentication.message.*; import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessage; import de.rub.nds.sshattacker.core.protocol.connection.message.*; @@ -124,8 +128,76 @@ public abstract class MessageAction extends ConnectionBoundAction { @XmlElement(type = VersionExchangeMessage.class, name = "VersionExchange"), @XmlElement(type = AsciiMessage.class, name = "AsciiMessage"), @XmlElement(type = SftpInitMessage.class, name = "SftpInit"), - @XmlElement(type = SftpVersionMessage.class, name = "SftpVersion"), - @XmlElement(type = SftpUnknownMessage.class, name = "SftpUnknown") + @XmlElement( + type = SftpRequestCheckFileHandleMessage.class, + name = "SftpRequestCheckFileHandle"), + @XmlElement( + type = SftpRequestCheckFileNameMessage.class, + name = "SftpRequestCheckFileName"), + @XmlElement(type = SftpRequestCloseMessage.class, name = "SftpRequestClose"), + @XmlElement(type = SftpRequestCopyDataMessage.class, name = "SftpRequestCopyData"), + @XmlElement(type = SftpRequestCopyFileMessage.class, name = "SftpRequestCopyFile"), + @XmlElement(type = SftpRequestExpandPathMessage.class, name = "SftpRequestExpandPath"), + @XmlElement(type = SftpRequestFileSetStatMessage.class, name = "SftpRequestFileSetStat"), + @XmlElement(type = SftpRequestFileStatMessage.class, name = "SftpRequestFileStat"), + @XmlElement(type = SftpRequestFileStatVfsMessage.class, name = "SftpRequestFileStatVfs"), + @XmlElement(type = SftpRequestFileSyncMessage.class, name = "SftpRequestFileSync"), + @XmlElement( + type = SftpRequestGetTempFolderMessage.class, + name = "SftpRequestGetTempFolder"), + @XmlElement(type = SftpRequestHardlinkMessage.class, name = "SftpRequestHardlink"), + @XmlElement( + type = SftpRequestHomeDirectoryMessage.class, + name = "SftpRequestHomeDirectory"), + @XmlElement(type = SftpRequestLimitsMessage.class, name = "SftpRequestLimits"), + @XmlElement(type = SftpRequestLinkSetStatMessage.class, name = "SftpRequestLinkSetStat"), + @XmlElement(type = SftpRequestLinkStatMessage.class, name = "SftpRequestLinkStat"), + @XmlElement(type = SftpRequestMakeDirMessage.class, name = "SftpRequestMakeDir"), + @XmlElement( + type = SftpRequestMakeTempFolderMessage.class, + name = "SftpRequestMakeTempFolder"), + @XmlElement(type = SftpRequestOpenDirMessage.class, name = "SftpRequestOpenDir"), + @XmlElement(type = SftpRequestOpenMessage.class, name = "SftpRequestOpen"), + @XmlElement(type = SftpRequestPosixRenameMessage.class, name = "SftpRequestPosixRename"), + @XmlElement(type = SftpRequestReadDirMessage.class, name = "SftpRequestReadDir"), + @XmlElement(type = SftpRequestReadLinkMessage.class, name = "SftpRequestReadLink"), + @XmlElement(type = SftpRequestReadMessage.class, name = "SftpRequestRead"), + @XmlElement(type = SftpRequestRealPathMessage.class, name = "SftpRequestRealPath"), + @XmlElement(type = SftpRequestRemoveMessage.class, name = "SftpRequestRemove"), + @XmlElement(type = SftpRequestRenameMessage.class, name = "SftpRequestRename"), + @XmlElement(type = SftpRequestRmdirMessage.class, name = "SftpRequestRmdir"), + @XmlElement(type = SftpRequestSetStatMessage.class, name = "SftpRequestSetStat"), + @XmlElement( + type = SftpRequestSpaceAvailableMessage.class, + name = "SftpRequestSpaceAvailable"), + @XmlElement(type = SftpRequestStatMessage.class, name = "SftpRequestStat"), + @XmlElement(type = SftpRequestStatVfsMessage.class, name = "SftpRequestStatVfs"), + @XmlElement(type = SftpRequestSymbolicLinkMessage.class, name = "SftpRequestSymbolicLink"), + @XmlElement(type = SftpRequestUnknownMessage.class, name = "SftpRequestUnknown"), + @XmlElement( + type = SftpRequestUsersGroupsByIdMessage.class, + name = "SftpRequestUsersGroupsById"), + @XmlElement(type = SftpRequestVendorIdMessage.class, name = "SftpRequestVendorId"), + @XmlElement(type = SftpRequestWithHandleMessage.class, name = "SftpRequestWithHandle"), + @XmlElement(type = SftpRequestWithPathMessage.class, name = "SftpRequestWithPath"), + @XmlElement(type = SftpRequestWriteMessage.class, name = "SftpRequestWrite"), + @XmlElement(type = SftpResponseAttributesMessage.class, name = "SftpResponseAttributes"), + @XmlElement(type = SftpResponseCheckFileMessage.class, name = "SftpResponseCheckFile"), + @XmlElement(type = SftpResponseDataMessage.class, name = "SftpResponseData"), + @XmlElement(type = SftpResponseHandleMessage.class, name = "SftpResponseHandle"), + @XmlElement(type = SftpResponseLimitsMessage.class, name = "SftpResponseLimits"), + @XmlElement(type = SftpResponseNameMessage.class, name = "SftpResponseName"), + @XmlElement( + type = SftpResponseSpaceAvailableMessage.class, + name = "SftpResponseSpaceAvailable"), + @XmlElement(type = SftpResponseStatusMessage.class, name = "SftpResponseStatus"), + @XmlElement(type = SftpResponseStatVfsMessage.class, name = "SftpResponseStatVfs"), + @XmlElement(type = SftpResponseUnknownMessage.class, name = "SftpResponseUnknown"), + @XmlElement( + type = SftpResponseUsersGroupsByIdMessage.class, + name = "SftpResponseUsersGroupsById"), + @XmlElement(type = SftpUnknownMessage.class, name = "SftpUnknown"), + @XmlElement(type = SftpVersionMessage.class, name = "SftpVersion") }) protected List> messages = new ArrayList<>(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java index 2e62611e4..478d05435 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java @@ -12,6 +12,10 @@ import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.*; +import de.rub.nds.sshattacker.core.data.sftp.message.request.*; +import de.rub.nds.sshattacker.core.data.sftp.message.response.*; import de.rub.nds.sshattacker.core.exceptions.WorkflowExecutionException; import de.rub.nds.sshattacker.core.packet.AbstractPacket; import de.rub.nds.sshattacker.core.packet.BinaryPacket; @@ -135,8 +139,76 @@ public class ReceiveAction extends MessageAction implements ReceivingAction { @XmlElement(type = HybridKeyExchangeInitMessage.class, name = "HybridKeyExchangeInit"), @XmlElement(type = HybridKeyExchangeReplyMessage.class, name = "HybridKeyExchangeReply"), @XmlElement(type = SftpInitMessage.class, name = "SftpInit"), - @XmlElement(type = SftpVersionMessage.class, name = "SftpVersion"), - @XmlElement(type = SftpUnknownMessage.class, name = "SftpUnknown") + @XmlElement( + type = SftpRequestCheckFileHandleMessage.class, + name = "SftpRequestCheckFileHandle"), + @XmlElement( + type = SftpRequestCheckFileNameMessage.class, + name = "SftpRequestCheckFileName"), + @XmlElement(type = SftpRequestCloseMessage.class, name = "SftpRequestClose"), + @XmlElement(type = SftpRequestCopyDataMessage.class, name = "SftpRequestCopyData"), + @XmlElement(type = SftpRequestCopyFileMessage.class, name = "SftpRequestCopyFile"), + @XmlElement(type = SftpRequestExpandPathMessage.class, name = "SftpRequestExpandPath"), + @XmlElement(type = SftpRequestFileSetStatMessage.class, name = "SftpRequestFileSetStat"), + @XmlElement(type = SftpRequestFileStatMessage.class, name = "SftpRequestFileStat"), + @XmlElement(type = SftpRequestFileStatVfsMessage.class, name = "SftpRequestFileStatVfs"), + @XmlElement(type = SftpRequestFileSyncMessage.class, name = "SftpRequestFileSync"), + @XmlElement( + type = SftpRequestGetTempFolderMessage.class, + name = "SftpRequestGetTempFolder"), + @XmlElement(type = SftpRequestHardlinkMessage.class, name = "SftpRequestHardlink"), + @XmlElement( + type = SftpRequestHomeDirectoryMessage.class, + name = "SftpRequestHomeDirectory"), + @XmlElement(type = SftpRequestLimitsMessage.class, name = "SftpRequestLimits"), + @XmlElement(type = SftpRequestLinkSetStatMessage.class, name = "SftpRequestLinkSetStat"), + @XmlElement(type = SftpRequestLinkStatMessage.class, name = "SftpRequestLinkStat"), + @XmlElement(type = SftpRequestMakeDirMessage.class, name = "SftpRequestMakeDir"), + @XmlElement( + type = SftpRequestMakeTempFolderMessage.class, + name = "SftpRequestMakeTempFolder"), + @XmlElement(type = SftpRequestOpenDirMessage.class, name = "SftpRequestOpenDir"), + @XmlElement(type = SftpRequestOpenMessage.class, name = "SftpRequestOpen"), + @XmlElement(type = SftpRequestPosixRenameMessage.class, name = "SftpRequestPosixRename"), + @XmlElement(type = SftpRequestReadDirMessage.class, name = "SftpRequestReadDir"), + @XmlElement(type = SftpRequestReadLinkMessage.class, name = "SftpRequestReadLink"), + @XmlElement(type = SftpRequestReadMessage.class, name = "SftpRequestRead"), + @XmlElement(type = SftpRequestRealPathMessage.class, name = "SftpRequestRealPath"), + @XmlElement(type = SftpRequestRemoveMessage.class, name = "SftpRequestRemove"), + @XmlElement(type = SftpRequestRenameMessage.class, name = "SftpRequestRename"), + @XmlElement(type = SftpRequestRmdirMessage.class, name = "SftpRequestRmdir"), + @XmlElement(type = SftpRequestSetStatMessage.class, name = "SftpRequestSetStat"), + @XmlElement( + type = SftpRequestSpaceAvailableMessage.class, + name = "SftpRequestSpaceAvailable"), + @XmlElement(type = SftpRequestStatMessage.class, name = "SftpRequestStat"), + @XmlElement(type = SftpRequestStatVfsMessage.class, name = "SftpRequestStatVfs"), + @XmlElement(type = SftpRequestSymbolicLinkMessage.class, name = "SftpRequestSymbolicLink"), + @XmlElement(type = SftpRequestUnknownMessage.class, name = "SftpRequestUnknown"), + @XmlElement( + type = SftpRequestUsersGroupsByIdMessage.class, + name = "SftpRequestUsersGroupsById"), + @XmlElement(type = SftpRequestVendorIdMessage.class, name = "SftpRequestVendorId"), + @XmlElement(type = SftpRequestWithHandleMessage.class, name = "SftpRequestWithHandle"), + @XmlElement(type = SftpRequestWithPathMessage.class, name = "SftpRequestWithPath"), + @XmlElement(type = SftpRequestWriteMessage.class, name = "SftpRequestWrite"), + @XmlElement(type = SftpResponseAttributesMessage.class, name = "SftpResponseAttributes"), + @XmlElement(type = SftpResponseCheckFileMessage.class, name = "SftpResponseCheckFile"), + @XmlElement(type = SftpResponseDataMessage.class, name = "SftpResponseData"), + @XmlElement(type = SftpResponseHandleMessage.class, name = "SftpResponseHandle"), + @XmlElement(type = SftpResponseLimitsMessage.class, name = "SftpResponseLimits"), + @XmlElement(type = SftpResponseNameMessage.class, name = "SftpResponseName"), + @XmlElement( + type = SftpResponseSpaceAvailableMessage.class, + name = "SftpResponseSpaceAvailable"), + @XmlElement(type = SftpResponseStatusMessage.class, name = "SftpResponseStatus"), + @XmlElement(type = SftpResponseStatVfsMessage.class, name = "SftpResponseStatVfs"), + @XmlElement(type = SftpResponseUnknownMessage.class, name = "SftpResponseUnknown"), + @XmlElement( + type = SftpResponseUsersGroupsByIdMessage.class, + name = "SftpResponseUsersGroupsById"), + @XmlElement(type = SftpUnknownMessage.class, name = "SftpUnknown"), + @XmlElement(type = SftpVersionMessage.class, name = "SftpVersion") }) protected List> expectedMessages = new ArrayList<>(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java index b4b937d39..c892fb19e 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java @@ -15,7 +15,9 @@ import de.rub.nds.sshattacker.core.constants.RunningModeType; import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileStatMessage; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseHandleMessage; import de.rub.nds.sshattacker.core.exceptions.ConfigurationException; import de.rub.nds.sshattacker.core.protocol.authentication.message.*; @@ -586,6 +588,18 @@ connection, ConnectionEndType.CLIENT, new SftpRequestOpenMessage()), ReceiveAction.ReceiveOption.IGNORE_CHANNEL_DATA_WRAPPER, ReceiveAction.ReceiveOption .IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS))); + workflow.addSshActions( + SshActionFactory.createMessageAction( + connection, ConnectionEndType.CLIENT, new SftpRequestFileStatMessage()), + SshActionFactory.withReceiveOptions( + SshActionFactory.createMessageAction( + connection, + ConnectionEndType.SERVER, + new SftpResponseAttributesMessage()), + Set.of( + ReceiveAction.ReceiveOption.IGNORE_CHANNEL_DATA_WRAPPER, + ReceiveAction.ReceiveOption + .IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS))); } private WorkflowTrace createSimpleMitmProxyWorkflow() { From d28ab88ee7582204faa3a9d68378397486bc5b4c Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sun, 3 Nov 2024 17:07:05 +0100 Subject: [PATCH 038/203] Add basic SFTP Manager --- .git-blame-ignore-revs | 4 + .../core/data/sftp/SftpManager.java | 256 ++++++++++++++++++ ...pRequestCheckFileHandleMessageHandler.java | 9 +- ...ftpRequestCheckFileNameMessageHandler.java | 9 +- .../SftpRequestCopyDataMessageHandler.java | 9 +- .../SftpRequestCopyFileMessageHandler.java | 9 +- .../SftpRequestExpandPathMessageHandler.java | 9 +- .../SftpRequestFileStatVfsMessageHandler.java | 9 +- .../SftpRequestFileSyncMessageHandler.java | 9 +- ...ftpRequestGetTempFolderMessageHandler.java | 9 +- .../SftpRequestHardlinkMessageHandler.java | 9 +- ...ftpRequestHomeDirectoryMessageHandler.java | 9 +- .../SftpRequestLimitsMessageHandler.java | 10 +- .../SftpRequestLinkSetStatMessageHandler.java | 9 +- ...tpRequestMakeTempFolderMessageHandler.java | 9 +- .../SftpRequestPosixRenameMessageHandler.java | 9 +- ...tpRequestSpaceAvailableMessageHandler.java | 9 +- .../SftpRequestStatVfsMessageHandler.java | 9 +- .../SftpRequestUnknownMessageHandler.java | 9 +- ...pRequestUsersGroupsByIdMessageHandler.java | 9 +- .../SftpRequestVendorIdMessageHandler.java | 9 +- .../SftpResponseCheckFileMessageHandler.java | 8 +- .../SftpResponseLimitsMessageHandler.java | 8 +- ...pResponseSpaceAvailableMessageHandler.java | 8 +- .../SftpResponseStatVfsMessageHandler.java | 8 +- .../SftpResponseUnknownMessageHandler.java | 8 +- ...ResponseUsersGroupsByIdMessageHandler.java | 8 +- .../SftpRequestCloseMessageHandler.java | 8 +- .../SftpRequestFileSetStatMessageHandler.java | 7 +- .../SftpRequestFileStatMessageHandler.java | 7 +- .../SftpRequestLinkStatMessageHandler.java | 7 +- .../SftpRequestMakeDirMessageHandler.java | 7 +- .../request/SftpRequestMessageHandler.java | 35 +++ .../SftpRequestOpenDirMessageHandler.java | 7 +- .../SftpRequestOpenMessageHandler.java | 8 +- .../SftpRequestReadDirMessageHandler.java | 7 +- .../SftpRequestReadLinkMessageHandler.java | 7 +- .../SftpRequestReadMessageHandler.java | 8 +- .../SftpRequestRealPathMessageHandler.java | 7 +- .../SftpRequestRemoveDirMessageHandler.java | 7 +- .../SftpRequestRemoveMessageHandler.java | 8 +- .../SftpRequestRenameMessageHandler.java | 8 +- .../SftpRequestSetStatMessageHandler.java | 7 +- .../SftpRequestStatMessageHandler.java | 8 +- ...SftpRequestSymbolicLinkMessageHandler.java | 7 +- .../SftpRequestWriteMessageHandler.java | 8 +- .../SftpResponseAttributesMessageHandler.java | 7 +- .../SftpResponseDataMessageHandler.java | 8 +- .../SftpResponseHandleMessageHandler.java | 5 +- .../response/SftpResponseMessageHandler.java | 29 ++ .../SftpResponseNameMessageHandler.java | 8 +- .../SftpResponseStatusMessageHandler.java | 7 +- .../SftpRequestOpenDirMessageParser.java | 4 +- .../SftpRequestRemoveDirMessageParser.java | 4 +- .../SftpResponseDataMessageParser.java | 2 +- ...questCheckFileHandleMessagePreparator.java | 8 +- .../SftpRequestCopyDataMessagePreparator.java | 16 +- ...tpRequestFileStatVfsMessagePreparator.java | 9 +- .../SftpRequestFileSyncMessagePreparator.java | 8 +- .../SftpRequestCloseMessagePreparator.java | 9 +- ...tpRequestFileSetStatMessagePreparator.java | 9 +- .../SftpRequestFileStatMessagePreparator.java | 9 +- .../request/SftpRequestMessagePreparator.java | 3 +- .../SftpRequestReadDirMessagePreparator.java | 8 +- .../SftpRequestReadMessagePreparator.java | 10 +- .../SftpRequestWriteMessagePreparator.java | 8 +- .../SftpResponseHandleMessagePreparator.java | 2 +- .../SftpResponseMessagePreparator.java | 6 +- .../SftpRequestFileStatMessageSerializer.java | 4 +- .../string/StringDataMessagePreparator.java | 5 +- .../core/exceptions/DataManagerException.java | 23 ++ .../sshattacker/core/state/SshContext.java | 20 ++ .../core/workflow/action/MessageAction.java | 1 + .../core/workflow/action/ReceiveAction.java | 1 + .../action/executor/ReceiveMessageHelper.java | 1 + .../action/executor/SendMessageHelper.java | 4 + .../workflow/factory/SshActionFactory.java | 36 +++ .../factory/WorkflowConfigurationFactory.java | 46 ++-- 78 files changed, 548 insertions(+), 420 deletions(-) create mode 100644 .git-blame-ignore-revs create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/DataManagerException.java diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 000000000..97d0470bd --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,4 @@ +# Refactor code to use lazy logging +ef9c3a141a76a9d86f1fbb8d1183d62b44c3c146 +0ecd981eabda518bd1dcc5a5595186d64f6f8836 +3d40f371eb823aa7463882eeedd71486d8959346 \ No newline at end of file diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java new file mode 100644 index 000000000..19e6186e0 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java @@ -0,0 +1,256 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp; + +import de.rub.nds.sshattacker.core.constants.SftpStatusCode; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.*; +import de.rub.nds.sshattacker.core.data.sftp.message.request.*; +import de.rub.nds.sshattacker.core.data.sftp.message.response.*; +import de.rub.nds.sshattacker.core.exceptions.DataManagerException; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.util.*; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpManager { + + private static final Logger LOGGER = LogManager.getLogger(); + + // Requests that wait for a response + private final HashMap> pendingRequests = new HashMap<>(); + + private final SshContext context; + + // Responses created as reaction to received requests; that wait to be sent + private final List> pendingResponses = new ArrayList<>(); + + private final List openFileHandles = new ArrayList<>(); + private final List openDirectoryHandles = new ArrayList<>(); + + private int lastUsedRequestId = -1; + + private static final Random random = new Random(); + + public SftpManager(SshContext context) { + super(); + this.context = context; + } + + public int getNextRequestId() { + lastUsedRequestId += 1; + return lastUsedRequestId; + } + + public void handleRequestMessage(SftpRequestMessage request) { + // prepare the response and queue it + SftpResponseMessage response; + boolean sucess = random.nextBoolean(); + if (!sucess) { + response = new SftpResponseStatusMessage(); + ((SftpResponseStatusMessage) response).setStatusCode(SftpStatusCode.SSH_FX_FAILURE); + } else if (request instanceof SftpRequestOpenMessage) { + response = new SftpResponseHandleMessage(); + ((SftpResponseHandleMessage) response).setHandle(createFileHandle()); + } else if (request instanceof SftpRequestOpenDirMessage) { + response = new SftpResponseHandleMessage(); + ((SftpResponseHandleMessage) response).setHandle(createDirectoryHandle()); + } else if (request instanceof SftpRequestReadMessage) { + response = new SftpResponseDataMessage(); + } else if (request instanceof SftpRequestReadDirMessage + || request instanceof SftpRequestReadLinkMessage + || request instanceof SftpRequestRealPathMessage + || request instanceof SftpRequestHomeDirectoryMessage + || request instanceof SftpRequestGetTempFolderMessage + || request instanceof SftpRequestMakeTempFolderMessage + || request instanceof SftpRequestExpandPathMessage) { + response = new SftpResponseNameMessage(); + } else if (request instanceof SftpRequestStatMessage + || request instanceof SftpRequestFileStatMessage + || request instanceof SftpRequestLinkStatMessage) { + response = new SftpResponseAttributesMessage(); + } else if (request instanceof SftpRequestCheckFileHandleMessage + || request instanceof SftpRequestCheckFileNameMessage) { + response = new SftpResponseCheckFileMessage(); + } else if (request instanceof SftpRequestSpaceAvailableMessage) { + response = new SftpResponseSpaceAvailableMessage(); + } else if (request instanceof SftpRequestStatVfsMessage + || request instanceof SftpRequestFileStatVfsMessage) { + response = new SftpResponseStatVfsMessage(); + } else if (request instanceof SftpRequestLimitsMessage) { + response = new SftpResponseLimitsMessage(); + } else if (request instanceof SftpRequestUsersGroupsByIdMessage) { + response = new SftpResponseUsersGroupsByIdMessage(); + } else { + /* Messages without special response: + - SSH_FXP_CLOSE, SSH_FXP_WRITE, SSH_FXP_REMOVE, SSH_FXP_RENAME, SSH_FXP_MKDIR + - SSH_FXP_RMDIR, SSH_FXP_SETSTAT, SSH_FXP_FSETSTAT, SSH_FXP_SYMLINK + - vendor-id, copy-file, copy-data + - posix-rename, hardlink, fsync, lsetstat, + */ + response = new SftpResponseStatusMessage(); + ((SftpResponseStatusMessage) response).setStatusCode(SftpStatusCode.SSH_FX_OK); + } + response.setRequestId(request.getRequestId()); + pendingResponses.add(response); + } + + public SftpResponseMessage prepareNextResponse() { + if (!pendingResponses.isEmpty()) { + return pendingResponses.remove(random.nextInt(pendingResponses.size())); + } + SftpResponseMessage randomResponse; + int responseType = random.nextInt(11); + switch (responseType) { + case 0: + randomResponse = new SftpResponseStatusMessage(); + ((SftpResponseStatusMessage) randomResponse) + .setStatusCode(SftpStatusCode.SSH_FX_FAILURE); + break; + case 1: + randomResponse = new SftpResponseHandleMessage(); + break; + case 2: + randomResponse = new SftpResponseDataMessage(); + break; + case 3: + randomResponse = new SftpResponseNameMessage(); + break; + case 4: + randomResponse = new SftpResponseAttributesMessage(); + break; + case 5: + randomResponse = new SftpResponseCheckFileMessage(); + break; + case 6: + randomResponse = new SftpResponseSpaceAvailableMessage(); + break; + case 7: + randomResponse = new SftpResponseStatVfsMessage(); + break; + case 8: + randomResponse = new SftpResponseLimitsMessage(); + break; + case 9: + randomResponse = new SftpResponseUsersGroupsByIdMessage(); + break; + case 10: + default: + randomResponse = new SftpResponseStatusMessage(); + ((SftpResponseStatusMessage) randomResponse) + .setStatusCode(SftpStatusCode.SSH_FX_OK); + break; + } + + return randomResponse; + } + + public SftpRequestMessage getRequestById(Integer requestId) { + return pendingRequests.get(requestId); + } + + public SftpRequestMessage removeRequestById(Integer requestId) { + return pendingRequests.remove(requestId); + } + + public boolean containsRequestWithId(Integer requestId) { + return pendingRequests.containsKey(requestId); + } + + public int countRequests() { + return pendingRequests.size(); + } + + public void addRequest(SftpRequestMessage request) { + Integer requestId = request.getRequestId().getValue(); + if (requestId == null) { + throw new DataManagerException( + "Request cannot be managed. Request identifier is not set"); + } + pendingRequests.put(requestId, request); + } + + private static byte[] getRandomHandle() { + byte[] handle = new byte[random.nextInt(256) + 1]; + random.nextBytes(handle); + return handle; + } + + private byte[] createFileHandle() { + byte[] handle = getRandomHandle(); + openFileHandles.add(handle); + return handle; + } + + private byte[] createDirectoryHandle() { + byte[] handle = getRandomHandle(); + openDirectoryHandles.add(handle); + return handle; + } + + /** + * Return a random valid handle for a directory. + * + *

If there are no valid handles, return a invalid random handle. + * + * @return handle + */ + public byte[] getDirectoryHandle() { + if (!openDirectoryHandles.isEmpty()) { + return openDirectoryHandles.get(random.nextInt(openDirectoryHandles.size())); + } + return getRandomHandle(); + } + + /** + * Return a random valid handle for a file. + * + *

If there are no valid handles, return a invalid random handle. + * + * @return handle + */ + public byte[] getFileHandle() { + if (!openFileHandles.isEmpty()) { + return openFileHandles.get(random.nextInt(openFileHandles.size())); + } + return getRandomHandle(); + } + + /** + * Return a random valid handle for a file or a directory. + * + *

If there are no valid handles, return a invalid random handle. + * + * @return handle + */ + public byte[] getFileOrDirectoryHandle() { + if (!openFileHandles.isEmpty() || !openDirectoryHandles.isEmpty()) { + int resultIdx = random.nextInt(openFileHandles.size() + openDirectoryHandles.size()); + if (resultIdx < openFileHandles.size()) { + return openFileHandles.get(resultIdx); + } else { + resultIdx -= openFileHandles.size(); + return openFileHandles.get(resultIdx); + } + } + return getRandomHandle(); + } + + public void addHandle(SftpResponseHandleMessage handleMessage) { + SftpRequestMessage request = + pendingRequests.get(handleMessage.getRequestId().getValue()); + if (request instanceof SftpRequestOpenDirMessage) { + openDirectoryHandles.add(handleMessage.getHandle().getValue()); + } else if (request instanceof SftpRequestOpenMessage) { + openFileHandles.add(handleMessage.getHandle().getValue()); + } else { + LOGGER.warn( + "Tried to add handle from response that is not a response to a SSH_FXP_OPEN or SSH_FXP_OPENDIR request. Ignoring it."); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java index 8296cd546..3c196a3f8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileHandleMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestCheckFileHandleMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestCheckFileHandleMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestCheckFileHandleMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestCheckFileHandleMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestCheckFileHandleMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestCheckFileHandleMessage - } - @Override public SftpRequestCheckFileHandleMessageParser getParser(byte[] array) { return new SftpRequestCheckFileHandleMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java index 074af5e76..f5fe0d5b9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileNameMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestCheckFileNameMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestCheckFileNameMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestCheckFileNameMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestCheckFileNameMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestCheckFileNameMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestCheckFileNameMessage - } - @Override public SftpRequestCheckFileNameMessageParser getParser(byte[] array) { return new SftpRequestCheckFileNameMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyDataMessageHandler.java index 9fed7ffa8..2111cd9c4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyDataMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyDataMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyDataMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestCopyDataMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestCopyDataMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestCopyDataMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestCopyDataMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestCopyDataMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestCopyDataMessage - } - @Override public SftpRequestCopyDataMessageParser getParser(byte[] array) { return new SftpRequestCopyDataMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyFileMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyFileMessageHandler.java index d4965f269..28aae848c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyFileMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyFileMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyFileMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestCopyFileMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestCopyFileMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestCopyFileMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestCopyFileMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestCopyFileMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestCopyFileMessage - } - @Override public SftpRequestCopyFileMessageParser getParser(byte[] array) { return new SftpRequestCopyFileMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestExpandPathMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestExpandPathMessageHandler.java index 03ce8e7b1..850ee6dc8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestExpandPathMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestExpandPathMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExpandPathMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestExpandPathMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestExpandPathMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestExpandPathMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestExpandPathMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestExpandPathMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestExpandPathMessage - } - @Override public SftpRequestExpandPathMessageParser getParser(byte[] array) { return new SftpRequestExpandPathMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java index 8360f9aa1..a55dac49d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileStatVfsMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestFileStatVfsMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestFileStatVfsMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileStatVfsMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestFileStatVfsMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestFileStatVfsMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestFileStatVfsMessage - } - @Override public SftpRequestFileStatVfsMessageParser getParser(byte[] array) { return new SftpRequestFileStatVfsMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileSyncMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileSyncMessageHandler.java index aa275d911..c6679fbdb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileSyncMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileSyncMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileSyncMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestFileSyncMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestFileSyncMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileSyncMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestFileSyncMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestFileSyncMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestFileSyncMessage - } - @Override public SftpRequestFileSyncMessageParser getParser(byte[] array) { return new SftpRequestFileSyncMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java index 5479a2c88..c5f0eacdf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestGetTempFolderMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestGetTempFolderMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestGetTempFolderMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestGetTempFolderMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestGetTempFolderMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestGetTempFolderMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestGetTempFolderMessage - } - @Override public SftpRequestGetTempFolderMessageParser getParser(byte[] array) { return new SftpRequestGetTempFolderMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHardlinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHardlinkMessageHandler.java index 40e819997..502cee827 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHardlinkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHardlinkMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHardlinkMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestHardlinkMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestHardlinkMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestHardlinkMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestHardlinkMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestHardlinkMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestHardlinkMessage - } - @Override public SftpRequestHardlinkMessageParser getParser(byte[] array) { return new SftpRequestHardlinkMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java index 8781d5c0f..4d1f7caed 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHomeDirectoryMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestHomeDirectoryMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestHomeDirectoryMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestHomeDirectoryMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestHomeDirectoryMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestHomeDirectoryMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestHomeDirectoryMessage - } - @Override public SftpRequestHomeDirectoryMessageParser getParser(byte[] array) { return new SftpRequestHomeDirectoryMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLimitsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLimitsMessageHandler.java index 8b529f8f8..621586e90 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLimitsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLimitsMessageHandler.java @@ -7,14 +7,15 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLimitsMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestLimitsMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestLimitsMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestLimitsMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpRequestLimitsMessageHandler extends SftpMessageHandler { +public class SftpRequestLimitsMessageHandler + extends SftpRequestMessageHandler { public SftpRequestLimitsMessageHandler(SshContext context) { super(context); @@ -24,11 +25,6 @@ public SftpRequestLimitsMessageHandler(SshContext context, SftpRequestLimitsMess super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestLimitsMessage - } - @Override public SftpRequestLimitsMessageParser getParser(byte[] array) { return new SftpRequestLimitsMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java index e17d46281..975068ba4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLinkSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestLinkSetStatMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestLinkSetStatMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestLinkSetStatMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestLinkSetStatMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestLinkSetStatMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestLinkSetStatMessage - } - @Override public SftpRequestLinkSetStatMessageParser getParser(byte[] array) { return new SftpRequestLinkSetStatMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java index 39b06f811..71f5d3d7e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestMakeTempFolderMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestMakeTempFolderMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestMakeTempFolderMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestMakeTempFolderMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestMakeTempFolderMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestMakeTempFolderMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestMakeTempFolderMessage - } - @Override public SftpRequestMakeTempFolderMessageParser getParser(byte[] array) { return new SftpRequestMakeTempFolderMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestPosixRenameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestPosixRenameMessageHandler.java index 7ce90c489..19e72d049 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestPosixRenameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestPosixRenameMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestPosixRenameMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestPosixRenameMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestPosixRenameMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestPosixRenameMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestPosixRenameMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestPosixRenameMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestPosixRenameMessage - } - @Override public SftpRequestPosixRenameMessageParser getParser(byte[] array) { return new SftpRequestPosixRenameMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java index 5b355f731..043969885 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestSpaceAvailableMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestSpaceAvailableMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestSpaceAvailableMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestSpaceAvailableMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestSpaceAvailableMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestSpaceAvailableMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestSpaceAvailableMessage - } - @Override public SftpRequestSpaceAvailableMessageParser getParser(byte[] array) { return new SftpRequestSpaceAvailableMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestStatVfsMessageHandler.java index 4f594286a..65e91c223 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestStatVfsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestStatVfsMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestStatVfsMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestStatVfsMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestStatVfsMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestStatVfsMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestStatVfsMessageHandler(SshContext context) { super(context); @@ -25,11 +25,6 @@ public SftpRequestStatVfsMessageHandler(SshContext context, SftpRequestStatVfsMe super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestStatVfsMessage - } - @Override public SftpRequestStatVfsMessageParser getParser(byte[] array) { return new SftpRequestStatVfsMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUnknownMessageHandler.java index f54cabfec..42abeb281 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUnknownMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUnknownMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUnknownMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestUnknownMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestUnknownMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestUnknownMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestUnknownMessageHandler(SshContext context) { super(context); @@ -25,11 +25,6 @@ public SftpRequestUnknownMessageHandler(SshContext context, SftpRequestUnknownMe super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestUnknownMessage - } - @Override public SftpRequestUnknownMessageParser getParser(byte[] array) { return new SftpRequestUnknownMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java index 12cea2268..2a3ef8cb6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUsersGroupsByIdMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestUsersGroupsByIdMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestUsersGroupsByIdMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestUsersGroupsByIdMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestUsersGroupsByIdMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestUsersGroupsByIdMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestUsersGroupsByIdMessage - } - @Override public SftpRequestUsersGroupsByIdMessageParser getParser(byte[] array) { return new SftpRequestUsersGroupsByIdMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestVendorIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestVendorIdMessageHandler.java index 2e904ad9b..a581811b0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestVendorIdMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestVendorIdMessageHandler.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestVendorIdMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestVendorIdMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestVendorIdMessagePreparator; @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestVendorIdMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestVendorIdMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestVendorIdMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestVendorIdMessage - } - @Override public SftpRequestVendorIdMessageParser getParser(byte[] array) { return new SftpRequestVendorIdMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java index f225f6f97..b084de1b7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseCheckFileMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseCheckFileMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseCheckFileMessagePreparator; @@ -15,7 +16,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseCheckFileMessageHandler - extends SftpMessageHandler { + extends SftpResponseMessageHandler { public SftpResponseCheckFileMessageHandler(SshContext context) { super(context); @@ -26,11 +27,6 @@ public SftpResponseCheckFileMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpResponseCheckFileMessage - } - @Override public SftpResponseCheckFileMessageParser getParser(byte[] array) { return new SftpResponseCheckFileMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java index f4c2d84a8..fa7ced06b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseLimitsMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseLimitsMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseLimitsMessagePreparator; @@ -15,7 +16,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseLimitsMessageHandler - extends SftpMessageHandler { + extends SftpResponseMessageHandler { public SftpResponseLimitsMessageHandler(SshContext context) { super(context); @@ -25,11 +26,6 @@ public SftpResponseLimitsMessageHandler(SshContext context, SftpResponseLimitsMe super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpResponseLimitsMessage - } - @Override public SftpResponseLimitsMessageParser getParser(byte[] array) { return new SftpResponseLimitsMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java index 9a4f7144d..1f289744b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseSpaceAvailableMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseSpaceAvailableMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseSpaceAvailableMessagePreparator; @@ -15,7 +16,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseSpaceAvailableMessageHandler - extends SftpMessageHandler { + extends SftpResponseMessageHandler { public SftpResponseSpaceAvailableMessageHandler(SshContext context) { super(context); @@ -26,11 +27,6 @@ public SftpResponseSpaceAvailableMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpResponseSpaceAvailableMessage - } - @Override public SftpResponseSpaceAvailableMessageParser getParser(byte[] array) { return new SftpResponseSpaceAvailableMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java index 8d1afb28c..56f0a59e7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseStatVfsMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseStatVfsMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseStatVfsMessagePreparator; @@ -15,7 +16,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseStatVfsMessageHandler - extends SftpMessageHandler { + extends SftpResponseMessageHandler { public SftpResponseStatVfsMessageHandler(SshContext context) { super(context); @@ -26,11 +27,6 @@ public SftpResponseStatVfsMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpResponseStatVfsMessage - } - @Override public SftpResponseStatVfsMessageParser getParser(byte[] array) { return new SftpResponseStatVfsMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java index 0635a3129..c8d70baf7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUnknownMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseUnknownMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseUnknownMessagePreparator; @@ -15,7 +16,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseUnknownMessageHandler - extends SftpMessageHandler { + extends SftpResponseMessageHandler { public SftpResponseUnknownMessageHandler(SshContext context) { super(context); @@ -26,11 +27,6 @@ public SftpResponseUnknownMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpResponseUnknownMessage - } - @Override public SftpResponseUnknownMessageParser getParser(byte[] array) { return new SftpResponseUnknownMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java index 216c27726..1a018dfcd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUsersGroupsByIdMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseUsersGroupsByIdMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseUsersGroupsByIdMessagePreparator; @@ -15,7 +16,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseUsersGroupsByIdMessageHandler - extends SftpMessageHandler { + extends SftpResponseMessageHandler { public SftpResponseUsersGroupsByIdMessageHandler(SshContext context) { super(context); @@ -26,11 +27,6 @@ public SftpResponseUsersGroupsByIdMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpResponseUsersGroupsByIdMessage - } - @Override public SftpResponseUsersGroupsByIdMessageParser getParser(byte[] array) { return new SftpResponseUsersGroupsByIdMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestCloseMessageHandler.java index 75bc971e9..03a5f6c4d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestCloseMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestCloseMessageHandler.java @@ -14,7 +14,8 @@ import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestCloseMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpRequestCloseMessageHandler extends SftpMessageHandler { +public class SftpRequestCloseMessageHandler + extends SftpRequestMessageHandler { public SftpRequestCloseMessageHandler(SshContext context) { super(context); @@ -24,11 +25,6 @@ public SftpRequestCloseMessageHandler(SshContext context, SftpRequestCloseMessag super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestCloseMessage - } - @Override public SftpRequestCloseMessageParser getParser(byte[] array) { return new SftpRequestCloseMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java index 2862fa542..304712882 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileSetStatMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestFileSetStatMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestFileSetStatMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestFileSetStatMessage - } - @Override public SftpRequestFileSetStatMessageParser getParser(byte[] array) { return new SftpRequestFileSetStatMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java index e2d01dd15..94b3974ee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileStatMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestFileStatMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestFileStatMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestFileStatMessage - } - @Override public SftpRequestFileStatMessageParser getParser(byte[] array) { return new SftpRequestFileStatMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestLinkStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestLinkStatMessageHandler.java index 592489632..4db2950d8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestLinkStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestLinkStatMessageHandler.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestLinkStatMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestLinkStatMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestLinkStatMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestLinkStatMessage - } - @Override public SftpRequestLinkStatMessageParser getParser(byte[] array) { return new SftpRequestLinkStatMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java index b9ecde2d4..39e4f2e47 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestMakeDirMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestMakeDirMessageHandler(SshContext context) { super(context); @@ -25,11 +25,6 @@ public SftpRequestMakeDirMessageHandler(SshContext context, SftpRequestMakeDirMe super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestMakeDirMessage - } - @Override public SftpRequestMakeDirMessageParser getParser(byte[] array) { return new SftpRequestMakeDirMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMessageHandler.java new file mode 100644 index 000000000..4501675e2 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMessageHandler.java @@ -0,0 +1,35 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.request; + +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMessage; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public abstract class SftpRequestMessageHandler> + extends SftpMessageHandler implements MessageSentHandler { + + protected SftpRequestMessageHandler(SshContext context) { + super(context); + } + + protected SftpRequestMessageHandler(SshContext context, T message) { + super(context, message); + } + + @Override + public void adjustContext() { + context.getSftpManager().handleRequestMessage(message); + } + + @Override + public void adjustContextAfterMessageSent() { + context.getSftpManager().addRequest(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenDirMessageHandler.java index 3d1e559bb..1c1508622 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenDirMessageHandler.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestOpenDirMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestOpenDirMessageHandler(SshContext context) { super(context); @@ -25,11 +25,6 @@ public SftpRequestOpenDirMessageHandler(SshContext context, SftpRequestOpenDirMe super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestOpenDirMessage - } - @Override public SftpRequestOpenDirMessageParser getParser(byte[] array) { return new SftpRequestOpenDirMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java index ea50f6e06..1877587e3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java @@ -14,7 +14,8 @@ import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestOpenMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpRequestOpenMessageHandler extends SftpMessageHandler { +public class SftpRequestOpenMessageHandler + extends SftpRequestMessageHandler { public SftpRequestOpenMessageHandler(SshContext context) { super(context); @@ -24,11 +25,6 @@ public SftpRequestOpenMessageHandler(SshContext context, SftpRequestOpenMessage super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestOpenMessage - } - @Override public SftpRequestOpenMessageParser getParser(byte[] array) { return new SftpRequestOpenMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadDirMessageHandler.java index 29d191a87..2bc16a660 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadDirMessageHandler.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestReadDirMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestReadDirMessageHandler(SshContext context) { super(context); @@ -25,11 +25,6 @@ public SftpRequestReadDirMessageHandler(SshContext context, SftpRequestReadDirMe super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestReadDirMessage - } - @Override public SftpRequestReadDirMessageParser getParser(byte[] array) { return new SftpRequestReadDirMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadLinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadLinkMessageHandler.java index 3b4a2bfdf..840a718f3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadLinkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadLinkMessageHandler.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestReadLinkMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestReadLinkMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestReadLinkMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestReadLinkMessage - } - @Override public SftpRequestReadLinkMessageParser getParser(byte[] array) { return new SftpRequestReadLinkMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadMessageHandler.java index 7fb350db1..9fbda1efe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadMessageHandler.java @@ -14,7 +14,8 @@ import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestReadMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpRequestReadMessageHandler extends SftpMessageHandler { +public class SftpRequestReadMessageHandler + extends SftpRequestMessageHandler { public SftpRequestReadMessageHandler(SshContext context) { super(context); @@ -24,11 +25,6 @@ public SftpRequestReadMessageHandler(SshContext context, SftpRequestReadMessage super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestReadMessage - } - @Override public SftpRequestReadMessageParser getParser(byte[] array) { return new SftpRequestReadMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRealPathMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRealPathMessageHandler.java index 03db1ba09..a84540e28 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRealPathMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRealPathMessageHandler.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRealPathMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestRealPathMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestRealPathMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestRealPathMessage - } - @Override public SftpRequestRealPathMessageParser getParser(byte[] array) { return new SftpRequestRealPathMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveDirMessageHandler.java index f66e483e0..8264fe7c2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveDirMessageHandler.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRemoveDirMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestRemoveDirMessageHandler(SshContext context) { super(context); @@ -25,11 +25,6 @@ public SftpRequestRemoveDirMessageHandler(SshContext context, SftpRequestRmdirMe super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestRmdirMessage - } - @Override public SftpRequestRemoveDirMessageParser getParser(byte[] array) { return new SftpRequestRemoveDirMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveMessageHandler.java index df00c29db..97fa00c0f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveMessageHandler.java @@ -14,7 +14,8 @@ import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestRemoveMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpRequestRemoveMessageHandler extends SftpMessageHandler { +public class SftpRequestRemoveMessageHandler + extends SftpRequestMessageHandler { public SftpRequestRemoveMessageHandler(SshContext context) { super(context); @@ -24,11 +25,6 @@ public SftpRequestRemoveMessageHandler(SshContext context, SftpRequestRemoveMess super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestRemoveMessage - } - @Override public SftpRequestRemoveMessageParser getParser(byte[] array) { return new SftpRequestRemoveMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRenameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRenameMessageHandler.java index f7fa065f6..2c1c71f0f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRenameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRenameMessageHandler.java @@ -14,7 +14,8 @@ import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestRenameMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpRequestRenameMessageHandler extends SftpMessageHandler { +public class SftpRequestRenameMessageHandler + extends SftpRequestMessageHandler { public SftpRequestRenameMessageHandler(SshContext context) { super(context); @@ -24,11 +25,6 @@ public SftpRequestRenameMessageHandler(SshContext context, SftpRequestRenameMess super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestRenameMessage - } - @Override public SftpRequestRenameMessageParser getParser(byte[] array) { return new SftpRequestRenameMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java index 1acb856da..8ba1ff223 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestSetStatMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestSetStatMessageHandler(SshContext context) { super(context); @@ -25,11 +25,6 @@ public SftpRequestSetStatMessageHandler(SshContext context, SftpRequestSetStatMe super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestSetStatMessage - } - @Override public SftpRequestSetStatMessageParser getParser(byte[] array) { return new SftpRequestSetStatMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java index 44115437a..566857d18 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java @@ -14,7 +14,8 @@ import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpRequestStatMessageHandler extends SftpMessageHandler { +public class SftpRequestStatMessageHandler + extends SftpRequestMessageHandler { public SftpRequestStatMessageHandler(SshContext context) { super(context); @@ -24,11 +25,6 @@ public SftpRequestStatMessageHandler(SshContext context, SftpRequestStatMessage super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestStatMessage - } - @Override public SftpRequestStatMessageParser getParser(byte[] array) { return new SftpRequestStatMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSymbolicLinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSymbolicLinkMessageHandler.java index 69760dbba..1572186d6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSymbolicLinkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSymbolicLinkMessageHandler.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestSymbolicLinkMessageHandler - extends SftpMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestSymbolicLinkMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpRequestSymbolicLinkMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestSymbolicLinkMessage - } - @Override public SftpRequestSymbolicLinkMessageParser getParser(byte[] array) { return new SftpRequestSymbolicLinkMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestWriteMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestWriteMessageHandler.java index 899a25546..771601cd2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestWriteMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestWriteMessageHandler.java @@ -14,7 +14,8 @@ import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestWriteMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpRequestWriteMessageHandler extends SftpMessageHandler { +public class SftpRequestWriteMessageHandler + extends SftpRequestMessageHandler { public SftpRequestWriteMessageHandler(SshContext context) { super(context); @@ -24,11 +25,6 @@ public SftpRequestWriteMessageHandler(SshContext context, SftpRequestWriteMessag super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpRequestWriteMessage - } - @Override public SftpRequestWriteMessageParser getParser(byte[] array) { return new SftpRequestWriteMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java index 659e160ff..ed2fd137b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseAttributesMessageHandler - extends SftpMessageHandler { + extends SftpResponseMessageHandler { public SftpResponseAttributesMessageHandler(SshContext context) { super(context); @@ -26,11 +26,6 @@ public SftpResponseAttributesMessageHandler( super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpResponseAttributesMessage - } - @Override public SftpResponseAttributesMessageParser getParser(byte[] array) { return new SftpResponseAttributesMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseDataMessageHandler.java index 727e6522c..6a933fa49 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseDataMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseDataMessageHandler.java @@ -14,7 +14,8 @@ import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseDataMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpResponseDataMessageHandler extends SftpMessageHandler { +public class SftpResponseDataMessageHandler + extends SftpResponseMessageHandler { public SftpResponseDataMessageHandler(SshContext context) { super(context); @@ -24,11 +25,6 @@ public SftpResponseDataMessageHandler(SshContext context, SftpResponseDataMessag super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpResponseDataMessage - } - @Override public SftpResponseDataMessageParser getParser(byte[] array) { return new SftpResponseDataMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseHandleMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseHandleMessageHandler.java index aaf425cbf..46fdffe7c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseHandleMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseHandleMessageHandler.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseHandleMessageHandler - extends SftpMessageHandler { + extends SftpResponseMessageHandler { public SftpResponseHandleMessageHandler(SshContext context) { super(context); @@ -27,7 +27,8 @@ public SftpResponseHandleMessageHandler(SshContext context, SftpResponseHandleMe @Override public void adjustContext() { - // TODO: Handle SftpResponseHandleMessage + context.getSftpManager().addHandle(message); + super.adjustContext(); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseMessageHandler.java new file mode 100644 index 000000000..39501a880 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseMessageHandler.java @@ -0,0 +1,29 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.response; + +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.state.SshContext; + +public abstract class SftpResponseMessageHandler> + extends SftpMessageHandler { + + protected SftpResponseMessageHandler(SshContext context) { + super(context); + } + + protected SftpResponseMessageHandler(SshContext context, T message) { + super(context, message); + } + + @Override + public void adjustContext() { + context.getSftpManager().removeRequestById(message.getRequestId().getValue()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java index 765d157da..53d4f662d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java @@ -14,7 +14,8 @@ import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseNameMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpResponseNameMessageHandler extends SftpMessageHandler { +public class SftpResponseNameMessageHandler + extends SftpResponseMessageHandler { public SftpResponseNameMessageHandler(SshContext context) { super(context); @@ -24,11 +25,6 @@ public SftpResponseNameMessageHandler(SshContext context, SftpResponseNameMessag super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpResponseNameMessage - } - @Override public SftpResponseNameMessageParser getParser(byte[] array) { return new SftpResponseNameMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseStatusMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseStatusMessageHandler.java index faa36f72d..707113c4a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseStatusMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseStatusMessageHandler.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseStatusMessageHandler - extends SftpMessageHandler { + extends SftpResponseMessageHandler { public SftpResponseStatusMessageHandler(SshContext context) { super(context); @@ -25,11 +25,6 @@ public SftpResponseStatusMessageHandler(SshContext context, SftpResponseStatusMe super(context, message); } - @Override - public void adjustContext() { - // TODO: Handle SftpResponseStatusMessage - } - @Override public SftpResponseStatusMessageParser getParser(byte[] array) { return new SftpResponseStatusMessageParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenDirMessageParser.java index 1c89c4d1c..148a20f35 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenDirMessageParser.java @@ -26,7 +26,5 @@ public SftpRequestOpenDirMessage createMessage() { } @Override - protected void parseRequestWithPathSpecificContents() { - // TODO parserSftpRequestOpenDirMessage(); - } + protected void parseRequestWithPathSpecificContents() {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveDirMessageParser.java index dbe1c00e7..7fab6cae7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveDirMessageParser.java @@ -26,7 +26,5 @@ public SftpRequestRmdirMessage createMessage() { } @Override - protected void parseRequestWithPathSpecificContents() { - // TODO parserSftpRequestRmdirMessage(); - } + protected void parseRequestWithPathSpecificContents() {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseDataMessageParser.java index afb6f52c5..4bbd4a825 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseDataMessageParser.java @@ -37,7 +37,7 @@ private void parseData() { LOGGER.debug("Data length: {}", dataLength); byte[] data = parseByteArrayField(dataLength); message.setData(data); - LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToRawHexString(data)); + LOGGER.debug("Data: {}", () -> ArrayConverter.bytesToHexString(data)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java index 300b436c0..ea61e952f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java @@ -23,13 +23,7 @@ public SftpRequestCheckFileHandleMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getHandle() == null) { - // TODO Get valid Handle - getObject().setHandle(new byte[100], true); - } - if (getObject().getHandleLength() == null) { - getObject().setHandleLength(getObject().getHandle().getValue().length); - } + getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); if (getObject().getHashAlgorithms() == null) { getObject().setHashAlgorithms(List.of(HashAlgorithm.MD5, HashAlgorithm.SHA_1), true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java index e8472ae2e..cae65db34 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java @@ -21,13 +21,7 @@ public SftpRequestCopyDataMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getHandle() == null) { - // TODO Get valid Handle - getObject().setHandle(new byte[100], true); - } - if (getObject().getHandleLength() == null) { - getObject().setHandleLength(getObject().getHandle().getValue().length); - } + getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); if (getObject().getReadFromOffset() == null) { getObject().setReadFromOffset(0); @@ -37,13 +31,7 @@ public void prepareRequestExtendedSpecificContents() { getObject().setReadDataLength(1000000); } - if (getObject().getWriteToHandle() == null) { - // TODO Get valid WriteToHandle - getObject().setWriteToHandle(new byte[100], true); - } - if (getObject().getWriteToHandleLength() == null) { - getObject().setWriteToHandleLength(getObject().getWriteToHandle().getValue().length); - } + getObject().setWriteToHandle(chooser.getContext().getSftpManager().getFileHandle(), true); if (getObject().getWriteToOffset() == null) { getObject().setWriteToOffset(0); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java index f5a009943..5dfcd23bb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java @@ -21,12 +21,7 @@ public SftpRequestFileStatVfsMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getHandle() == null) { - // TODO Get valid Handle - getObject().setHandle(new byte[100], true); - } - if (getObject().getHandleLength() == null) { - getObject().setHandleLength(getObject().getHandle().getValue().length); - } + getObject() + .setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java index cd28b8cb8..7102c381b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java @@ -21,12 +21,6 @@ public SftpRequestFileSyncMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getHandle() == null) { - // TODO Get valid Handle - getObject().setHandle(new byte[100], true); - } - if (getObject().getHandleLength() == null) { - getObject().setHandleLength(getObject().getHandle().getValue().length); - } + getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestCloseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestCloseMessagePreparator.java index ca015d6f2..80f0e4c3b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestCloseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestCloseMessagePreparator.java @@ -20,12 +20,7 @@ public SftpRequestCloseMessagePreparator(Chooser chooser, SftpRequestCloseMessag @Override public void prepareRequestSpecificContents() { - if (getObject().getHandle() == null) { - // TODO Set valid handler - getObject().setHandle(new byte[100], true); - } - if (getObject().getHandleLength() == null) { - getObject().setHandleLength(getObject().getHandle().getValue().length); - } + getObject() + .setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java index 6b25cc848..eeffb1e4f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java @@ -22,13 +22,8 @@ public SftpRequestFileSetStatMessagePreparator( @Override public void prepareRequestSpecificContents() { - if (getObject().getHandle() == null) { - // TODO Set valid handler - getObject().setHandle(new byte[100], true); - } - if (getObject().getHandleLength() == null) { - getObject().setHandleLength(getObject().getHandle().getValue().length); - } + getObject() + .setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); if (getObject().getAttributes() == null) { getObject().setAttributes(new SftpFileAttributes()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java index d7d15cd04..7cf4977c4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java @@ -21,12 +21,7 @@ public SftpRequestFileStatMessagePreparator( @Override public void prepareRequestSpecificContents() { - if (getObject().getHandle() == null) { - // TODO Set valid handler - getObject().setHandle(new byte[100], true); - } - if (getObject().getHandleLength() == null) { - getObject().setHandleLength(getObject().getHandle().getValue().length); - } + getObject() + .setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMessagePreparator.java index 8d30b99e7..181efb6ba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMessagePreparator.java @@ -22,8 +22,7 @@ protected SftpRequestMessagePreparator( @Override public void prepareMessageSpecificContents() { - // TODO: Get valid request ID - getObject().setRequestId(0); + getObject().setRequestId(chooser.getContext().getSftpManager().getNextRequestId()); prepareRequestSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadDirMessagePreparator.java index 7f8e6b42d..e5338945c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadDirMessagePreparator.java @@ -20,12 +20,6 @@ public SftpRequestReadDirMessagePreparator(Chooser chooser, SftpRequestReadDirMe @Override public void prepareRequestSpecificContents() { - if (getObject().getHandle() == null) { - // TODO Set valid handler - getObject().setHandle(new byte[100], true); - } - if (getObject().getHandleLength() == null) { - getObject().setHandleLength(getObject().getHandle().getValue().length); - } + getObject().setHandle(chooser.getContext().getSftpManager().getDirectoryHandle(), true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java index f750ce245..bf96e950e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java @@ -20,20 +20,14 @@ public SftpRequestReadMessagePreparator(Chooser chooser, SftpRequestReadMessage @Override public void prepareRequestSpecificContents() { - if (getObject().getHandle() == null) { - // TODO Set valid handler - getObject().setHandle(new byte[100], true); - } - if (getObject().getHandleLength() == null) { - getObject().setHandleLength(getObject().getHandle().getValue().length); - } + getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); if (getObject().getOffset() == null) { getObject().setOffset(0); } if (getObject().getLength() == null) { - getObject().setLength(0); + getObject().setLength(100000000); } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java index cd8bb7305..2eb37dbf9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java @@ -20,13 +20,7 @@ public SftpRequestWriteMessagePreparator(Chooser chooser, SftpRequestWriteMessag @Override public void prepareRequestSpecificContents() { - if (getObject().getHandle() == null) { - // TODO Set valid handler - getObject().setHandle(new byte[100], true); - } - if (getObject().getHandleLength() == null) { - getObject().setHandleLength(getObject().getHandle().getValue().length); - } + getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); if (getObject().getOffset() == null) { getObject().setOffset(0); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java index 7aa1843dd..d2d6b49ab 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java @@ -21,7 +21,7 @@ public SftpResponseHandleMessagePreparator(Chooser chooser, SftpResponseHandleMe @Override public void prepareResponseSpecificContents() { if (getObject().getHandle() == null) { - // TODO get valid handle + // Should be set in SftpManager handleRequestMessage() getObject().setHandle(new byte[100], true); } if (getObject().getHandleLength() == null) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java index acf849dec..d26dea398 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java @@ -21,8 +21,10 @@ protected SftpResponseMessagePreparator( } public void prepareMessageSpecificContents() { - // TODO: Get valid request ID - getObject().setRequestId(0); + // Request identifier should be set by SftpManager in handleRequestMessage() + if (getObject().getRequestId() == null) { + getObject().setRequestId(chooser.getContext().getSftpManager().getNextRequestId()); + } prepareResponseSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java index d29bf1076..af9dd1aac 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java @@ -17,7 +17,5 @@ public SftpRequestFileStatMessageSerializer(SftpRequestFileStatMessage message) } @Override - protected void serializeRequestWithHandleSpecificContents() { - // TODO serializeSftpRequestFileStatMessage(); - } + protected void serializeRequestWithHandleSpecificContents() {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java index 7faefb1c8..8a437afcf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java @@ -17,7 +17,8 @@ public StringDataMessagePreparator(Chooser chooser, StringDataMessage message) { } public void prepareProtocolMessageContents() { - // TODO dummy values for fuzzing - getObject().setData("ls /"); + if (getObject().getData() == null) { + getObject().setData("ls /"); + } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/DataManagerException.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/DataManagerException.java new file mode 100644 index 000000000..3a28ebc03 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/DataManagerException.java @@ -0,0 +1,23 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.exceptions; + +public class DataManagerException extends RuntimeException { + + public DataManagerException() { + super(); + } + + public DataManagerException(String message) { + super(message); + } + + public DataManagerException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java index 7a636d3c4..c5ad9c7ac 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java @@ -17,6 +17,7 @@ import de.rub.nds.sshattacker.core.crypto.kex.RsaKeyExchange; import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; import de.rub.nds.sshattacker.core.data.DataMessageLayer; +import de.rub.nds.sshattacker.core.data.sftp.SftpManager; import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.exceptions.ConfigurationException; import de.rub.nds.sshattacker.core.exceptions.TransportHandlerConnectException; @@ -338,6 +339,12 @@ public class SshContext { // TODO: Implement channel requests in such a way that allows specification within the XML file // endregion + // region Connection Protocol + + private SftpManager sftpManager; + + // endregion + // region SFTP Version Exchange /** SFTP Client protocol version */ private Integer sftpClientVersion; @@ -405,6 +412,7 @@ public void init(Config config, AliasedConnection connection) { readSequenceNumber = 0; handleAsClient = connection.getLocalConnectionEndType() == ConnectionEndType.CLIENT; channelManager = new ChannelManager(this); + sftpManager = new SftpManager(this); } // endregion @@ -1231,6 +1239,18 @@ public void setHandleAsClient(boolean handleAsClient) { this.handleAsClient = handleAsClient; } + // region for Data Managers + + public SftpManager getSftpManager() { + return sftpManager; + } + + public void setSftpManager(SftpManager sftpManager) { + this.sftpManager = sftpManager; + } + + // endregion + // region Getters for SFTP Version Exchange Fields public Optional getSftpClientVersion() { return Optional.ofNullable(sftpClientVersion); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java index b118cbb88..62e4c4bac 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java @@ -127,6 +127,7 @@ public abstract class MessageAction extends ConnectionBoundAction { @XmlElement(type = UnknownMessage.class, name = "UnknownMessage"), @XmlElement(type = VersionExchangeMessage.class, name = "VersionExchange"), @XmlElement(type = AsciiMessage.class, name = "AsciiMessage"), + // SFTP @XmlElement(type = SftpInitMessage.class, name = "SftpInit"), @XmlElement( type = SftpRequestCheckFileHandleMessage.class, diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java index 478d05435..27c2efe01 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java @@ -138,6 +138,7 @@ public class ReceiveAction extends MessageAction implements ReceivingAction { @XmlElement(type = AsciiMessage.class, name = "AsciiMessage"), @XmlElement(type = HybridKeyExchangeInitMessage.class, name = "HybridKeyExchangeInit"), @XmlElement(type = HybridKeyExchangeReplyMessage.class, name = "HybridKeyExchangeReply"), + // SFTP @XmlElement(type = SftpInitMessage.class, name = "SftpInit"), @XmlElement( type = SftpRequestCheckFileHandleMessage.class, diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java index ab85d753a..9c5b2b22d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java @@ -149,6 +149,7 @@ public static MessageActionResult handleReceivedBytes( // Parse ChannelDataMessage ProtocolMessage innerMessage = context.getDataMessageLayer().parse((ChannelDataMessage) message); + innerMessage.getHandler(context).adjustContext(); parsedMessages.add(innerMessage); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java index 057f44600..ea4f80d24 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java @@ -42,6 +42,10 @@ public static MessageActionResult sendMessage(SshContext context, ProtocolMessag if (message instanceof DataMessage) { // Serialize data message to ChannelDataMessage innerMessage = message; + Handler handler = innerMessage.getHandler(context); + if (handler instanceof MessageSentHandler) { + ((MessageSentHandler) handler).adjustContextAfterMessageSent(); + } message = context.getDataMessageLayer().serialize((DataMessage) message); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/SshActionFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/SshActionFactory.java index 3ab874e8a..3c80a6850 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/SshActionFactory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/SshActionFactory.java @@ -22,6 +22,42 @@ private SshActionFactory() { super(); } + /** + * Creates a Message Action with the receive options: IGNORE_CHANNEL_DATA_WRAPPER and + * IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS + */ + public static MessageAction createDataMessageAction( + AliasedConnection connection, + ConnectionEndType sendingConnectionEnd, + ProtocolMessage... dataMessages) { + return createDataMessageAction( + connection, sendingConnectionEnd, new ArrayList<>(Arrays.asList(dataMessages))); + } + + /** + * Creates a Message Action with the receive options: IGNORE_CHANNEL_DATA_WRAPPER and + * IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS + */ + public static MessageAction createDataMessageAction( + AliasedConnection connection, + ConnectionEndType sendingConnectionEnd, + List> dataMessages) { + MessageAction action; + if (connection.getLocalConnectionEndType() == sendingConnectionEnd) { + action = new SendAction(dataMessages); + } else { + action = new ReceiveAction(dataMessages); + ((ReceiveAction) action) + .setReceiveOptions( + Set.of( + ReceiveAction.ReceiveOption.IGNORE_CHANNEL_DATA_WRAPPER, + ReceiveAction.ReceiveOption + .IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS)); + } + action.setConnectionAlias(connection.getAlias()); + return action; + } + public static MessageAction createMessageAction( AliasedConnection connection, ConnectionEndType sendingConnectionEnd, diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java index c892fb19e..89dbbcdbb 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java @@ -15,10 +15,11 @@ import de.rub.nds.sshattacker.core.constants.RunningModeType; import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.*; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseDataMessage; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameMessage; import de.rub.nds.sshattacker.core.exceptions.ConfigurationException; import de.rub.nds.sshattacker.core.protocol.authentication.message.*; import de.rub.nds.sshattacker.core.protocol.connection.message.*; @@ -577,29 +578,30 @@ connection, ConnectionEndType.SERVER, new SftpVersionMessage()), public void addSftpTestActions(WorkflowTrace workflow) { AliasedConnection connection = getDefaultConnection(); workflow.addSshActions( - SshActionFactory.createMessageAction( + SshActionFactory.createDataMessageAction( connection, ConnectionEndType.CLIENT, new SftpRequestOpenMessage()), - SshActionFactory.withReceiveOptions( - SshActionFactory.createMessageAction( - connection, - ConnectionEndType.SERVER, - new SftpResponseHandleMessage()), - Set.of( - ReceiveAction.ReceiveOption.IGNORE_CHANNEL_DATA_WRAPPER, - ReceiveAction.ReceiveOption - .IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS))); + SshActionFactory.createDataMessageAction( + connection, ConnectionEndType.SERVER, new SftpResponseHandleMessage())); workflow.addSshActions( - SshActionFactory.createMessageAction( + SshActionFactory.createDataMessageAction( connection, ConnectionEndType.CLIENT, new SftpRequestFileStatMessage()), - SshActionFactory.withReceiveOptions( - SshActionFactory.createMessageAction( - connection, - ConnectionEndType.SERVER, - new SftpResponseAttributesMessage()), - Set.of( - ReceiveAction.ReceiveOption.IGNORE_CHANNEL_DATA_WRAPPER, - ReceiveAction.ReceiveOption - .IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS))); + SshActionFactory.createDataMessageAction( + connection, ConnectionEndType.SERVER, new SftpResponseAttributesMessage())); + workflow.addSshActions( + SshActionFactory.createDataMessageAction( + connection, ConnectionEndType.CLIENT, new SftpRequestReadMessage()), + SshActionFactory.createDataMessageAction( + connection, ConnectionEndType.SERVER, new SftpResponseDataMessage())); + workflow.addSshActions( + SshActionFactory.createDataMessageAction( + connection, ConnectionEndType.CLIENT, new SftpRequestOpenDirMessage()), + SshActionFactory.createDataMessageAction( + connection, ConnectionEndType.SERVER, new SftpResponseHandleMessage())); + workflow.addSshActions( + SshActionFactory.createDataMessageAction( + connection, ConnectionEndType.CLIENT, new SftpRequestReadDirMessage()), + SshActionFactory.createDataMessageAction( + connection, ConnectionEndType.SERVER, new SftpResponseNameMessage())); } private WorkflowTrace createSimpleMitmProxyWorkflow() { From a2a637409ac9d955b464265669bb9e4e5b3f5928 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sun, 3 Nov 2024 17:52:32 +0100 Subject: [PATCH 039/203] log signature as hex string too --- .../parser/UserAuthHostbasedMessageParser.java | 2 +- .../transport/parser/DhGexKeyExchangeReplyMessageParser.java | 5 +++-- .../transport/parser/DhKeyExchangeReplyMessageParser.java | 2 +- .../parser/HybridKeyExchangeReplyMessageParser.java | 2 +- .../transport/parser/RsaKeyExchangeDoneMessageParser.java | 3 ++- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthHostbasedMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthHostbasedMessageParser.java index 5094982d0..56ae24833 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthHostbasedMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthHostbasedMessageParser.java @@ -77,7 +77,7 @@ private void parseSignature() { LOGGER.debug("Signature length: {}", signatureLength); byte[] signature = parseByteArrayField(signatureLength); message.setSignature(signature); - LOGGER.debug("Signature: {}", signature); + LOGGER.debug("Signature: {}", () -> ArrayConverter.bytesToRawHexString(signature)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeReplyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeReplyMessageParser.java index 8c6197ad5..24ee783f8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeReplyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhGexKeyExchangeReplyMessageParser.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.transport.parser; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.BinaryPacketConstants; import de.rub.nds.sshattacker.core.protocol.common.SshMessageParser; import de.rub.nds.sshattacker.core.protocol.transport.message.DhGexKeyExchangeReplyMessage; @@ -38,7 +39,7 @@ private void parseHostKeyBytes() { LOGGER.debug("Host key bytes length: {}", hostKeyBytesLength); byte[] hostKeyBytes = parseByteArrayField(hostKeyBytesLength); message.setHostKeyBytes(hostKeyBytes); - LOGGER.debug("Host key bytes: {}", hostKeyBytes); + LOGGER.debug("Host key bytes: {}", () -> ArrayConverter.bytesToRawHexString(hostKeyBytes)); } private void parseEphemeralPublicKey() { @@ -56,7 +57,7 @@ private void parseSignature() { LOGGER.debug("Signature length: {}", signatureLength); byte[] signature = parseByteArrayField(signatureLength); message.setSignature(signature); - LOGGER.debug("Signature: {}", signature); + LOGGER.debug("Signature: {}", () -> ArrayConverter.bytesToRawHexString(signature)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeReplyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeReplyMessageParser.java index 601a5736e..f1a0982cc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeReplyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/DhKeyExchangeReplyMessageParser.java @@ -56,7 +56,7 @@ private void parseSignature() { LOGGER.debug("Signature length: {}", signatureLength); byte[] signature = parseByteArrayField(signatureLength); message.setSignature(signature); - LOGGER.debug("Signature: {}", signature); + LOGGER.debug("Signature: {}", () -> ArrayConverter.bytesToRawHexString(signature)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java index 804186e14..8328d2972 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java @@ -83,7 +83,7 @@ private void parseSignature() { LOGGER.debug("Signature length: {}", signatureLength); byte[] signature = parseByteArrayField(signatureLength); message.setSignature(signature); - LOGGER.debug("Signature: {}", signature); + LOGGER.debug("Signature: {}", () -> ArrayConverter.bytesToRawHexString(signature)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangeDoneMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangeDoneMessageParser.java index 973a24d49..0cc7c0820 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangeDoneMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangeDoneMessageParser.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.transport.parser; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.BinaryPacketConstants; import de.rub.nds.sshattacker.core.protocol.common.SshMessageParser; import de.rub.nds.sshattacker.core.protocol.transport.message.RsaKeyExchangeDoneMessage; @@ -41,6 +42,6 @@ private void parseSignature() { LOGGER.debug("Signature length: {}", signatureLength); byte[] signature = parseByteArrayField(signatureLength); message.setSignature(signature); - LOGGER.debug("Signature: {}", signature); + LOGGER.debug("Signature: {}", () -> ArrayConverter.bytesToRawHexString(signature)); } } From f547c2497797e65f1d44970dfb1066998bb0040b Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 4 Nov 2024 17:00:31 +0100 Subject: [PATCH 040/203] Add SFTP v4 support --- .../nds/sshattacker/core/config/Config.java | 80 ++++- .../core/constants/SftpAceFlag.java | 45 +++ .../core/constants/SftpAceMask.java | 55 ++++ .../core/constants/SftpAceType.java | 56 ++++ .../core/constants/SftpExtension.java | 6 + .../core/constants/SftpFileAttributeFlag.java | 18 +- .../core/constants/SftpFileOpenFlag.java | 10 +- .../core/constants/SftpFileType.java | 57 ++++ .../core/constants/SftpStatusCode.java | 7 +- .../core/data/sftp/SftpManager.java | 7 +- .../core/data/sftp/SftpMessageParser.java | 28 +- .../sftp/handler/SftpInitMessageHandler.java | 10 +- .../handler/SftpVersionMessageHandler.java | 10 +- .../attribute/SftpAclEntryHandler.java | 55 ++++ .../attribute/SftpFileAttributesHandler.java | 4 +- .../SftpRequestLinkSetStatMessageHandler.java | 4 +- .../SftpRequestTextSeekMessageHandler.java | 53 ++++ .../SftpExtensionFileStatVfsHandler.java | 6 +- .../SftpExtensionNewlineHandler.java | 51 +++ .../SftpExtensionStatVfsHandler.java | 8 +- .../SftpExtensionTextSeekHandler.java | 55 ++++ .../SftpRequestFileSetStatMessageHandler.java | 4 +- .../SftpRequestFileStatMessageHandler.java | 4 +- .../SftpRequestMakeDirMessageHandler.java | 4 +- .../SftpRequestOpenMessageHandler.java | 4 +- .../SftpRequestSetStatMessageHandler.java | 4 +- .../SftpRequestStatMessageHandler.java | 4 +- .../SftpResponseAttributesMessageHandler.java | 4 +- .../SftpResponseNameEntryHandler.java | 4 +- .../SftpResponseNameMessageHandler.java | 4 +- .../sftp/message/attribute/SftpAclEntry.java | 121 +++++++ .../message/attribute/SftpFileAttributes.java | 297 ++++++++++++++++-- .../SftpRequestTextSeekMessage.java | 36 +++ .../extension/SftpExtensionNewline.java | 68 ++++ .../extension/SftpExtensionTextSeek.java | 19 ++ .../request/SftpRequestFileStatMessage.java | 25 ++ .../request/SftpRequestStatMessage.java | 25 ++ .../response/SftpResponseNameEntry.java | 5 + .../parser/SftpHandshakeMessageParser.java | 11 + .../parser/attribute/SftpAclEntryParser.java | 68 ++++ .../attribute/SftpFileAttributesParser.java | 124 +++++++- .../SftpRequestLinkSetStatMessageParser.java | 11 +- .../SftpRequestTextSeekMessageParser.java | 43 +++ .../extension/SftpExtensionNewlineParser.java | 43 +++ .../SftpRequestFileSetStatMessageParser.java | 11 +- .../SftpRequestFileStatMessageParser.java | 26 +- .../SftpRequestMakeDirMessageParser.java | 11 +- .../request/SftpRequestOpenMessageParser.java | 10 +- .../SftpRequestSetStatMessageParser.java | 11 +- .../request/SftpRequestStatMessageParser.java | 26 +- .../SftpResponseAttributesMessageParser.java | 11 +- .../response/SftpResponseNameEntryParser.java | 25 +- .../SftpResponseNameMessageParser.java | 10 +- .../preperator/SftpInitMessagePreparator.java | 6 +- .../SftpVersionMessagePreparator.java | 1 + .../attribute/SftpAclEntryPreparator.java | 42 +++ .../SftpFileAttributesPreparator.java | 179 +++++++++-- .../SftpRequestTextSeekMessagePreparator.java | 30 ++ .../SftpExtensionFileStatVfsPreparator.java | 29 ++ .../SftpExtensionNewlinePreparator.java | 32 ++ .../SftpExtensionStatVfsPreparator.java | 29 ++ .../SftpRequestFileStatMessagePreparator.java | 10 + .../SftpRequestStatMessagePreparator.java | 10 + .../SftpResponseNameEntryPreparator.java | 21 +- .../attribute/SftpAclEntrySerializer.java | 64 ++++ .../SftpFileAttributesSerializer.java | 162 ++++++---- .../SftpRequestTextSeekMessageSerializer.java | 34 ++ .../SftpExtensionNewlineSerializer.java | 40 +++ .../SftpRequestFileStatMessageSerializer.java | 17 +- .../SftpRequestStatMessageSerializer.java | 17 +- .../SftpResponseNameEntrySerializer.java | 14 +- .../sshattacker/core/state/SshContext.java | 11 + .../core/workflow/chooser/Chooser.java | 2 + .../core/workflow/chooser/DefaultChooser.java | 11 + 74 files changed, 2234 insertions(+), 225 deletions(-) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpAceFlag.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpAceMask.java create mode 100755 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpAceType.java create mode 100755 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileType.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpAclEntryHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestTextSeekMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionNewlineHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionTextSeekHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpAclEntry.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionTextSeek.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpAclEntryParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestTextSeekMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionNewlineParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpAclEntryPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpAclEntrySerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestTextSeekMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionNewlineSerializer.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index a1759cee6..fb132364a 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -14,8 +14,7 @@ import de.rub.nds.sshattacker.core.constants.*; import de.rub.nds.sshattacker.core.crypto.ec.PointFormatter; import de.rub.nds.sshattacker.core.crypto.keys.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionUnknown; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.*; import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationResponse; import de.rub.nds.sshattacker.core.protocol.connection.ChannelDefaults; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.*; @@ -431,6 +430,15 @@ public class Config implements Serializable { /** SFTP Server protocol version */ private Integer sftpServerVersion; + /** SFTP negotiated protocol version */ + private Integer sftpNegotiatedVersion; + + /** + * Whether the protocol messages that are sent should be consistent with the negotiated SFTP + * protocol version. + */ + private Boolean respectSftpNegotiatedVersion; + // endregion // region SSH Extensions @@ -446,6 +454,12 @@ public class Config implements Serializable { // endregion + // region SSH Attributes Settings + /** Whether the attributes in messages should be consistent with the attributes flags. */ + private Boolean respectSftpAttributesFlags; + + // endregion + // region Workflow settings /** The path to load workflow trace from. The workflow trace must be stored in an XML-File. */ private String workflowInput; @@ -1113,15 +1127,45 @@ public Config() { // endregion // region SFTP Version Exchange initialization - sftpClientVersion = 3; - sftpServerVersion = 3; + sftpClientVersion = 4; + sftpServerVersion = 4; + sftpNegotiatedVersion = 1; + respectSftpNegotiatedVersion = true; // endregion // region SFTP Extension sftpClientSupportedExtensions = new ArrayList<>(); + addAllSftpExtensions(sftpClientSupportedExtensions); sftpServerSupportedExtensions = new ArrayList<>(); + addAllSftpExtensions(sftpServerSupportedExtensions); + // endregion + // region SSH Attributes Settings + respectSftpAttributesFlags = true; // endregion + + } + + public static void addAllSftpExtensions(List> extensions) { + extensions.add(new SftpExtensionCheckFile()); + extensions.add(new SftpExtensionCopyData()); + extensions.add(new SftpExtensionCopyFile()); + extensions.add(new SftpExtensionExpandPath()); + extensions.add(new SftpExtensionFileStatVfs()); + extensions.add(new SftpExtensionFileSync()); + extensions.add(new SftpExtensionGetTempFolder()); + extensions.add(new SftpExtensionHardlink()); + extensions.add(new SftpExtensionHomeDirectory()); + extensions.add(new SftpExtensionLimits()); + extensions.add(new SftpExtensionLinkSetStat()); + extensions.add(new SftpExtensionMakeTempFolder()); + extensions.add(new SftpExtensionPosixRename()); + extensions.add(new SftpExtensionSpaceAvailable()); + extensions.add(new SftpExtensionStatVfs()); + extensions.add(new SftpExtensionUsersGroupsById()); + extensions.add(new SftpExtensionVendorId()); + extensions.add(new SftpExtensionTextSeek()); + extensions.add(new SftpExtensionNewline()); } // endregion @@ -2035,6 +2079,14 @@ public Integer getSftpServerVersion() { return sftpServerVersion; } + public Integer getSftpNegotiatedVersion() { + return sftpNegotiatedVersion; + } + + public Boolean getRespectSftpNegotiatedVersion() { + return respectSftpNegotiatedVersion; + } + // endregion // region Setters for SFTP Version Exchange public void setSftpClientVersion(Integer sftpClientVersion) { @@ -2045,6 +2097,14 @@ public void setSftpServerVersion(Integer sftpServerVersion) { this.sftpServerVersion = sftpServerVersion; } + public void setSftpNegotiatedVersion(Integer sftpNegotiatedVersion) { + this.sftpNegotiatedVersion = sftpNegotiatedVersion; + } + + public void setRespectSftpNegotiatedVersion(Boolean respectSftpNegotiatedVersion) { + this.respectSftpNegotiatedVersion = respectSftpNegotiatedVersion; + } + // endregion // region Getters SFTP Extensions @@ -2072,4 +2132,16 @@ public void setSftpServerSupportedExtensions( List> sftpServerSupportedExtensions) { this.sftpServerSupportedExtensions = sftpServerSupportedExtensions; } + + // endregion + + // region SSH Attributes Settings + public void setRespectSftpAttributesFlags(Boolean respectSftpAttributesFlags) { + this.respectSftpAttributesFlags = respectSftpAttributesFlags; + } + + public Boolean getRespectSftpAttributesFlags() { + return respectSftpAttributesFlags; + } + // endregion } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpAceFlag.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpAceFlag.java new file mode 100644 index 000000000..507954156 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpAceFlag.java @@ -0,0 +1,45 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.constants; + +public enum SftpAceFlag { + /* + * Sources: + * - https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-03#section-5.7 + */ + // [ From version 4 onwards ] + ACE4_FILE_INHERIT_ACE(0x00000001), + ACE4_DIRECTORY_INHERIT_ACE(0x00000002), + ACE4_NO_PROPAGATE_INHERIT_ACE(0x00000004), + ACE4_INHERIT_ONLY_ACE(0x00000008), + ACE4_SUCCESSFUL_ACCESS_ACE_FLAG(0x00000010), + ACE4_FAILED_ACCESS_ACE_FLAG(0x00000020), + ACE4_IDENTIFIER_GROUP(0x00000040); + + private final int value; + + SftpAceFlag(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + + public static boolean isFlagSet(int flags, SftpAceFlag aceFlag) { + return (flags & aceFlag.value) != 0; + } + + public static int flagsToInt(SftpAceFlag... aceFlags) { + int result = 0; + for (SftpAceFlag aceFlag : aceFlags) { + result |= aceFlag.value; + } + return result; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpAceMask.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpAceMask.java new file mode 100644 index 000000000..b62b2adcb --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpAceMask.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.constants; + +public enum SftpAceMask { + /* + * Sources: + * - https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-03#section-5.7 + */ + // [ From version 4 onwards ] + ACE4_READ_DATA(0x00000001), + ACE4_LIST_DIRECTORY(0x00000001), + ACE4_WRITE_DATA(0x00000002), + ACE4_ADD_FILE(0x00000002), + ACE4_APPEND_DATA(0x00000004), + ACE4_ADD_SUBDIRECTORY(0x00000004), + ACE4_READ_NAMED_ATTRS(0x00000008), + ACE4_WRITE_NAMED_ATTRS(0x00000010), + ACE4_EXECUTE(0x00000020), + ACE4_DELETE_CHILD(0x00000040), + ACE4_READ_ATTRIBUTES(0x00000080), + ACE4_WRITE_ATTRIBUTES(0x00000100), + ACE4_DELETE(0x00010000), + ACE4_READ_ACL(0x00020000), + ACE4_WRITE_ACL(0x00040000), + ACE4_WRITE_OWNER(0x00080000), + ACE4_SYNCHRONIZE(0x00100000); + + private final int value; + + SftpAceMask(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + + public static boolean isFlagSet(int flags, SftpAceMask flag) { + return (flags & flag.value) != 0; + } + + public static int flagsToInt(SftpAceMask... flags) { + int result = 0; + for (SftpAceMask flag : flags) { + result |= flag.value; + } + return result; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpAceType.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpAceType.java new file mode 100755 index 000000000..be0ed0c41 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpAceType.java @@ -0,0 +1,56 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.constants; + +import java.util.Collections; +import java.util.Map; +import java.util.TreeMap; + +public enum SftpAceType { + /* + * Sources: + * - https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-03#section-5.7 + */ + // [ From version 4 onwards ] + ACE4_ACCESS_ALLOWED_ACE_TYPE(0), + ACE4_ACCESS_DENIED_ACE_TYPE(1), + ACE4_SYSTEM_AUDIT_ACE_TYPE(2), + ACE4_SYSTEM_ALARM_ACE_TYPE(3); + + private final int type; + + SftpAceType(int type) { + this.type = type; + } + + public int getType() { + return type; + } + + public static final Map map; + + static { + Map mutableMap = new TreeMap<>(); + for (SftpAceType constant : values()) { + mutableMap.put(constant.type, constant); + } + map = Collections.unmodifiableMap(mutableMap); + } + + public static String getNameByType(int type) { + if (map.containsKey(type)) { + return map.get(type).toString(); + } else { + return String.format("%d", type); + } + } + + public static SftpAceType fromType(int type) { + return map.get(type); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java index 4f0237ffe..4ad86e4a4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java @@ -30,6 +30,9 @@ public enum SftpExtension { * - 4.9. expand-path@openssh.com * - 4.10. expand-path@openssh.com * - 4.12. users-groups-by-id@openssh.com + * - SFTP v4: https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-03 + * - 4.3. new-line + * - 6.3. text-seek */ // SFTP VENDOR_ID("vendor-id"), @@ -44,6 +47,9 @@ public enum SftpExtension { COPY_DATA("copy-data"), GET_TEMP_FOLDER("get-temp-folder"), MAKE_TEMP_FOLDER("make-temp-folder"), + // SFTP v4 + TEXT_SEEK("text-seek"), + NEWLINE("newline"), // Vendor extensions POSIX_RENAME_OPENSSH_COM("posix-rename@openssh.com"), STAT_VFS_OPENSSH_COM("statvfs@openssh.com"), diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileAttributeFlag.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileAttributeFlag.java index 52de2acfe..2c1a4664e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileAttributeFlag.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileAttributeFlag.java @@ -8,11 +8,23 @@ package de.rub.nds.sshattacker.core.constants; public enum SftpFileAttributeFlag { + /* + * Sources: + * - https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-02#page-9 + * - https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-03#page-9 + */ SSH_FILEXFER_ATTR_SIZE(0x00000001), - SSH_FILEXFER_ATTR_UIDGID(0x00000002), + SSH_FILEXFER_ATTR_UIDGID(0x00000002), // No longer available since version 4 SSH_FILEXFER_ATTR_PERMISSIONS(0x00000004), - SSH_FILEXFER_ATTR_ACMODTIME(0x00000008), - SSH_FILEXFER_ATTR_EXTENDED(0x80000000); + SSH_FILEXFER_ATTR_ACMODTIME( + 0x00000008), // Name changed to SSH_FILEXFER_ATTR_ACCESSTIME in version 4 + SSH_FILEXFER_ATTR_ACCESSTIME(0x00000008), + SSH_FILEXFER_ATTR_EXTENDED(0x80000000), + // [ From version 4 onwards ] + SSH_FILEXFER_ATTR_CREATETIME(0x00000010), + SSH_FILEXFER_ATTR_MODIFYTIME(0x00000020), + SSH_FILEXFER_ATTR_ACL(0x00000040), + SSH_FILEXFER_ATTR_OWNERGROUP(0x00000080); private final int value; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileOpenFlag.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileOpenFlag.java index cd2f66765..349025241 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileOpenFlag.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileOpenFlag.java @@ -8,12 +8,20 @@ package de.rub.nds.sshattacker.core.constants; public enum SftpFileOpenFlag { + /* + * Sources: + * - https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-02#page-12 + * - https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-03#page-15 + */ + // [ From version 3 onwards ] SSH_FXF_READ(0x00000001), SSH_FXF_WRITE(0x00000002), SSH_FXF_APPEND(0x00000004), SSH_FXF_CREAT(0x00000008), SSH_FXF_TRUNC(0x00000010), - SSH_FXF_EXCL(0x00000020); + SSH_FXF_EXCL(0x00000020), + // [ From version 4 onwards ] + SSH_FXF_TEXT(0x00000040); private final int value; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileType.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileType.java new file mode 100755 index 000000000..00b532c88 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFileType.java @@ -0,0 +1,57 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.constants; + +import java.util.Collections; +import java.util.Map; +import java.util.TreeMap; + +public enum SftpFileType { + /* + * Sources: + * - https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-03#section-5.2 + */ + // [ From version 4 onwards ] + SSH_FILEXFER_TYPE_REGULAR((byte) 1), + SSH_FILEXFER_TYPE_DIRECTORY((byte) 2), + SSH_FILEXFER_TYPE_SYMLINK((byte) 3), + SSH_FILEXFER_TYPE_SPECIAL((byte) 4), + SSH_FILEXFER_TYPE_UNKNOWN((byte) 5); + + private final byte type; + + SftpFileType(byte type) { + this.type = type; + } + + public byte getType() { + return type; + } + + public static final Map map; + + static { + Map mutableMap = new TreeMap<>(); + for (SftpFileType constant : values()) { + mutableMap.put(constant.type, constant); + } + map = Collections.unmodifiableMap(mutableMap); + } + + public static String getNameByType(byte type) { + if (map.containsKey(type)) { + return map.get(type).toString(); + } else { + return String.format("%d", type); + } + } + + public static SftpFileType fromType(byte type) { + return map.get(type); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpStatusCode.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpStatusCode.java index df7969dac..7b4a89a66 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpStatusCode.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpStatusCode.java @@ -25,7 +25,12 @@ public enum SftpStatusCode { SSH_FX_BAD_MESSAGE(5), SSH_FX_NO_CONNECTION(6), SSH_FX_CONNECTION_LOST(7), - SSH_FX_OP_UNSUPPORTED(8); + SSH_FX_OP_UNSUPPORTED(8), + // [ From version 4 onwards ] + SSH_FX_INVALID_HANDLE(9), + SSH_FX_NO_SUCH_PATH(10), + SSH_FX_FILE_ALREADY_EXISTS(11), + SSH_FX_WRITE_PROTECT(12); private final int code; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java index 19e6186e0..372b1d9b0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java @@ -92,6 +92,7 @@ public void handleRequestMessage(SftpRequestMessage request) { - SSH_FXP_RMDIR, SSH_FXP_SETSTAT, SSH_FXP_FSETSTAT, SSH_FXP_SYMLINK - vendor-id, copy-file, copy-data - posix-rename, hardlink, fsync, lsetstat, + - text-seek */ response = new SftpResponseStatusMessage(); ((SftpResponseStatusMessage) response).setStatusCode(SftpStatusCode.SSH_FX_OK); @@ -196,7 +197,7 @@ private byte[] createDirectoryHandle() { /** * Return a random valid handle for a directory. * - *

If there are no valid handles, return a invalid random handle. + *

If there are no valid handles, return an invalid random handle. * * @return handle */ @@ -210,7 +211,7 @@ public byte[] getDirectoryHandle() { /** * Return a random valid handle for a file. * - *

If there are no valid handles, return a invalid random handle. + *

If there are no valid handles, return an invalid random handle. * * @return handle */ @@ -224,7 +225,7 @@ public byte[] getFileHandle() { /** * Return a random valid handle for a file or a directory. * - *

If there are no valid handles, return a invalid random handle. + *

If there are no valid handles, return an invalid random handle. * * @return handle */ diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java index 39cfa8923..e10da06d4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java @@ -56,7 +56,7 @@ public static SftpMessage delegateParsing(AbstractDataPacket packet, SshConte case SSH_FXP_VERSION: return new SftpVersionMessageParser(raw).parse(); case SSH_FXP_OPEN: - return new SftpRequestOpenMessageParser(raw).parse(); + return new SftpRequestOpenMessageParser(raw, context.getChooser()).parse(); case SSH_FXP_CLOSE: return new SftpRequestCloseMessageParser(raw).parse(); case SSH_FXP_READ: @@ -66,11 +66,12 @@ public static SftpMessage delegateParsing(AbstractDataPacket packet, SshConte case SSH_FXP_LSTAT: return new SftpRequestLinkStatMessageParser(raw).parse(); case SSH_FXP_FSTAT: - return new SftpRequestFileStatMessageParser(raw).parse(); + return new SftpRequestFileStatMessageParser(raw, context.getChooser()).parse(); case SSH_FXP_SETSTAT: - return new SftpRequestSetStatMessageParser(raw).parse(); + return new SftpRequestSetStatMessageParser(raw, context.getChooser()).parse(); case SSH_FXP_FSETSTAT: - return new SftpRequestFileSetStatMessageParser(raw).parse(); + return new SftpRequestFileSetStatMessageParser(raw, context.getChooser()) + .parse(); case SSH_FXP_OPENDIR: return new SftpRequestOpenDirMessageParser(raw).parse(); case SSH_FXP_READDIR: @@ -78,13 +79,13 @@ public static SftpMessage delegateParsing(AbstractDataPacket packet, SshConte case SSH_FXP_REMOVE: return new SftpRequestRemoveMessageParser(raw).parse(); case SSH_FXP_MKDIR: - return new SftpRequestMakeDirMessageParser(raw).parse(); + return new SftpRequestMakeDirMessageParser(raw, context.getChooser()).parse(); case SSH_FXP_RMDIR: return new SftpRequestRemoveDirMessageParser(raw).parse(); case SSH_FXP_REALPATH: return new SftpRequestRealPathMessageParser(raw).parse(); case SSH_FXP_STAT: - return new SftpRequestStatMessageParser(raw).parse(); + return new SftpRequestStatMessageParser(raw, context.getChooser()).parse(); case SSH_FXP_RENAME: return new SftpRequestRenameMessageParser(raw).parse(); case SSH_FXP_READLINK: @@ -98,11 +99,12 @@ public static SftpMessage delegateParsing(AbstractDataPacket packet, SshConte case SSH_FXP_DATA: return new SftpResponseDataMessageParser(raw).parse(); case SSH_FXP_NAME: - return new SftpResponseNameMessageParser(raw).parse(); + return new SftpResponseNameMessageParser(raw, context.getChooser()).parse(); case SSH_FXP_ATTRS: - return new SftpResponseAttributesMessageParser(raw).parse(); + return new SftpResponseAttributesMessageParser(raw, context.getChooser()) + .parse(); case SSH_FXP_EXTENDED: - return handleExtendedRequestMessageParsing(raw); + return handleExtendedRequestMessageParsing(raw, context); default: LOGGER.debug( "Received unimplemented SFTP Message {} ({})", @@ -116,7 +118,8 @@ public static SftpMessage delegateParsing(AbstractDataPacket packet, SshConte } } - public static SftpMessage handleExtendedRequestMessageParsing(byte[] raw) { + public static SftpMessage handleExtendedRequestMessageParsing( + byte[] raw, SshContext context) { SftpRequestUnknownMessage message = new SftpRequestUnknownMessageParser(raw).parse(); String extendedRequestTypeString = message.getExtendedRequestName().getValue(); SftpExtension extendedRequestType = SftpExtension.fromName(extendedRequestTypeString); @@ -138,6 +141,9 @@ public static SftpMessage handleExtendedRequestMessageParsing(byte[] raw) { case GET_TEMP_FOLDER: return new SftpRequestGetTempFolderMessageParser(raw).parse(); case MAKE_TEMP_FOLDER: + return new SftpRequestMakeTempFolderMessageParser(raw).parse(); + // SFTP v4 + case TEXT_SEEK: return new SftpRequestMakeTempFolderMessageParser(raw).parse(); // vendor specific case POSIX_RENAME_OPENSSH_COM: @@ -151,7 +157,7 @@ public static SftpMessage handleExtendedRequestMessageParsing(byte[] raw) { case F_SYNC_OPENSSH_COM: return new SftpRequestFileSyncMessageParser(raw).parse(); case L_SET_STAT: - return new SftpRequestLinkSetStatMessageParser(raw).parse(); + return new SftpRequestLinkSetStatMessageParser(raw, context.getChooser()).parse(); case LIMITS: return new SftpRequestLimitsMessageParser(raw).parse(); case EXPAND_PATH: diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java index 56101690f..e885db9d2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java @@ -26,9 +26,17 @@ public SftpInitMessageHandler(SshContext context, SftpInitMessage message) { @Override public void adjustContext() { - context.setSftpClientVersion(message.getVersion().getValue()); + int receivedClientVersion = message.getVersion().getValue(); + context.setSftpClientVersion(receivedClientVersion); context.setSftpClientSupportedExtensions(message.getExtensions()); message.getExtensions().forEach(extension -> extension.getHandler(context).adjustContext()); + + // Set negotiated SFTP version based on own server version and received client version + if (receivedClientVersion < context.getConfig().getSftpServerVersion()) { + context.setSftpNegotiatedVersion(receivedClientVersion); + } else { + context.setSftpNegotiatedVersion(context.getConfig().getSftpServerVersion()); + } } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java index 000aae833..0fff151a0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java @@ -26,9 +26,17 @@ public SftpVersionMessageHandler(SshContext context, SftpVersionMessage message) @Override public void adjustContext() { - context.setSftpServerVersion(message.getVersion().getValue()); + int receivedServerVersion = message.getVersion().getValue(); + context.setSftpServerVersion(receivedServerVersion); context.setSftpServerSupportedExtensions(message.getExtensions()); message.getExtensions().forEach(extension -> extension.getHandler(context).adjustContext()); + + // Set negotiated SFTP version based on own client version and received server version + if (receivedServerVersion < context.getConfig().getSftpClientVersion()) { + context.setSftpNegotiatedVersion(receivedServerVersion); + } else { + context.setSftpNegotiatedVersion(context.getConfig().getSftpClientVersion()); + } } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpAclEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpAclEntryHandler.java new file mode 100644 index 000000000..dd5386fd5 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpAclEntryHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.attribute; + +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpAclEntry; +import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpAclEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.attribute.SftpAclEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.attribute.SftpAclEntrySerializer; +import de.rub.nds.sshattacker.core.protocol.common.Handler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpAclEntryHandler implements Handler { + + private final SshContext context; + + private final SftpAclEntry aclEntry; + + public SftpAclEntryHandler(SshContext context) { + this(context, null); + } + + public SftpAclEntryHandler(SshContext context, SftpAclEntry aclEntry) { + super(); + this.context = context; + this.aclEntry = aclEntry; + } + + @Override + public void adjustContext() {} + + @Override + public SftpAclEntryParser getParser(byte[] array) { + return new SftpAclEntryParser(array); + } + + @Override + public SftpAclEntryParser getParser(byte[] array, int startPosition) { + return new SftpAclEntryParser(array, startPosition); + } + + @Override + public SftpAclEntryPreparator getPreparator() { + return new SftpAclEntryPreparator(context.getChooser(), aclEntry); + } + + @Override + public SftpAclEntrySerializer getSerializer() { + return new SftpAclEntrySerializer(aclEntry); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileAttributesHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileAttributesHandler.java index d90a58667..c22726b68 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileAttributesHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileAttributesHandler.java @@ -35,12 +35,12 @@ public void adjustContext() {} @Override public SftpFileAttributesParser getParser(byte[] array) { - return new SftpFileAttributesParser(array); + return new SftpFileAttributesParser(array, context.getChooser()); } @Override public SftpFileAttributesParser getParser(byte[] array, int startPosition) { - return new SftpFileAttributesParser(array, startPosition); + return new SftpFileAttributesParser(array, startPosition, context.getChooser()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java index 975068ba4..c00bcc0ce 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java @@ -28,12 +28,12 @@ public SftpRequestLinkSetStatMessageHandler( @Override public SftpRequestLinkSetStatMessageParser getParser(byte[] array) { - return new SftpRequestLinkSetStatMessageParser(array); + return new SftpRequestLinkSetStatMessageParser(array, context.getChooser()); } @Override public SftpRequestLinkSetStatMessageParser getParser(byte[] array, int startPosition) { - return new SftpRequestLinkSetStatMessageParser(array, startPosition); + return new SftpRequestLinkSetStatMessageParser(array, startPosition, context.getChooser()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestTextSeekMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestTextSeekMessageHandler.java new file mode 100644 index 000000000..5f6908215 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestTextSeekMessageHandler.java @@ -0,0 +1,53 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; + +import de.rub.nds.sshattacker.core.data.sftp.*; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestTextSeekMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestTextSeekMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestTextSeekMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestTextSeekMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestTextSeekMessageHandler + extends SftpMessageHandler { + + public SftpRequestTextSeekMessageHandler(SshContext context) { + super(context); + } + + public SftpRequestTextSeekMessageHandler( + SshContext context, SftpRequestTextSeekMessage message) { + super(context, message); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpRequestTextSeekMessage + } + + @Override + public SftpRequestTextSeekMessageParser getParser(byte[] array) { + return new SftpRequestTextSeekMessageParser(array); + } + + @Override + public SftpRequestTextSeekMessageParser getParser(byte[] array, int startPosition) { + return new SftpRequestTextSeekMessageParser(array, startPosition); + } + + @Override + public SftpRequestTextSeekMessagePreparator getPreparator() { + return new SftpRequestTextSeekMessagePreparator(context.getChooser(), message); + } + + @Override + public SftpRequestTextSeekMessageSerializer getSerializer() { + return new SftpRequestTextSeekMessageSerializer(message); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileStatVfsHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileStatVfsHandler.java index aec9de51d..89207253e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileStatVfsHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileStatVfsHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionFileStatVfs; import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionFileStatVfsPreparator; import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; @@ -43,8 +43,8 @@ public SftpExtensionWithVersionParser getParser( } @Override - public SftpExtensionWithVersionPreparator getPreparator() { - return new SftpExtensionWithVersionPreparator<>( + public SftpExtensionFileStatVfsPreparator getPreparator() { + return new SftpExtensionFileStatVfsPreparator( context.getChooser(), extension, SftpExtension.F_STAT_VFS_OPENSSH_COM); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionNewlineHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionNewlineHandler.java new file mode 100644 index 000000000..71ad88135 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionNewlineHandler.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionNewline; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionNewlineParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionNewlinePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionNewlineSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionNewlineHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionNewlineHandler(SshContext context) { + super(context); + } + + public SftpExtensionNewlineHandler(SshContext context, SftpExtensionNewline extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionNewlineParser getParser(byte[] array) { + return new SftpExtensionNewlineParser(array); + } + + @Override + public SftpExtensionNewlineParser getParser(byte[] array, int startPosition) { + return new SftpExtensionNewlineParser(array, startPosition); + } + + @Override + public SftpExtensionNewlinePreparator getPreparator() { + return new SftpExtensionNewlinePreparator(context.getChooser(), extension); + } + + @Override + public SftpExtensionNewlineSerializer getSerializer() { + return new SftpExtensionNewlineSerializer(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionStatVfsHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionStatVfsHandler.java index 56cbed451..515a924d1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionStatVfsHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionStatVfsHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionStatVfs; import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionStatVfsPreparator; import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; @@ -43,9 +43,9 @@ public SftpExtensionWithVersionParser getParser( } @Override - public SftpExtensionWithVersionPreparator getPreparator() { - return new SftpExtensionWithVersionPreparator<>( - context.getChooser(), extension, SftpExtension.STAT_VFS_OPENSSH_COM); + public SftpExtensionStatVfsPreparator getPreparator() { + return new SftpExtensionStatVfsPreparator( + context.getChooser(), extension, SftpExtension.F_STAT_VFS_OPENSSH_COM); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionTextSeekHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionTextSeekHandler.java new file mode 100644 index 000000000..02bc278b5 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionTextSeekHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionTextSeek; +import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionTextSeekHandler + extends SftpAbstractExtensionHandler { + + public SftpExtensionTextSeekHandler(SshContext context) { + super(context); + } + + public SftpExtensionTextSeekHandler(SshContext context, SftpExtensionTextSeek extension) { + super(context, extension); + } + + @Override + public void adjustContext() { + // TODO: Handle SftpUnknownExtension + } + + @Override + public SftpExtensionWithVersionParser getParser(byte[] array) { + return new SftpExtensionWithVersionParser<>(SftpExtensionTextSeek::new, array); + } + + @Override + public SftpExtensionWithVersionParser getParser( + byte[] array, int startPosition) { + return new SftpExtensionWithVersionParser<>( + SftpExtensionTextSeek::new, array, startPosition); + } + + @Override + public SftpExtensionWithVersionPreparator getPreparator() { + return new SftpExtensionWithVersionPreparator<>( + context.getChooser(), extension, SftpExtension.TEXT_SEEK); + } + + @Override + public SftpExtensionWithVersionSerializer getSerializer() { + return new SftpExtensionWithVersionSerializer<>(extension); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java index 304712882..beec023cc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java @@ -28,12 +28,12 @@ public SftpRequestFileSetStatMessageHandler( @Override public SftpRequestFileSetStatMessageParser getParser(byte[] array) { - return new SftpRequestFileSetStatMessageParser(array); + return new SftpRequestFileSetStatMessageParser(array, context.getChooser()); } @Override public SftpRequestFileSetStatMessageParser getParser(byte[] array, int startPosition) { - return new SftpRequestFileSetStatMessageParser(array, startPosition); + return new SftpRequestFileSetStatMessageParser(array, startPosition, context.getChooser()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java index 94b3974ee..e26b0952e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java @@ -28,12 +28,12 @@ public SftpRequestFileStatMessageHandler( @Override public SftpRequestFileStatMessageParser getParser(byte[] array) { - return new SftpRequestFileStatMessageParser(array); + return new SftpRequestFileStatMessageParser(array, context.getChooser()); } @Override public SftpRequestFileStatMessageParser getParser(byte[] array, int startPosition) { - return new SftpRequestFileStatMessageParser(array, startPosition); + return new SftpRequestFileStatMessageParser(array, startPosition, context.getChooser()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java index 39e4f2e47..97de45fe1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java @@ -27,12 +27,12 @@ public SftpRequestMakeDirMessageHandler(SshContext context, SftpRequestMakeDirMe @Override public SftpRequestMakeDirMessageParser getParser(byte[] array) { - return new SftpRequestMakeDirMessageParser(array); + return new SftpRequestMakeDirMessageParser(array, context.getChooser()); } @Override public SftpRequestMakeDirMessageParser getParser(byte[] array, int startPosition) { - return new SftpRequestMakeDirMessageParser(array, startPosition); + return new SftpRequestMakeDirMessageParser(array, startPosition, context.getChooser()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java index 1877587e3..8ec710fa2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java @@ -27,12 +27,12 @@ public SftpRequestOpenMessageHandler(SshContext context, SftpRequestOpenMessage @Override public SftpRequestOpenMessageParser getParser(byte[] array) { - return new SftpRequestOpenMessageParser(array); + return new SftpRequestOpenMessageParser(array, context.getChooser()); } @Override public SftpRequestOpenMessageParser getParser(byte[] array, int startPosition) { - return new SftpRequestOpenMessageParser(array, startPosition); + return new SftpRequestOpenMessageParser(array, startPosition, context.getChooser()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java index 8ba1ff223..20c205352 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java @@ -27,12 +27,12 @@ public SftpRequestSetStatMessageHandler(SshContext context, SftpRequestSetStatMe @Override public SftpRequestSetStatMessageParser getParser(byte[] array) { - return new SftpRequestSetStatMessageParser(array); + return new SftpRequestSetStatMessageParser(array, context.getChooser()); } @Override public SftpRequestSetStatMessageParser getParser(byte[] array, int startPosition) { - return new SftpRequestSetStatMessageParser(array, startPosition); + return new SftpRequestSetStatMessageParser(array, startPosition, context.getChooser()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java index 566857d18..e12d14b6f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java @@ -27,12 +27,12 @@ public SftpRequestStatMessageHandler(SshContext context, SftpRequestStatMessage @Override public SftpRequestStatMessageParser getParser(byte[] array) { - return new SftpRequestStatMessageParser(array); + return new SftpRequestStatMessageParser(array, context.getChooser()); } @Override public SftpRequestStatMessageParser getParser(byte[] array, int startPosition) { - return new SftpRequestStatMessageParser(array, startPosition); + return new SftpRequestStatMessageParser(array, startPosition, context.getChooser()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java index ed2fd137b..fd0c3463f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java @@ -28,12 +28,12 @@ public SftpResponseAttributesMessageHandler( @Override public SftpResponseAttributesMessageParser getParser(byte[] array) { - return new SftpResponseAttributesMessageParser(array); + return new SftpResponseAttributesMessageParser(array, context.getChooser()); } @Override public SftpResponseAttributesMessageParser getParser(byte[] array, int startPosition) { - return new SftpResponseAttributesMessageParser(array, startPosition); + return new SftpResponseAttributesMessageParser(array, startPosition, context.getChooser()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameEntryHandler.java index b5004e845..909ea8519 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameEntryHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameEntryHandler.java @@ -35,12 +35,12 @@ public void adjustContext() {} @Override public SftpResponseNameEntryParser getParser(byte[] array) { - return new SftpResponseNameEntryParser(array); + return new SftpResponseNameEntryParser(array, context.getChooser()); } @Override public SftpResponseNameEntryParser getParser(byte[] array, int startPosition) { - return new SftpResponseNameEntryParser(array, startPosition); + return new SftpResponseNameEntryParser(array, startPosition, context.getChooser()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java index 53d4f662d..8dedf2aad 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java @@ -27,12 +27,12 @@ public SftpResponseNameMessageHandler(SshContext context, SftpResponseNameMessag @Override public SftpResponseNameMessageParser getParser(byte[] array) { - return new SftpResponseNameMessageParser(array); + return new SftpResponseNameMessageParser(array, context.getChooser()); } @Override public SftpResponseNameMessageParser getParser(byte[] array, int startPosition) { - return new SftpResponseNameMessageParser(array, startPosition); + return new SftpResponseNameMessageParser(array, startPosition, context.getChooser()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpAclEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpAclEntry.java new file mode 100644 index 000000000..436db126e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpAclEntry.java @@ -0,0 +1,121 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.attribute; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.constants.SftpAceFlag; +import de.rub.nds.sshattacker.core.constants.SftpAceMask; +import de.rub.nds.sshattacker.core.constants.SftpAceType; +import de.rub.nds.sshattacker.core.data.sftp.handler.attribute.SftpAclEntryHandler; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import java.nio.charset.StandardCharsets; + +@XmlAccessorType(XmlAccessType.FIELD) +public class SftpAclEntry extends ModifiableVariableHolder { + + private ModifiableInteger type; + private ModifiableInteger flags; + private ModifiableInteger mask; + private ModifiableString who; + private ModifiableInteger whoLength; + + public ModifiableInteger getType() { + return type; + } + + public void setType(ModifiableInteger type) { + this.type = type; + } + + public void setType(int type) { + this.type = ModifiableVariableFactory.safelySetValue(this.type, type); + } + + public void setType(SftpAceType type) { + setType(type.getType()); + } + + public ModifiableInteger getFlags() { + return flags; + } + + public void setFlags(ModifiableInteger flags) { + this.flags = flags; + } + + public void setFlags(int flags) { + this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); + } + + public void setFlags(SftpAceFlag... flags) { + setFlags(SftpAceFlag.flagsToInt(flags)); + } + + public ModifiableInteger getMask() { + return mask; + } + + public void setMask(ModifiableInteger mask) { + this.mask = mask; + } + + public void setMask(int mask) { + this.mask = ModifiableVariableFactory.safelySetValue(this.mask, mask); + } + + public void setMask(SftpAceMask... flags) { + setMask(SftpAceMask.flagsToInt(flags)); + } + + public ModifiableInteger getWhoLength() { + return whoLength; + } + + public void setWhoLength(ModifiableInteger whoLength) { + this.whoLength = whoLength; + } + + public void setWhoLength(int whoLength) { + this.whoLength = ModifiableVariableFactory.safelySetValue(this.whoLength, whoLength); + } + + public ModifiableString getWho() { + return who; + } + + public void setWho(ModifiableString who) { + setWho(who, false); + } + + public void setWho(String who) { + setWho(who, false); + } + + public void setWho(ModifiableString who, boolean adjustLengthField) { + if (adjustLengthField) { + setWhoLength(who.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.who = who; + } + + public void setWho(String who, boolean adjustLengthField) { + if (adjustLengthField) { + setWhoLength(who.getBytes(StandardCharsets.UTF_8).length); + } + this.who = ModifiableVariableFactory.safelySetValue(this.who, who); + } + + public SftpAclEntryHandler getHandler(SshContext context) { + return new SftpAclEntryHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java index cbc55aa40..ad377c3b4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java @@ -7,15 +7,21 @@ */ package de.rub.nds.sshattacker.core.data.sftp.message.attribute; +import static org.bouncycastle.asn1.x500.style.RFC4519Style.name; + import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; +import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.constants.SftpFileType; import de.rub.nds.sshattacker.core.data.sftp.handler.attribute.SftpFileAttributesHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import jakarta.xml.bind.annotation.*; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @@ -24,20 +30,38 @@ public class SftpFileAttributes extends ModifiableVariableHolder { private ModifiableInteger flags; private ModifiableLong size; - private ModifiableInteger uId; - private ModifiableInteger gId; + private ModifiableInteger userId; + private ModifiableInteger groupId; private ModifiableInteger permissions; - private ModifiableInteger aTime; - private ModifiableInteger mTime; + private ModifiableInteger accessTime; + private ModifiableInteger modifyTime; private ModifiableInteger extendedCount; @HoldsModifiableVariable @XmlElementWrapper - @XmlElements({ - @XmlElement(type = SftpFileExtendedAttribute.class, name = "SftpFileExtendedAttribute") - }) + @XmlElements( + @XmlElement(type = SftpFileExtendedAttribute.class, name = "SftpFileExtendedAttribute")) private List extendedAttributes = new ArrayList<>(); + // SFTP V4 + + private ModifiableByte type; + + private ModifiableInteger ownerLength; + private ModifiableString owner; + private ModifiableInteger groupLength; + private ModifiableString group; + + private ModifiableInteger createTime; + + private ModifiableInteger aclLength; + private ModifiableInteger aclEntriesCount; + + @HoldsModifiableVariable + @XmlElementWrapper + @XmlElements(@XmlElement(type = SftpAclEntry.class, name = "SftpAclEntry")) + private List aclEntries = new ArrayList<>(); + public ModifiableInteger getFlags() { return flags; } @@ -66,28 +90,40 @@ public void setSize(long size) { this.size = ModifiableVariableFactory.safelySetValue(this.size, size); } - public ModifiableInteger getUId() { - return uId; + public void clearSize() { + size = null; + } + + public ModifiableInteger getUserId() { + return userId; + } + + public void setUserId(ModifiableInteger userId) { + this.userId = userId; + } + + public void setUserId(int userId) { + this.userId = ModifiableVariableFactory.safelySetValue(this.userId, userId); } - public void setUId(ModifiableInteger uId) { - this.uId = uId; + public void clearUserId() { + userId = null; } - public void setUId(int uId) { - this.uId = ModifiableVariableFactory.safelySetValue(this.uId, uId); + public ModifiableInteger getGroupId() { + return groupId; } - public ModifiableInteger getGId() { - return gId; + public void setGroupId(ModifiableInteger groupId) { + this.groupId = groupId; } - public void setGId(ModifiableInteger gId) { - this.gId = gId; + public void setGroupId(int groupId) { + this.groupId = ModifiableVariableFactory.safelySetValue(this.groupId, groupId); } - public void setGId(int gId) { - this.gId = ModifiableVariableFactory.safelySetValue(this.gId, gId); + public void clearGroupId() { + groupId = null; } public ModifiableInteger getPermissions() { @@ -102,28 +138,40 @@ public void setPermissions(int permissions) { this.permissions = ModifiableVariableFactory.safelySetValue(this.permissions, permissions); } - public ModifiableInteger getATime() { - return aTime; + public void clearPermissions() { + permissions = null; } - public void setATime(ModifiableInteger aTime) { - this.aTime = aTime; + public ModifiableInteger getAccessTime() { + return accessTime; } - public void setATime(int aTime) { - this.aTime = ModifiableVariableFactory.safelySetValue(this.aTime, aTime); + public void setAccessTime(ModifiableInteger accessTime) { + this.accessTime = accessTime; } - public ModifiableInteger getMTime() { - return mTime; + public void setAccessTime(int accessTime) { + this.accessTime = ModifiableVariableFactory.safelySetValue(this.accessTime, accessTime); } - public void setMTime(ModifiableInteger mTime) { - this.mTime = mTime; + public void clearAccessTime() { + accessTime = null; } - public void setMTime(int mTime) { - this.mTime = ModifiableVariableFactory.safelySetValue(this.mTime, mTime); + public ModifiableInteger getModifyTime() { + return modifyTime; + } + + public void setModifyTime(ModifiableInteger modifyTime) { + this.modifyTime = modifyTime; + } + + public void setModifyTime(int modifyTime) { + this.modifyTime = ModifiableVariableFactory.safelySetValue(this.modifyTime, modifyTime); + } + + public void clearModifyTime() { + modifyTime = null; } public ModifiableInteger getExtendedCount() { @@ -139,6 +187,11 @@ public void setExtendedCount(int extendedCount) { ModifiableVariableFactory.safelySetValue(this.extendedCount, extendedCount); } + public void clearExtendedAttributes() { + extendedCount = null; + extendedAttributes = new ArrayList<>(); + } + public List getExtendedAttributes() { return extendedAttributes; } @@ -171,10 +224,192 @@ public SftpFileAttributesHandler getHandler(SshContext context) { return new SftpFileAttributesHandler(context, this); } + // SFTP v4 + + public ModifiableByte getType() { + return type; + } + + public void setType(ModifiableByte type) { + this.type = type; + } + + public void setType(byte type) { + this.type = ModifiableVariableFactory.safelySetValue(this.type, type); + } + + public void setType(SftpFileType type) { + setType(type.getType()); + } + + public void clearType() { + type = null; + } + + public ModifiableInteger getOwnerLength() { + return ownerLength; + } + + public void setOwnerLength(ModifiableInteger ownerLength) { + this.ownerLength = ownerLength; + } + + public void setOwnerLength(int ownerLength) { + this.ownerLength = ModifiableVariableFactory.safelySetValue(this.ownerLength, ownerLength); + } + + public ModifiableString getOwner() { + return owner; + } + + public void setOwner(ModifiableString owner) { + setOwner(owner, false); + } + + public void setOwner(String owner) { + setOwner(owner, false); + } + + public void setOwner(ModifiableString owner, boolean adjustLengthField) { + if (adjustLengthField) { + setOwnerLength(owner.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.owner = owner; + } + + public void setOwner(String owner, boolean adjustLengthField) { + if (adjustLengthField) { + setOwnerLength(owner.getBytes(StandardCharsets.UTF_8).length); + } + this.owner = ModifiableVariableFactory.safelySetValue(this.owner, owner); + } + + public void clearOwner() { + ownerLength = null; + owner = null; + } + + public ModifiableInteger getGroupLength() { + return groupLength; + } + + public void setGroupLength(ModifiableInteger groupLength) { + this.groupLength = groupLength; + } + + public void setGroupLength(int groupLength) { + this.groupLength = ModifiableVariableFactory.safelySetValue(this.groupLength, groupLength); + } + + public ModifiableString getGroup() { + return group; + } + + public void setGroup(ModifiableString group) { + setGroup(group, false); + } + + public void setGroup(String group) { + setGroup(group, false); + } + + public void setGroup(ModifiableString group, boolean adjustLengthField) { + if (adjustLengthField) { + setGroupLength(group.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.group = group; + } + + public void setGroup(String group, boolean adjustLengthField) { + if (adjustLengthField) { + setGroupLength(group.getBytes(StandardCharsets.UTF_8).length); + } + this.group = ModifiableVariableFactory.safelySetValue(this.group, group); + } + + public void clearGroup() { + groupLength = null; + group = null; + } + + public ModifiableInteger getCreateTime() { + return createTime; + } + + public void setCreateTime(ModifiableInteger createTime) { + this.createTime = createTime; + } + + public void setCreateTime(int createTime) { + this.createTime = ModifiableVariableFactory.safelySetValue(this.createTime, createTime); + } + + public void clearCreateTime() { + createTime = null; + } + + public ModifiableInteger getAclLength() { + return aclLength; + } + + public void clearAcl() { + aclLength = null; + aclEntriesCount = null; + aclEntries = new ArrayList<>(); + } + + public void setAclLength(ModifiableInteger aclLength) { + this.aclLength = aclLength; + } + + public void setAclLength(int aclLength) { + this.aclLength = ModifiableVariableFactory.safelySetValue(this.aclLength, aclLength); + } + + public ModifiableInteger getAclEntriesCount() { + return aclEntriesCount; + } + + public void setAclEntriesCount(ModifiableInteger aclEntriesCount) { + this.aclEntriesCount = aclEntriesCount; + } + + public void setAclEntriesCount(int aclEntriesCount) { + this.aclEntriesCount = + ModifiableVariableFactory.safelySetValue(this.aclEntriesCount, aclEntriesCount); + } + + public List getAclEntries() { + return aclEntries; + } + + public void setAclEntries(List aclEntries) { + setAclEntries(aclEntries, false); + } + + public void setAclEntries(List aclEntries, boolean adjustLengthField) { + if (adjustLengthField) { + setAclEntriesCount(aclEntries.size()); + } + this.aclEntries = aclEntries; + } + + public void addAclEntry(SftpAclEntry aclEntry) { + addAclEntry(aclEntry, false); + } + + public void addAclEntry(SftpAclEntry aclEntry, boolean adjustLengthField) { + aclEntries.add(aclEntry); + if (adjustLengthField) { + setAclEntriesCount(aclEntries.size()); + } + } + @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); holders.addAll(extendedAttributes); + holders.addAll(aclEntries); return holders; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java new file mode 100644 index 000000000..de6e9f554 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestTextSeekMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpRequestTextSeekMessage + extends SftpRequestExtendedWithHandleMessage { + + private ModifiableLong lineNumber; + + public ModifiableLong getLineNumber() { + return lineNumber; + } + + public void setLineNumber(ModifiableLong lineNumber) { + this.lineNumber = lineNumber; + } + + public void setLineNumber(long lineNumber) { + this.lineNumber = ModifiableVariableFactory.safelySetValue(this.lineNumber, lineNumber); + } + + @Override + public SftpRequestTextSeekMessageHandler getHandler(SshContext context) { + return new SftpRequestTextSeekMessageHandler(context); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java new file mode 100644 index 000000000..640012fee --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java @@ -0,0 +1,68 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionNewlineHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import java.nio.charset.StandardCharsets; + +public class SftpExtensionNewline extends SftpAbstractExtension { + + private ModifiableInteger newlineSeperatorLength; + private ModifiableString newlineSeperator; + + public ModifiableInteger getNewlineSeperatorLength() { + return newlineSeperatorLength; + } + + public void setNewlineSeperatorLength(ModifiableInteger newlineSeperatorLength) { + this.newlineSeperatorLength = newlineSeperatorLength; + } + + public void setNewlineSeperatorLength(int newlineSeperatorLength) { + this.newlineSeperatorLength = + ModifiableVariableFactory.safelySetValue( + this.newlineSeperatorLength, newlineSeperatorLength); + } + + public ModifiableString getNewlineSeperator() { + return newlineSeperator; + } + + public void setNewlineSeperator(ModifiableString newlineSeperator) { + setNewlineSeperator(newlineSeperator, false); + } + + public void setNewlineSeperator(String newlineSeperator) { + setNewlineSeperator(newlineSeperator, false); + } + + public void setNewlineSeperator(ModifiableString newlineSeperator, boolean adjustLengthField) { + if (adjustLengthField) { + setNewlineSeperatorLength( + newlineSeperator.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.newlineSeperator = newlineSeperator; + } + + public void setNewlineSeperator(String newlineSeperator, boolean adjustLengthField) { + if (adjustLengthField) { + setNewlineSeperatorLength(newlineSeperator.getBytes(StandardCharsets.UTF_8).length); + } + this.newlineSeperator = + ModifiableVariableFactory.safelySetValue(this.newlineSeperator, newlineSeperator); + } + + @Override + public SftpExtensionNewlineHandler getHandler(SshContext context) { + return new SftpExtensionNewlineHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionTextSeek.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionTextSeek.java new file mode 100644 index 000000000..a778afa76 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionTextSeek.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.extension; + +import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionTextSeekHandler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpExtensionTextSeek extends SftpExtensionWithVersion { + + @Override + public SftpExtensionTextSeekHandler getHandler(SshContext context) { + return new SftpExtensionTextSeekHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java index d25f6f143..3aca510eb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java @@ -7,12 +7,37 @@ */ package de.rub.nds.sshattacker.core.data.sftp.message.request; +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestFileStatMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileStatMessage extends SftpRequestWithHandleMessage { + private ModifiableInteger flags; + + public ModifiableInteger getFlags() { + return flags; + } + + public void setFlags(ModifiableInteger flags) { + this.flags = flags; + } + + public void setFlags(int flags) { + this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); + } + + public void setFlags(SftpFileAttributeFlag... flags) { + setFlags(SftpFileAttributeFlag.flagsToInt(flags)); + } + + public void clearFlags() { + flags = null; + } + @Override public SftpRequestFileStatMessageHandler getHandler(SshContext context) { return new SftpRequestFileStatMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java index 397523d61..8ed57f2c2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java @@ -7,11 +7,36 @@ */ package de.rub.nds.sshattacker.core.data.sftp.message.request; +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestStatMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestStatMessage extends SftpRequestWithPathMessage { + private ModifiableInteger flags; + + public ModifiableInteger getFlags() { + return flags; + } + + public void setFlags(ModifiableInteger flags) { + this.flags = flags; + } + + public void setFlags(int flags) { + this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); + } + + public void setFlags(SftpFileAttributeFlag... flags) { + setFlags(SftpFileAttributeFlag.flagsToInt(flags)); + } + + public void clearFlags() { + flags = null; + } + @Override public SftpRequestStatMessageHandler getHandler(SshContext context) { return new SftpRequestStatMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameEntry.java index d38d2b0ee..ca4958761 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameEntry.java @@ -108,6 +108,11 @@ public void setLongName(String longName, boolean adjustLengthField) { this.longName = ModifiableVariableFactory.safelySetValue(this.longName, longName); } + public void clearLongName() { + longName = null; + longNameLength = null; + } + public SftpFileAttributes getAttributes() { return attributes; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java index 50835984e..165afc2ce 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java @@ -89,6 +89,17 @@ private void parseExtensions() { new SftpExtensionMakeTempFolderHandler(null) .getParser(getArray(), extensionStartPointer); break; + // SFTP v4 + case TEXT_SEEK: + extensionParser = + new SftpExtensionTextSeekHandler(null) + .getParser(getArray(), extensionStartPointer); + break; + case NEWLINE: + extensionParser = + new SftpExtensionNewlineHandler(null) + .getParser(getArray(), extensionStartPointer); + break; // Vendor extensions case POSIX_RENAME_OPENSSH_COM: extensionParser = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpAclEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpAclEntryParser.java new file mode 100644 index 000000000..dd09eb22d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpAclEntryParser.java @@ -0,0 +1,68 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.attribute; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpAclEntry; +import de.rub.nds.sshattacker.core.protocol.common.Parser; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpAclEntryParser extends Parser { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpAclEntry aclEntry = new SftpAclEntry(); + + public SftpAclEntryParser(byte[] array) { + super(array); + } + + public SftpAclEntryParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseType() { + int type = parseIntField(DataFormatConstants.UINT32_SIZE); + aclEntry.setType(type); + LOGGER.debug("Type: {}", type); + } + + private void parseFlags() { + int flags = parseIntField(DataFormatConstants.UINT32_SIZE); + aclEntry.setFlags(flags); + LOGGER.debug("Flags: {}", flags); + } + + private void parseMask() { + int mask = parseIntField(DataFormatConstants.UINT32_SIZE); + aclEntry.setMask(mask); + LOGGER.debug("Mask: {}", mask); + } + + private void parseWho() { + int whoLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + aclEntry.setWhoLength(whoLength); + LOGGER.debug("Who length: {}", whoLength); + String who = parseByteString(whoLength, StandardCharsets.UTF_8); + aclEntry.setWho(who); + LOGGER.debug("Who: {}", () -> backslashEscapeString(who)); + } + + @Override + public final SftpAclEntry parse() { + parseType(); + parseFlags(); + parseMask(); + parseWho(); + return aclEntry; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java index 7066d7dbc..8251ae74c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java @@ -7,11 +7,15 @@ */ package de.rub.nds.sshattacker.core.data.sftp.parser.attribute; +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.constants.SftpFileType; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.Parser; -import de.rub.nds.sshattacker.core.protocol.transport.parser.extension.*; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -20,13 +24,16 @@ public class SftpFileAttributesParser extends Parser { private static final Logger LOGGER = LogManager.getLogger(); private final SftpFileAttributes attributes = new SftpFileAttributes(); + private final Chooser chooser; - public SftpFileAttributesParser(byte[] array) { + public SftpFileAttributesParser(byte[] array, Chooser chooser) { super(array); + this.chooser = chooser; } - public SftpFileAttributesParser(byte[] array, int startPosition) { + public SftpFileAttributesParser(byte[] array, int startPosition, Chooser chooser) { super(array, startPosition); + this.chooser = chooser; } private void parseFlags() { @@ -35,6 +42,12 @@ private void parseFlags() { LOGGER.debug("Flags: {}", flags); } + private void parseType() { + byte type = parseByteField(1); + attributes.setType(type); + LOGGER.debug("Type: {}", SftpFileType.getNameByType(type)); + } + private void parseSize() { long size = parseLongField(DataFormatConstants.UINT64_SIZE); attributes.setSize(size); @@ -43,10 +56,10 @@ private void parseSize() { private void parseUIdGId() { int uId = parseIntField(DataFormatConstants.UINT32_SIZE); - attributes.setUId(uId); + attributes.setUserId(uId); LOGGER.debug("UId: {}", uId); int gId = parseIntField(DataFormatConstants.UINT32_SIZE); - attributes.setGId(gId); + attributes.setGroupId(gId); LOGGER.debug("GId: {}", gId); } @@ -58,26 +71,81 @@ private void parsePermissions() { private void parseAcModTime() { int aTime = parseIntField(DataFormatConstants.UINT32_SIZE); - attributes.setATime(aTime); + attributes.setAccessTime(aTime); LOGGER.debug("ATime: {}", aTime); int mTime = parseIntField(DataFormatConstants.UINT32_SIZE); - attributes.setMTime(mTime); + attributes.setModifyTime(mTime); LOGGER.debug("MTime: {}", mTime); } + private void parseAccessTime() { + int accessTime = parseIntField(DataFormatConstants.UINT32_SIZE); + attributes.setAccessTime(accessTime); + LOGGER.debug("AccessTime: {}", accessTime); + } + + private void parseCreateTime() { + int createTime = parseIntField(DataFormatConstants.UINT32_SIZE); + attributes.setCreateTime(createTime); + LOGGER.debug("CreateTime: {}", createTime); + } + + private void parseModifyTime() { + int modifyTime = parseIntField(DataFormatConstants.UINT32_SIZE); + attributes.setModifyTime(modifyTime); + LOGGER.debug("ModifyTime: {}", modifyTime); + } + + private void parseOwnerGroup() { + int ownerLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + attributes.setOwnerLength(ownerLength); + LOGGER.debug("Owner length: {}", ownerLength); + String owner = parseByteString(ownerLength, StandardCharsets.UTF_8); + attributes.setOwner(owner); + LOGGER.debug("Owner: {}", () -> backslashEscapeString(owner)); + + int groupLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + attributes.setGroupLength(groupLength); + LOGGER.debug("Group length: {}", groupLength); + String group = parseByteString(groupLength, StandardCharsets.UTF_8); + attributes.setGroup(group); + LOGGER.debug("Group: {}", () -> backslashEscapeString(group)); + } + + private void parseAcl() { + int aclLength = parseIntField(DataFormatConstants.UINT32_SIZE); + attributes.setAclLength(aclLength); + LOGGER.debug("AclLength: {}", aclLength); + + int aclEntriesCount = parseIntField(DataFormatConstants.UINT32_SIZE); + attributes.setAclEntriesCount(aclEntriesCount); + LOGGER.debug("setAclEntriesCount: {}", aclEntriesCount); + + for (int aclEntryIdx = 0, aclEntryStartPointer = getPointer(); + aclEntryIdx < aclEntriesCount; + aclEntryIdx++, aclEntryStartPointer = getPointer()) { + + SftpAclEntryParser aclEntryParser = + new SftpAclEntryParser(getArray(), aclEntryStartPointer); + + attributes.addAclEntry(aclEntryParser.parse(), true); + setPointer(aclEntryParser.getPointer()); + } + } + private void parseExtendedAttributes() { int extendedCount = parseIntField(DataFormatConstants.UINT32_SIZE); attributes.setExtendedCount(extendedCount); LOGGER.debug("ExtendedCount: {}", extendedCount); for (int extendedAttrIndex = 0, extendedAttrStartPointer = getPointer(); - extendedAttrIndex < attributes.getExtendedCount().getValue(); + extendedAttrIndex < extendedCount; extendedAttrIndex++, extendedAttrStartPointer = getPointer()) { SftpFileExtendedAttributeParser extendedAttrParser = new SftpFileExtendedAttributeParser(getArray(), extendedAttrStartPointer); - attributes.addExtendedAttribute(extendedAttrParser.parse()); + attributes.addExtendedAttribute(extendedAttrParser.parse(), true); setPointer(extendedAttrParser.getPointer()); } } @@ -85,19 +153,49 @@ private void parseExtendedAttributes() { @Override public final SftpFileAttributes parse() { parseFlags(); + + if (chooser.getSftpNegotiatedVersion() > 3) { + parseType(); + } + int flags = attributes.getFlags().getValue(); if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE)) { parseSize(); } - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID)) { - parseUIdGId(); + if (chooser.getSftpNegotiatedVersion() > 3) { + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_OWNERGROUP)) { + parseOwnerGroup(); + } + } else { + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID)) { + parseUIdGId(); + } } if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS)) { parsePermissions(); } - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME)) { - parseAcModTime(); + if (chooser.getSftpNegotiatedVersion() > 3) { + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACCESSTIME)) { + parseAccessTime(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_CREATETIME)) { + parseCreateTime(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_MODIFYTIME)) { + parseModifyTime(); + } + } else { + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME)) { + parseAcModTime(); + } } + + if (chooser.getSftpNegotiatedVersion() > 3) { + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACL)) { + parseAcl(); + } + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED)) { parseExtendedAttributes(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLinkSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLinkSetStatMessageParser.java index 0c9f1a174..af7b561a2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLinkSetStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLinkSetStatMessageParser.java @@ -9,16 +9,21 @@ import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLinkSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestLinkSetStatMessageParser extends SftpRequestExtendedWithPathMessageParser { - public SftpRequestLinkSetStatMessageParser(byte[] array) { + private final Chooser chooser; + + public SftpRequestLinkSetStatMessageParser(byte[] array, Chooser chooser) { super(array); + this.chooser = chooser; } - public SftpRequestLinkSetStatMessageParser(byte[] array, int startPosition) { + public SftpRequestLinkSetStatMessageParser(byte[] array, int startPosition, Chooser chooser) { super(array, startPosition); + this.chooser = chooser; } @Override @@ -28,7 +33,7 @@ protected SftpRequestLinkSetStatMessage createMessage() { private void parseAttributes() { SftpFileAttributesParser attributesParser = - new SftpFileAttributesParser(getArray(), getPointer()); + new SftpFileAttributesParser(getArray(), getPointer(), chooser); message.setAttributes(attributesParser.parse()); setPointer(attributesParser.getPointer()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestTextSeekMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestTextSeekMessageParser.java new file mode 100644 index 000000000..b8a108eb5 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestTextSeekMessageParser.java @@ -0,0 +1,43 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestTextSeekMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestTextSeekMessageParser + extends SftpRequestExtendedWithHandleMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestTextSeekMessageParser(byte[] array) { + super(array); + } + + public SftpRequestTextSeekMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + protected SftpRequestTextSeekMessage createMessage() { + return new SftpRequestTextSeekMessage(); + } + + private void parseLineNumber() { + long lineNumber = parseLongField(DataFormatConstants.UINT64_SIZE); + message.setLineNumber(lineNumber); + LOGGER.debug("LineNumber: {}", lineNumber); + } + + @Override + protected void parseRequestExtendedWithHandleSpecificContents() { + parseLineNumber(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionNewlineParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionNewlineParser.java new file mode 100644 index 000000000..fd79b8a09 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionNewlineParser.java @@ -0,0 +1,43 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.extension; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionNewline; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpExtensionNewlineParser extends SftpAbstractExtensionParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpExtensionNewlineParser(byte[] array) { + super(SftpExtensionNewline::new, array); + } + + public SftpExtensionNewlineParser(byte[] array, int startPosition) { + super(SftpExtensionNewline::new, array, startPosition); + } + + private void parseNewlineSeperator() { + int newlineSeperatorLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + extension.setNewlineSeperatorLength(newlineSeperatorLength); + LOGGER.debug("NewlineSeperator length: {}", newlineSeperatorLength); + String newlineSeperator = parseByteString(newlineSeperatorLength, StandardCharsets.UTF_8); + extension.setNewlineSeperator(newlineSeperator); + LOGGER.debug("NewlineSeperator: {}", () -> backslashEscapeString(newlineSeperator)); + } + + @Override + protected void parseExtensionValue() { + parseNewlineSeperator(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileSetStatMessageParser.java index adf058ca1..050064531 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileSetStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileSetStatMessageParser.java @@ -9,16 +9,21 @@ import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestFileSetStatMessageParser extends SftpRequestWithHandleMessageParser { - public SftpRequestFileSetStatMessageParser(byte[] array) { + private final Chooser chooser; + + public SftpRequestFileSetStatMessageParser(byte[] array, Chooser chooser) { super(array); + this.chooser = chooser; } - public SftpRequestFileSetStatMessageParser(byte[] array, int startPosition) { + public SftpRequestFileSetStatMessageParser(byte[] array, int startPosition, Chooser chooser) { super(array, startPosition); + this.chooser = chooser; } @Override @@ -28,7 +33,7 @@ public SftpRequestFileSetStatMessage createMessage() { private void parseAttributes() { SftpFileAttributesParser attributesParser = - new SftpFileAttributesParser(getArray(), getPointer()); + new SftpFileAttributesParser(getArray(), getPointer(), chooser); message.setAttributes(attributesParser.parse()); setPointer(attributesParser.getPointer()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java index 544eeff17..a05d0a84c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java @@ -7,17 +7,27 @@ */ package de.rub.nds.sshattacker.core.data.sftp.parser.request; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileStatMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class SftpRequestFileStatMessageParser extends SftpRequestWithHandleMessageParser { - public SftpRequestFileStatMessageParser(byte[] array) { + private static final Logger LOGGER = LogManager.getLogger(); + + private final Chooser chooser; + + public SftpRequestFileStatMessageParser(byte[] array, Chooser chooser) { super(array); + this.chooser = chooser; } - public SftpRequestFileStatMessageParser(byte[] array, int startPosition) { + public SftpRequestFileStatMessageParser(byte[] array, int startPosition, Chooser chooser) { super(array, startPosition); + this.chooser = chooser; } @Override @@ -25,6 +35,16 @@ public SftpRequestFileStatMessage createMessage() { return new SftpRequestFileStatMessage(); } + private void parseFlags() { + if (chooser.getSftpNegotiatedVersion() > 3) { + int flags = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setFlags(flags); + LOGGER.debug("Flags: {}", flags); + } + } + @Override - protected void parseRequestWithHandleSpecificContents() {} + protected void parseRequestWithHandleSpecificContents() { + parseFlags(); + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMakeDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMakeDirMessageParser.java index d05984de0..f917a435a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMakeDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMakeDirMessageParser.java @@ -9,16 +9,21 @@ import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMakeDirMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestMakeDirMessageParser extends SftpRequestWithPathMessageParser { - public SftpRequestMakeDirMessageParser(byte[] array) { + private final Chooser chooser; + + public SftpRequestMakeDirMessageParser(byte[] array, Chooser chooser) { super(array); + this.chooser = chooser; } - public SftpRequestMakeDirMessageParser(byte[] array, int startPosition) { + public SftpRequestMakeDirMessageParser(byte[] array, int startPosition, Chooser chooser) { super(array, startPosition); + this.chooser = chooser; } @Override @@ -28,7 +33,7 @@ public SftpRequestMakeDirMessage createMessage() { private void parseAttributes() { SftpFileAttributesParser attributesParser = - new SftpFileAttributesParser(getArray(), getPointer()); + new SftpFileAttributesParser(getArray(), getPointer(), chooser); message.setAttributes(attributesParser.parse()); setPointer(attributesParser.getPointer()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java index 915a24492..9c2a7fcfc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java @@ -10,6 +10,7 @@ import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -17,13 +18,16 @@ public class SftpRequestOpenMessageParser extends SftpRequestWithPathMessageParser { private static final Logger LOGGER = LogManager.getLogger(); + private final Chooser chooser; - public SftpRequestOpenMessageParser(byte[] array) { + public SftpRequestOpenMessageParser(byte[] array, Chooser chooser) { super(array); + this.chooser = chooser; } - public SftpRequestOpenMessageParser(byte[] array, int startPosition) { + public SftpRequestOpenMessageParser(byte[] array, int startPosition, Chooser chooser) { super(array, startPosition); + this.chooser = chooser; } @Override @@ -39,7 +43,7 @@ private void parsePFlags() { private void parseAttributes() { SftpFileAttributesParser attributesParser = - new SftpFileAttributesParser(getArray(), getPointer()); + new SftpFileAttributesParser(getArray(), getPointer(), chooser); message.setAttributes(attributesParser.parse()); setPointer(attributesParser.getPointer()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSetStatMessageParser.java index 2d9c39d84..37ecd5412 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSetStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSetStatMessageParser.java @@ -9,16 +9,21 @@ import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestSetStatMessageParser extends SftpRequestWithPathMessageParser { - public SftpRequestSetStatMessageParser(byte[] array) { + private final Chooser chooser; + + public SftpRequestSetStatMessageParser(byte[] array, Chooser chooser) { super(array); + this.chooser = chooser; } - public SftpRequestSetStatMessageParser(byte[] array, int startPosition) { + public SftpRequestSetStatMessageParser(byte[] array, int startPosition, Chooser chooser) { super(array, startPosition); + this.chooser = chooser; } @Override @@ -28,7 +33,7 @@ public SftpRequestSetStatMessage createMessage() { private void parseAttributes() { SftpFileAttributesParser attributesParser = - new SftpFileAttributesParser(getArray(), getPointer()); + new SftpFileAttributesParser(getArray(), getPointer(), chooser); message.setAttributes(attributesParser.parse()); setPointer(attributesParser.getPointer()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java index bf5b4bea2..59da0418f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java @@ -7,17 +7,27 @@ */ package de.rub.nds.sshattacker.core.data.sftp.parser.request; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestStatMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class SftpRequestStatMessageParser extends SftpRequestWithPathMessageParser { - public SftpRequestStatMessageParser(byte[] array) { + private static final Logger LOGGER = LogManager.getLogger(); + + private final Chooser chooser; + + public SftpRequestStatMessageParser(byte[] array, Chooser chooser) { super(array); + this.chooser = chooser; } - public SftpRequestStatMessageParser(byte[] array, int startPosition) { + public SftpRequestStatMessageParser(byte[] array, int startPosition, Chooser chooser) { super(array, startPosition); + this.chooser = chooser; } @Override @@ -25,6 +35,16 @@ public SftpRequestStatMessage createMessage() { return new SftpRequestStatMessage(); } + private void parseFlags() { + if (chooser.getSftpNegotiatedVersion() > 3) { + int flags = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setFlags(flags); + LOGGER.debug("Flags: {}", flags); + } + } + @Override - protected void parseRequestWithPathSpecificContents() {} + protected void parseRequestWithPathSpecificContents() { + parseFlags(); + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseAttributesMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseAttributesMessageParser.java index 51e0715c7..f27682037 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseAttributesMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseAttributesMessageParser.java @@ -9,16 +9,21 @@ import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseAttributesMessageParser extends SftpResponseMessageParser { - public SftpResponseAttributesMessageParser(byte[] array) { + private final Chooser chooser; + + public SftpResponseAttributesMessageParser(byte[] array, Chooser chooser) { super(array); + this.chooser = chooser; } - public SftpResponseAttributesMessageParser(byte[] array, int startPosition) { + public SftpResponseAttributesMessageParser(byte[] array, int startPosition, Chooser chooser) { super(array, startPosition); + this.chooser = chooser; } @Override @@ -28,7 +33,7 @@ public SftpResponseAttributesMessage createMessage() { private void parseAttributes() { SftpFileAttributesParser attributesParser = - new SftpFileAttributesParser(getArray(), getPointer()); + new SftpFileAttributesParser(getArray(), getPointer(), chooser); message.setAttributes(attributesParser.parse()); setPointer(attributesParser.getPointer()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameEntryParser.java index dbb6b4ef9..ce8925ecb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameEntryParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameEntryParser.java @@ -13,6 +13,7 @@ import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameEntry; import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; import de.rub.nds.sshattacker.core.protocol.common.Parser; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -23,12 +24,16 @@ public class SftpResponseNameEntryParser extends Parser { private final SftpResponseNameEntry nameEntry = new SftpResponseNameEntry(); - public SftpResponseNameEntryParser(byte[] array) { + private final Chooser chooser; + + public SftpResponseNameEntryParser(byte[] array, Chooser chooser) { super(array); + this.chooser = chooser; } - public SftpResponseNameEntryParser(byte[] array, int startPosition) { + public SftpResponseNameEntryParser(byte[] array, int startPosition, Chooser chooser) { super(array, startPosition); + this.chooser = chooser; } private void parseFilename() { @@ -41,17 +46,19 @@ private void parseFilename() { } private void parseLongName() { - int longNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); - nameEntry.setLongNameLength(longNameLength); - LOGGER.debug("LongName length: {}", longNameLength); - String longName = parseByteString(longNameLength, StandardCharsets.UTF_8); - nameEntry.setLongName(longName); - LOGGER.debug("LongName: {}", () -> backslashEscapeString(longName)); + if (chooser.getSftpNegotiatedVersion() <= 3) { + int longNameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + nameEntry.setLongNameLength(longNameLength); + LOGGER.debug("LongName length: {}", longNameLength); + String longName = parseByteString(longNameLength, StandardCharsets.UTF_8); + nameEntry.setLongName(longName); + LOGGER.debug("LongName: {}", () -> backslashEscapeString(longName)); + } } private void parseAttributes() { SftpFileAttributesParser attributesParser = - new SftpFileAttributesParser(getArray(), getPointer()); + new SftpFileAttributesParser(getArray(), getPointer(), chooser); nameEntry.setAttributes(attributesParser.parse()); setPointer(attributesParser.getPointer()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java index 8d138743a..2bd3a2f63 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java @@ -9,6 +9,7 @@ import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -16,13 +17,16 @@ public class SftpResponseNameMessageParser extends SftpResponseMessageParser { private static final Logger LOGGER = LogManager.getLogger(); + private final Chooser chooser; - public SftpResponseNameMessageParser(byte[] array) { + public SftpResponseNameMessageParser(byte[] array, Chooser chooser) { super(array); + this.chooser = chooser; } - public SftpResponseNameMessageParser(byte[] array, int startPosition) { + public SftpResponseNameMessageParser(byte[] array, int startPosition, Chooser chooser) { super(array, startPosition); + this.chooser = chooser; } @Override @@ -40,7 +44,7 @@ private void parseNameEntries() { nameEntryIndex++, nameEntryStartPointer = getPointer()) { SftpResponseNameEntryParser nameEntryParser = - new SftpResponseNameEntryParser(getArray(), nameEntryStartPointer); + new SftpResponseNameEntryParser(getArray(), nameEntryStartPointer, chooser); message.addNameEntry(nameEntryParser.parse()); setPointer(nameEntryParser.getPointer()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java index 6b0dee19f..da07e4938 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java @@ -23,7 +23,11 @@ public void prepareMessageSpecificContents() { getObject().setVersion(chooser.getSftpClientVersion()); } if (getObject().getExtensions().isEmpty()) { - getObject().setExtensions(chooser.getSftpClientSupportedExtensions()); + if (chooser.getSftpClientVersion() == 3) { + // Only Clients with protocol version 3 should send supported extensions, + // to stay compatible with servers that use protocol version 1 or 2 + getObject().setExtensions(chooser.getSftpClientSupportedExtensions()); + } } getObject() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java index 950c0e425..c1f6d8c80 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java @@ -20,6 +20,7 @@ public SftpVersionMessagePreparator(Chooser chooser, SftpVersionMessage message) public void prepareMessageSpecificContents() { if (getObject().getVersion() == null) { + // Send own server version, but negotiate the version that is the lower if the two getObject().setVersion(chooser.getSftpServerVersion()); } if (getObject().getExtensions().isEmpty()) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpAclEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpAclEntryPreparator.java new file mode 100644 index 000000000..0b1b05ec2 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpAclEntryPreparator.java @@ -0,0 +1,42 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.attribute; + +import de.rub.nds.sshattacker.core.constants.SftpAceFlag; +import de.rub.nds.sshattacker.core.constants.SftpAceMask; +import de.rub.nds.sshattacker.core.constants.SftpAceType; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpAclEntry; +import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpAclEntryPreparator extends Preparator { + + public SftpAclEntryPreparator(Chooser chooser, SftpAclEntry aclEntry) { + super(chooser, aclEntry); + } + + @Override + public final void prepare() { + if (getObject().getType() == null) { + getObject().setType(SftpAceType.ACE4_ACCESS_ALLOWED_ACE_TYPE); + } + if (getObject().getFlags() == null) { + getObject().setFlags(SftpAceFlag.ACE4_FILE_INHERIT_ACE); + } + if (getObject().getMask() == null) { + getObject().setMask(SftpAceMask.ACE4_ADD_FILE); + } + + if (getObject().getWho() == null) { + getObject().setWho(chooser.getConfig().getUsername(), true); + } + if (getObject().getWhoLength() == null) { + getObject().setWhoLength(getObject().getWho().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java index 508f87702..909249ead 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java @@ -7,8 +7,13 @@ */ package de.rub.nds.sshattacker.core.data.sftp.preperator.attribute; +import de.rub.nds.modifiablevariable.ModifiableVariable; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.constants.SftpFileType; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpAclEntry; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileExtendedAttribute; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -29,35 +34,165 @@ public final void prepare() { SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED); } - if (getObject().getSize() == null) { - getObject().setSize(0); + + if (chooser.getSftpNegotiatedVersion() > 3 + || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { + if (getObject().getType() == null) { + getObject().setType(SftpFileType.SSH_FILEXFER_TYPE_REGULAR); + } + } else { + getObject().clearType(); } - if (getObject().getUId() == null) { - getObject().setUId(0); + + int flags = getObject().getFlags().getValue(); + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE)) { + if (getObject().getSize() == null) { + getObject().setSize(0); + } + } else { + getObject().clearSize(); } - if (getObject().getGId() == null) { - getObject().setGId(0); + + if (chooser.getSftpNegotiatedVersion() > 3 + || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_OWNERGROUP)) { + if (getObject().getOwner() == null) { + getObject().setOwner("ssh-attacker", true); + } + if (getObject().getOwnerLength() == null) { + getObject().setOwnerLength(getObject().getOwner().getValue().length()); + } + + if (getObject().getGroup() == null) { + getObject().setGroup("nds", true); + } + if (getObject().getGroupLength() == null) { + getObject().setGroupLength(getObject().getGroup().getValue().length()); + } + } else { + getObject().clearOwner(); + getObject().clearGroup(); + } + getObject().clearUserId(); + getObject().clearGroupId(); + } else { + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID)) { + if (getObject().getUserId() == null) { + getObject().setUserId(0); + } + if (getObject().getGroupId() == null) { + getObject().setGroupId(0); + } + } else { + getObject().clearUserId(); + getObject().clearGroupId(); + } + getObject().clearOwner(); + getObject().clearGroup(); } - if (getObject().getPermissions() == null) { - getObject().setPermissions(0); + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS)) { + if (getObject().getPermissions() == null) { + getObject().setPermissions(0); + } + } else { + getObject().clearPermissions(); } - if (getObject().getATime() == null) { - getObject().setATime(0); + + if (chooser.getSftpNegotiatedVersion() > 3 + || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACCESSTIME)) { + if (getObject().getAccessTime() == null) { + getObject().setAccessTime(0); + } + } else { + getObject().clearAccessTime(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_CREATETIME)) { + if (getObject().getCreateTime() == null) { + getObject().setCreateTime(0); + } + } else { + getObject().clearCreateTime(); + } + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_MODIFYTIME)) { + if (getObject().getModifyTime() == null) { + getObject().setModifyTime(0); + } + } else { + getObject().clearModifyTime(); + } + } else { + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME)) { + if (getObject().getAccessTime() == null) { + getObject().setAccessTime(0); + } + if (getObject().getModifyTime() == null) { + getObject().setModifyTime(0); + } + } else { + getObject().clearAccessTime(); + getObject().clearModifyTime(); + } + getObject().clearCreateTime(); } - if (getObject().getMTime() == null) { - getObject().setMTime(0); + + if (chooser.getSftpNegotiatedVersion() > 3 + || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACL)) { + if (getObject().getAclEntries().isEmpty()) { + getObject().addAclEntry(new SftpAclEntry()); + } + if (getObject().getAclEntriesCount() == null) { + getObject().setAclEntriesCount(getObject().getAclEntries().size()); + } + getObject() + .getAclEntries() + .forEach( + aclEntry -> + aclEntry.getHandler(chooser.getContext()) + .getPreparator() + .prepare()); + getObject() + .setAclLength( + DataFormatConstants.UINT32_SIZE + + getObject().getAclEntries().size() + * (DataFormatConstants.UINT32_SIZE * 3 + + DataFormatConstants.STRING_SIZE_LENGTH) + + getObject().getAclEntries().stream() + .map(SftpAclEntry::getWhoLength) + .mapToInt(ModifiableVariable::getValue) + .sum()); + } else { + getObject().clearAcl(); + } + } else { + getObject().clearAcl(); } - if (getObject().getExtendedCount() == null) { - getObject().setExtendedCount(0); + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED)) { + if (getObject().getExtendedAttributes().isEmpty()) { + getObject().addExtendedAttribute(new SftpFileExtendedAttribute()); + } + if (getObject().getExtendedCount() == null) { + getObject().setExtendedCount(getObject().getExtendedAttributes().size()); + } + getObject() + .getExtendedAttributes() + .forEach( + extendedAttribute -> + extendedAttribute + .getHandler(chooser.getContext()) + .getPreparator() + .prepare()); + } else { + getObject().clearExtendedAttributes(); } + } - getObject() - .getExtendedAttributes() - .forEach( - extendedAttribute -> - extendedAttribute - .getHandler(chooser.getContext()) - .getPreparator() - .prepare()); + private boolean isFlagSet(int attributes, SftpFileAttributeFlag attribute) { + return chooser.getConfig().getRespectSftpAttributesFlags() + || (attributes & attribute.getValue()) != 0; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java new file mode 100644 index 000000000..2caff70b5 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestTextSeekMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpRequestTextSeekMessagePreparator + extends SftpRequestExtendedMessagePreparator { + + public SftpRequestTextSeekMessagePreparator( + Chooser chooser, SftpRequestTextSeekMessage message) { + super(chooser, message, SftpExtension.TEXT_SEEK); + } + + @Override + public void prepareRequestExtendedSpecificContents() { + getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); + + if (getObject().getLineNumber() == null) { + getObject().setLineNumber(0); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java new file mode 100644 index 000000000..7d96b070b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java @@ -0,0 +1,29 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2023 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionFileStatVfs; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpExtensionFileStatVfsPreparator + extends SftpExtensionWithVersionPreparator { + + public SftpExtensionFileStatVfsPreparator( + Chooser chooser, SftpExtensionFileStatVfs extension, SftpExtension extensionName) { + super(chooser, extension, extensionName); + } + + @Override + public void prepareExtensionSpecificContents() { + if (getObject().getVersion() == null) { + getObject().setVersion("2", true); + } + super.prepareExtensionSpecificContents(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java new file mode 100644 index 000000000..62898cdff --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java @@ -0,0 +1,32 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2023 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionNewline; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpExtensionNewlinePreparator + extends SftpAbstractExtensionPreparator { + + public SftpExtensionNewlinePreparator(Chooser chooser, SftpExtensionNewline extension) { + super(chooser, extension, SftpExtension.NEWLINE); + } + + @Override + public void prepareExtensionSpecificContents() { + if (getObject().getNewlineSeperator() == null) { + getObject().setNewlineSeperator("\n", true); + } + if (getObject().getNewlineSeperatorLength() == null) { + getObject() + .setNewlineSeperatorLength( + getObject().getNewlineSeperator().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java new file mode 100644 index 000000000..55e44721f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java @@ -0,0 +1,29 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2023 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; + +import de.rub.nds.sshattacker.core.constants.SftpExtension; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionStatVfs; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpExtensionStatVfsPreparator + extends SftpExtensionWithVersionPreparator { + + public SftpExtensionStatVfsPreparator( + Chooser chooser, SftpExtensionStatVfs extension, SftpExtension extensionName) { + super(chooser, extension, extensionName); + } + + @Override + public void prepareExtensionSpecificContents() { + if (getObject().getVersion() == null) { + getObject().setVersion("2", true); + } + super.prepareExtensionSpecificContents(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java index 7cf4977c4..7b584cfba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -23,5 +24,14 @@ public SftpRequestFileStatMessagePreparator( public void prepareRequestSpecificContents() { getObject() .setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); + + if (chooser.getSftpNegotiatedVersion() > 3 + || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { + if (getObject().getFlags() == null) { + getObject().setFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); + } + } else { + getObject().clearFlags(); + } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java index 7f6d84d14..e11a464e4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -26,5 +27,14 @@ public void prepareRequestSpecificContents() { if (getObject().getPathLength() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } + + if (chooser.getSftpNegotiatedVersion() > 3 + || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { + if (getObject().getFlags() == null) { + getObject().setFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); + } + } else { + getObject().clearFlags(); + } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameEntryPreparator.java index b0dc8e7f1..496d2d217 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameEntryPreparator.java @@ -27,13 +27,20 @@ public final void prepare() { getObject().setFilenameLength(getObject().getFilename().getValue().length()); } - if (getObject().getLongName() == null) { - getObject() - .setLongName( - "-rwxr-xr-x 1 ssh attacker 348911 Mar 25 14:29 passwd", true); - } - if (getObject().getLongNameLength() == null) { - getObject().setLongNameLength(getObject().getLongName().getValue().length()); + if (chooser.getSftpNegotiatedVersion() <= 3 + || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { + if (getObject().getLongName() == null) { + getObject() + .setLongName( + "-rwxr-xr-x 1 ssh attacker 348911 Mar 25 14:29 passwd", + true); + } + if (getObject().getLongNameLength() == null) { + getObject().setLongNameLength(getObject().getLongName().getValue().length()); + } + } else { + // As of version 4 there is no longer a longName field + getObject().clearLongName(); } if (getObject().getAttributes() == null) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpAclEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpAclEntrySerializer.java new file mode 100644 index 000000000..b554f2e4c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpAclEntrySerializer.java @@ -0,0 +1,64 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.attribute; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpAclEntry; +import de.rub.nds.sshattacker.core.protocol.common.Serializer; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpAclEntrySerializer extends Serializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpAclEntry aclEntry; + + public SftpAclEntrySerializer(SftpAclEntry aclEntry) { + super(); + this.aclEntry = aclEntry; + } + + private void serializeType() { + Integer type = aclEntry.getType().getValue(); + LOGGER.debug("Type: {}", type); + appendInt(type, DataFormatConstants.UINT32_SIZE); + } + + private void serializeFlags() { + Integer flags = aclEntry.getFlags().getValue(); + LOGGER.debug("Flags: {}", flags); + appendInt(flags, DataFormatConstants.UINT32_SIZE); + } + + private void serializeMask() { + Integer mask = aclEntry.getMask().getValue(); + LOGGER.debug("Mask: {}", mask); + appendInt(mask, DataFormatConstants.UINT32_SIZE); + } + + private void serializeWho() { + Integer whoLength = aclEntry.getWhoLength().getValue(); + LOGGER.debug("Who length: {}", whoLength); + appendInt(whoLength, DataFormatConstants.STRING_SIZE_LENGTH); + String who = aclEntry.getWho().getValue(); + LOGGER.debug("Who: {}", () -> backslashEscapeString(who)); + appendString(who, StandardCharsets.UTF_8); + } + + @Override + protected final void serializeBytes() { + serializeType(); + serializeFlags(); + serializeMask(); + serializeWho(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java index 59a18a317..c5e94569d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java @@ -7,10 +7,13 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer.attribute; +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.constants.SftpFileType; import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.Serializer; +import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -31,74 +34,127 @@ private void serializeFlags() { appendInt(flags, DataFormatConstants.UINT32_SIZE); } - private void serializeSize() { - Long size = attributes.getSize().getValue(); - LOGGER.debug("Size: {}", size); - appendLong(size, DataFormatConstants.UINT64_SIZE); + private void serializeType() { + if (attributes.getType() != null) { + Byte type = attributes.getType().getValue(); + LOGGER.debug("Type: {}", SftpFileType.getNameByType(type)); + appendByte(type); + } } - private void serializeUIdGId() { - Integer uId = attributes.getUId().getValue(); - LOGGER.debug("UId: {}", uId); - appendInt(uId, DataFormatConstants.UINT32_SIZE); - Integer gId = attributes.getGId().getValue(); - LOGGER.debug("GId: {}", gId); - appendInt(gId, DataFormatConstants.UINT32_SIZE); + private void serializeSize() { + if (attributes.getSize() != null) { + Long size = attributes.getSize().getValue(); + LOGGER.debug("Size: {}", size); + appendLong(size, DataFormatConstants.UINT64_SIZE); + } } - private void serializePermissions() { - Integer permissions = attributes.getPermissions().getValue(); - LOGGER.debug("Permissions: {}", permissions); - appendInt(permissions, DataFormatConstants.UINT32_SIZE); + private void serializeUIdGId() { + if (attributes.getUserId() != null) { + Integer uId = attributes.getUserId().getValue(); + LOGGER.debug("UId: {}", uId); + appendInt(uId, DataFormatConstants.UINT32_SIZE); + } + if (attributes.getGroupId() != null) { + Integer gId = attributes.getGroupId().getValue(); + LOGGER.debug("GId: {}", gId); + appendInt(gId, DataFormatConstants.UINT32_SIZE); + } } - private void serializeAcModTime() { - Integer aTime = attributes.getATime().getValue(); - LOGGER.debug("ATime: {}", aTime); - appendInt(aTime, DataFormatConstants.UINT32_SIZE); - Integer mTime = attributes.getMTime().getValue(); - LOGGER.debug("MTime: {}", mTime); - appendInt(mTime, DataFormatConstants.UINT32_SIZE); + private void serializeOwnerGroup() { + if (attributes.getOwner() != null) { + Integer ownerLength = attributes.getOwnerLength().getValue(); + LOGGER.debug("Owner length: {}", ownerLength); + appendInt(ownerLength, DataFormatConstants.STRING_SIZE_LENGTH); + String owner = attributes.getOwner().getValue(); + LOGGER.debug("Owner: {}", () -> backslashEscapeString(owner)); + appendString(owner, StandardCharsets.UTF_8); + } + if (attributes.getGroup() != null) { + Integer groupLength = attributes.getGroupLength().getValue(); + LOGGER.debug("Group length: {}", groupLength); + appendInt(groupLength, DataFormatConstants.STRING_SIZE_LENGTH); + String group = attributes.getGroup().getValue(); + LOGGER.debug("Group: {}", () -> backslashEscapeString(group)); + appendString(group, StandardCharsets.UTF_8); + } } - private void serializeExtendedAttributes() { - Integer extendedCount = attributes.getExtendedCount().getValue(); - LOGGER.debug("ExtendedCount: {}", extendedCount); - appendInt(extendedCount, DataFormatConstants.UINT32_SIZE); - - attributes - .getExtendedAttributes() - .forEach( - extendedAttribute -> - appendBytes( - extendedAttribute - .getHandler(null) - .getSerializer() - .serialize())); + private void serializePermissions() { + if (attributes.getPermissions() != null) { + Integer permissions = attributes.getPermissions().getValue(); + LOGGER.debug("Permissions: {}", permissions); + appendInt(permissions, DataFormatConstants.UINT32_SIZE); + } } - @Override - protected final void serializeBytes() { - serializeFlags(); - int flags = attributes.getFlags().getValue(); - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE)) { - serializeSize(); + private void serializeTimes() { + if (attributes.getAccessTime() != null) { + Integer aTime = attributes.getAccessTime().getValue(); + LOGGER.debug("ATime: {}", aTime); + appendInt(aTime, DataFormatConstants.UINT32_SIZE); } - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID)) { - serializeUIdGId(); + if (attributes.getCreateTime() != null) { + Integer cTime = attributes.getCreateTime().getValue(); + LOGGER.debug("CTime: {}", cTime); + appendInt(cTime, DataFormatConstants.UINT32_SIZE); } - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS)) { - serializePermissions(); + if (attributes.getModifyTime() != null) { + Integer mTime = attributes.getModifyTime().getValue(); + LOGGER.debug("MTime: {}", mTime); + appendInt(mTime, DataFormatConstants.UINT32_SIZE); } - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME)) { - serializeAcModTime(); + } + + private void serializeAcl() { + if (attributes.getAclEntriesCount() != null) { + Integer aclLength = attributes.getAclLength().getValue(); + LOGGER.debug("AclLength: {}", aclLength); + appendInt(aclLength, DataFormatConstants.UINT32_SIZE); + + Integer aclEntriesCount = attributes.getAclEntriesCount().getValue(); + LOGGER.debug("AclEntriesCount: {}", aclEntriesCount); + appendInt(aclEntriesCount, DataFormatConstants.UINT32_SIZE); + + attributes + .getAclEntries() + .forEach( + aclEntry -> + appendBytes( + aclEntry.getHandler(null).getSerializer().serialize())); } - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED)) { - serializeExtendedAttributes(); + } + + private void serializeExtendedAttributes() { + if (attributes.getExtendedCount() != null) { + Integer extendedCount = attributes.getExtendedCount().getValue(); + LOGGER.debug("ExtendedCount: {}", extendedCount); + appendInt(extendedCount, DataFormatConstants.UINT32_SIZE); + + attributes + .getExtendedAttributes() + .forEach( + extendedAttribute -> + appendBytes( + extendedAttribute + .getHandler(null) + .getSerializer() + .serialize())); } } - private static boolean isFlagSet(int attributes, SftpFileAttributeFlag attribute) { - return (attributes & attribute.getValue()) != 0; + @Override + protected final void serializeBytes() { + serializeFlags(); + serializeType(); + serializeSize(); + serializeUIdGId(); + serializeOwnerGroup(); + serializePermissions(); + serializeTimes(); + serializeAcl(); + serializeExtendedAttributes(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestTextSeekMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestTextSeekMessageSerializer.java new file mode 100644 index 000000000..01eb62e0a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestTextSeekMessageSerializer.java @@ -0,0 +1,34 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestTextSeekMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpRequestTextSeekMessageSerializer + extends SftpRequestExtendedWithHandleMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpRequestTextSeekMessageSerializer(SftpRequestTextSeekMessage message) { + super(message); + } + + private void serializeLineNumber() { + Long lineNumber = message.getLineNumber().getValue(); + LOGGER.debug("LineNumber: {}", lineNumber); + appendLong(lineNumber, DataFormatConstants.UINT64_SIZE); + } + + @Override + protected void serializeRequestExtendedWithHandleSpecificContents() { + serializeLineNumber(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionNewlineSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionNewlineSerializer.java new file mode 100644 index 000000000..73e19182f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionNewlineSerializer.java @@ -0,0 +1,40 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.extension; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionNewline; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpExtensionNewlineSerializer + extends SftpAbstractExtensionSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpExtensionNewlineSerializer(SftpExtensionNewline extension) { + super(extension); + } + + private void serializeNewlineSeperator() { + Integer newlineSeperatorLength = extension.getNewlineSeperatorLength().getValue(); + LOGGER.debug("NewlineSeperator length: {}", newlineSeperatorLength); + appendInt(newlineSeperatorLength, DataFormatConstants.STRING_SIZE_LENGTH); + String newlineSeperator = extension.getNewlineSeperator().getValue(); + LOGGER.debug("NewlineSeperator: {}", () -> backslashEscapeString(newlineSeperator)); + appendString(newlineSeperator, StandardCharsets.UTF_8); + } + + @Override + protected void serializeExtensionValue() { + serializeNewlineSeperator(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java index af9dd1aac..3d38e4352 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java @@ -7,15 +7,30 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileStatMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class SftpRequestFileStatMessageSerializer extends SftpRequestWithHandleMessageSerializer { + private static final Logger LOGGER = LogManager.getLogger(); + public SftpRequestFileStatMessageSerializer(SftpRequestFileStatMessage message) { super(message); } + private void serializeFlags() { + if (message.getFlags() != null) { + Integer flags = message.getFlags().getValue(); + LOGGER.debug("Flags: {}", flags); + appendInt(flags, DataFormatConstants.UINT32_SIZE); + } + } + @Override - protected void serializeRequestWithHandleSpecificContents() {} + protected void serializeRequestWithHandleSpecificContents() { + serializeFlags(); + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestStatMessageSerializer.java index 9e01f7503..7d96c2cf9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestStatMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestStatMessageSerializer.java @@ -7,15 +7,30 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestStatMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class SftpRequestStatMessageSerializer extends SftpRequestWithPathMessageSerializer { + private static final Logger LOGGER = LogManager.getLogger(); + public SftpRequestStatMessageSerializer(SftpRequestStatMessage message) { super(message); } + private void serializeFlags() { + if (message.getFlags() != null) { + Integer flags = message.getFlags().getValue(); + LOGGER.debug("Flags: {}", flags); + appendInt(flags, DataFormatConstants.UINT32_SIZE); + } + } + @Override - protected void serializeRequestWithPathSpecificContents() {} + protected void serializeRequestWithPathSpecificContents() { + serializeFlags(); + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameEntrySerializer.java index 7db101c3a..b5f60c930 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameEntrySerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameEntrySerializer.java @@ -37,12 +37,14 @@ private void serializeFilename() { } private void serializeLongName() { - Integer longNameLength = nameEntry.getLongNameLength().getValue(); - LOGGER.debug("LongName length: {}", longNameLength); - appendInt(longNameLength, DataFormatConstants.STRING_SIZE_LENGTH); - String longName = nameEntry.getLongName().getValue(); - LOGGER.debug("LongName: {}", () -> backslashEscapeString(longName)); - appendString(longName, StandardCharsets.UTF_8); + if (nameEntry.getLongName() != null) { + Integer longNameLength = nameEntry.getLongNameLength().getValue(); + LOGGER.debug("LongName length: {}", longNameLength); + appendInt(longNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String longName = nameEntry.getLongName().getValue(); + LOGGER.debug("LongName: {}", () -> backslashEscapeString(longName)); + appendString(longName, StandardCharsets.UTF_8); + } } private void serializeAttributes() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java index 20b4e7cde..c44dfd2d6 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java @@ -356,6 +356,9 @@ public class SshContext { /** SFTP Server protocol version */ private Integer sftpServerVersion; + /** SFTP negotiated protocol version */ + private Integer sftpNegotiatedVersion; + // endregion // region SFTP Extensions @@ -1272,6 +1275,10 @@ public Optional getSftpServerVersion() { return Optional.ofNullable(sftpServerVersion); } + public Optional getSftpNegotiatedVersion() { + return Optional.ofNullable(sftpNegotiatedVersion); + } + // endregion // region Setters for SFTP Version Exchange Fields public void setSftpClientVersion(Integer sftpClientVersion) { @@ -1282,6 +1289,10 @@ public void setSftpServerVersion(Integer sftpServerVersion) { this.sftpServerVersion = sftpServerVersion; } + public void setSftpNegotiatedVersion(Integer sftpNegotiatedVersion) { + this.sftpNegotiatedVersion = sftpNegotiatedVersion; + } + // endregion // region Getters for SFTP Extensions diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java index 8293f1353..281b46fc9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java @@ -257,6 +257,8 @@ public CompressionMethod getReceiveCompressionMethod() { public abstract Integer getSftpServerVersion(); + public abstract Integer getSftpNegotiatedVersion(); + // endregion // region SFTP Extensions diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java index ab391f483..b34442b5b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java @@ -1046,6 +1046,17 @@ public Integer getSftpServerVersion() { return context.getSftpServerVersion().orElse(config.getSftpServerVersion()); } + /** + * Retrieves the SFTP negotiated version from context. If no version was received (i.e. + * out-of-order workflow), the SFTP negotiated version from config will be returned. + * + * @return The SFTP negotiated protocol version + */ + @Override + public Integer getSftpNegotiatedVersion() { + return context.getSftpNegotiatedVersion().orElse(config.getSftpNegotiatedVersion()); + } + // endregion // region SFTP Extensions From 46024f701b2201ebbf393555b798ffca673e9881 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 4 Nov 2024 17:53:20 +0100 Subject: [PATCH 041/203] Add missing jakarta xml decorator for SftpRequestTextSeekMessage --- .../nds/sshattacker/core/workflow/action/MessageAction.java | 4 +++- .../nds/sshattacker/core/workflow/action/ReceiveAction.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java index 62e4c4bac..dbfbd5c74 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java @@ -198,7 +198,9 @@ public abstract class MessageAction extends ConnectionBoundAction { type = SftpResponseUsersGroupsByIdMessage.class, name = "SftpResponseUsersGroupsById"), @XmlElement(type = SftpUnknownMessage.class, name = "SftpUnknown"), - @XmlElement(type = SftpVersionMessage.class, name = "SftpVersion") + @XmlElement(type = SftpVersionMessage.class, name = "SftpVersion"), + // SFTP V4 + @XmlElement(type = SftpRequestTextSeekMessage.class, name = "SftpRequestTextSeek") }) protected List> messages = new ArrayList<>(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java index 27c2efe01..129f4ea72 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java @@ -209,7 +209,9 @@ public class ReceiveAction extends MessageAction implements ReceivingAction { type = SftpResponseUsersGroupsByIdMessage.class, name = "SftpResponseUsersGroupsById"), @XmlElement(type = SftpUnknownMessage.class, name = "SftpUnknown"), - @XmlElement(type = SftpVersionMessage.class, name = "SftpVersion") + @XmlElement(type = SftpVersionMessage.class, name = "SftpVersion"), + // SFTP V4 + @XmlElement(type = SftpRequestTextSeekMessage.class, name = "SftpRequestTextSeek") }) protected List> expectedMessages = new ArrayList<>(); From 588f9c716080a4685b91ba956c9b3554689f74d4 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 7 Nov 2024 14:52:33 +0100 Subject: [PATCH 042/203] Make some fields private. Found using spotbugs. --- .../de/rub/nds/sshattacker/core/state/SshContext.java | 8 ++++---- .../java/de/rub/nds/sshattacker/core/state/State.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java index c44dfd2d6..a356f2d6e 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java @@ -290,10 +290,10 @@ public class SshContext { // region SSH Extensions /** List of extensions supported by the client */ /** List of extensions supported by the client */ - public List> clientSupportedExtensions; + private List> clientSupportedExtensions; /** List of extensions supported by the server */ - public List> serverSupportedExtensions; + private List> serverSupportedExtensions; /** Add this new field for supported public key algorithms */ private String supportedPublicKeyAlgorithms; @@ -363,10 +363,10 @@ public class SshContext { // region SFTP Extensions /** List of SFTP extensions supported by the client */ - public List> sftpClientSupportedExtensions; + private List> sftpClientSupportedExtensions; /** List of SFTP extensions supported by the server */ - public List> sftpServerSupportedExtensions; + private List> sftpServerSupportedExtensions; // endregion diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/State.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/State.java index b7a4dd844..25dd309cb 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/State.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/State.java @@ -58,7 +58,7 @@ public class State { @HoldsModifiableVariable private WorkflowTrace workflowTrace; private WorkflowTrace originalWorkflowTrace; - public String workflowOutputName; + private String workflowOutputName; private long startTimestamp; private long endTimestamp; From 3bbc2c9617a8d46e1d983dc9f50de7be45716806 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 7 Nov 2024 14:54:15 +0100 Subject: [PATCH 043/203] Remove duplicated comment --- .../main/java/de/rub/nds/sshattacker/core/state/SshContext.java | 1 - 1 file changed, 1 deletion(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java index a356f2d6e..2d0a9f0b5 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java @@ -289,7 +289,6 @@ public class SshContext { // region SSH Extensions /** List of extensions supported by the client */ - /** List of extensions supported by the client */ private List> clientSupportedExtensions; /** List of extensions supported by the server */ From 9a1f4b9b90f55d4e77261ed0156bc9faf0f7bd3a Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 9 Nov 2024 16:42:57 +0100 Subject: [PATCH 044/203] Close open file handles when serializing or parsing Config or WorkflowTraces. --- .../rub/nds/sshattacker/core/config/ConfigIO.java | 13 +++++++------ .../core/workflow/WorkflowTraceSerializer.java | 11 +++++++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigIO.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigIO.java index 9e960abd4..d13ccd673 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigIO.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigIO.java @@ -16,7 +16,6 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -43,9 +42,9 @@ static synchronized JAXBContext getJAXBContext() throws JAXBException { } public static void write(Config config, File file) { - try { - write(config, new FileOutputStream(file)); - } catch (FileNotFoundException ex) { + try (FileOutputStream fos = new FileOutputStream(file)) { + write(config, fos); + } catch (IOException ex) { throw new RuntimeException(ex); } } @@ -89,10 +88,12 @@ public static Config read(File file) { // Raise an exception also on warnings return false; }); - return read(new FileInputStream(file), unmarshaller); + try (FileInputStream fis = new FileInputStream(file)) { + return read(fis, unmarshaller); + } } catch (JAXBException e) { throw new RuntimeException(e); - } catch (FileNotFoundException e) { + } catch (IOException e) { throw new IllegalArgumentException("File cannot be found", e); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceSerializer.java index ff05b3834..2b1017618 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceSerializer.java @@ -59,8 +59,11 @@ static synchronized JAXBContext getJAXBContext() throws JAXBException { */ public static void write(File file, WorkflowTrace workflowTrace) throws FileNotFoundException, JAXBException, IOException { - FileOutputStream fos = new FileOutputStream(file, true); - write(fos, workflowTrace); + try (FileOutputStream fos = new FileOutputStream(file, true)) { + write(fos, workflowTrace); + } catch (IOException ex) { + throw new RuntimeException(ex); + } } /** @@ -147,8 +150,8 @@ public static List insecureReadFolder(File folder) { continue; } WorkflowTrace trace; - try { - trace = insecureRead(new FileInputStream(file)); + try (FileInputStream fis = new FileInputStream(file)) { + trace = insecureRead(fis); trace.setName(file.getAbsolutePath()); list.add(trace); } catch (JAXBException | IOException | XMLStreamException ex) { From a110aa78a8e8a870181857ed2161598115bd075c Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 14 Nov 2024 18:05:29 +0100 Subject: [PATCH 045/203] Add missing XmlElement entries in config for (SFTP) extensions. --- .../nds/sshattacker/core/config/Config.java | 58 ++++++++++++++++++- .../ThreadedServerWorkflowExecutor.java | 6 +- .../core/workflow/chooser/DefaultChooser.java | 6 +- 3 files changed, 62 insertions(+), 8 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index fb132364a..946279158 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -292,6 +292,9 @@ public class Config implements Serializable { @XmlElement(type = ServerSigAlgsExtension.class, name = "ServerSigAlgsExtension"), @XmlElement(type = DelayCompressionExtension.class, name = "DelayCompressionExtension"), @XmlElement(type = PingExtension.class, name = "PingExtension"), + @XmlElement( + type = PublicKeyAlgorithmsRoumenPetrovExtension.class, + name = "PublicKeyAlgorithmsRoumenPetrovExtension"), @XmlElement(type = UnknownExtension.class, name = "UnknownExtension") }) private List> clientSupportedExtensions; @@ -302,6 +305,9 @@ public class Config implements Serializable { @XmlElement(type = ServerSigAlgsExtension.class, name = "ServerSigAlgsExtension"), @XmlElement(type = DelayCompressionExtension.class, name = "DelayCompressionExtension"), @XmlElement(type = PingExtension.class, name = "PingExtension"), + @XmlElement( + type = PublicKeyAlgorithmsRoumenPetrovExtension.class, + name = "PublicKeyAlgorithmsRoumenPetrovExtension"), @XmlElement(type = UnknownExtension.class, name = "UnknownExtension") }) private List> serverSupportedExtensions; @@ -444,12 +450,60 @@ public class Config implements Serializable { // region SSH Extensions /** List of SFTP extensions supported by the client */ @XmlElementWrapper - @XmlElements({@XmlElement(type = SftpExtensionUnknown.class, name = "SftpUnknownExtension")}) + @XmlElements({ + @XmlElement(type = SftpExtensionCheckFile.class, name = "SftpExtensionCheckFile"), + @XmlElement(type = SftpExtensionCopyData.class, name = "SftpExtensionCopyData"), + @XmlElement(type = SftpExtensionCopyFile.class, name = "SftpExtensionCopyFile"), + @XmlElement(type = SftpExtensionExpandPath.class, name = "SftpExtensionExpandPath"), + @XmlElement(type = SftpExtensionFileStatVfs.class, name = "SftpExtensionFileStatVfs"), + @XmlElement(type = SftpExtensionFileSync.class, name = "SftpExtensionFileSync"), + @XmlElement(type = SftpExtensionGetTempFolder.class, name = "SftpExtensionGetTempFolder"), + @XmlElement(type = SftpExtensionHardlink.class, name = "SftpExtensionHardlink"), + @XmlElement(type = SftpExtensionHomeDirectory.class, name = "SftpExtensionHomeDirectory"), + @XmlElement(type = SftpExtensionLimits.class, name = "SftpExtensionLimits"), + @XmlElement(type = SftpExtensionLinkSetStat.class, name = "SftpExtensionLinkSetStat"), + @XmlElement(type = SftpExtensionMakeTempFolder.class, name = "SftpExtensionMakeTempFolder"), + @XmlElement(type = SftpExtensionNewline.class, name = "SftpExtensionNewline"), + @XmlElement(type = SftpExtensionPosixRename.class, name = "SftpExtensionPosixRename"), + @XmlElement(type = SftpExtensionSpaceAvailable.class, name = "SftpExtensionSpaceAvailable"), + @XmlElement(type = SftpExtensionStatVfs.class, name = "SftpExtensionStatVfs"), + @XmlElement(type = SftpExtensionTextSeek.class, name = "SftpExtensionTextSeek"), + @XmlElement(type = SftpExtensionUnknown.class, name = "SftpExtensionUnknown"), + @XmlElement( + type = SftpExtensionUsersGroupsById.class, + name = "SftpExtensionUsersGroupsById"), + @XmlElement(type = SftpExtensionVendorId.class, name = "SftpExtensionVendorId"), + @XmlElement(type = SftpExtensionWithVersion.class, name = "SftpExtensionWithVersion") + }) private List> sftpClientSupportedExtensions; /** List of SFTP extensions supported by the server */ @XmlElementWrapper - @XmlElements({@XmlElement(type = SftpExtensionUnknown.class, name = "SftpUnknownExtension")}) + @XmlElements({ + @XmlElement(type = SftpExtensionCheckFile.class, name = "SftpExtensionCheckFile"), + @XmlElement(type = SftpExtensionCopyData.class, name = "SftpExtensionCopyData"), + @XmlElement(type = SftpExtensionCopyFile.class, name = "SftpExtensionCopyFile"), + @XmlElement(type = SftpExtensionExpandPath.class, name = "SftpExtensionExpandPath"), + @XmlElement(type = SftpExtensionFileStatVfs.class, name = "SftpExtensionFileStatVfs"), + @XmlElement(type = SftpExtensionFileSync.class, name = "SftpExtensionFileSync"), + @XmlElement(type = SftpExtensionGetTempFolder.class, name = "SftpExtensionGetTempFolder"), + @XmlElement(type = SftpExtensionHardlink.class, name = "SftpExtensionHardlink"), + @XmlElement(type = SftpExtensionHomeDirectory.class, name = "SftpExtensionHomeDirectory"), + @XmlElement(type = SftpExtensionLimits.class, name = "SftpExtensionLimits"), + @XmlElement(type = SftpExtensionLinkSetStat.class, name = "SftpExtensionLinkSetStat"), + @XmlElement(type = SftpExtensionMakeTempFolder.class, name = "SftpExtensionMakeTempFolder"), + @XmlElement(type = SftpExtensionNewline.class, name = "SftpExtensionNewline"), + @XmlElement(type = SftpExtensionPosixRename.class, name = "SftpExtensionPosixRename"), + @XmlElement(type = SftpExtensionSpaceAvailable.class, name = "SftpExtensionSpaceAvailable"), + @XmlElement(type = SftpExtensionStatVfs.class, name = "SftpExtensionStatVfs"), + @XmlElement(type = SftpExtensionTextSeek.class, name = "SftpExtensionTextSeek"), + @XmlElement(type = SftpExtensionUnknown.class, name = "SftpExtensionUnknown"), + @XmlElement( + type = SftpExtensionUsersGroupsById.class, + name = "SftpExtensionUsersGroupsById"), + @XmlElement(type = SftpExtensionVendorId.class, name = "SftpExtensionVendorId"), + @XmlElement(type = SftpExtensionWithVersion.class, name = "SftpExtensionWithVersion") + }) private List> sftpServerSupportedExtensions; // endregion diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/ThreadedServerWorkflowExecutor.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/ThreadedServerWorkflowExecutor.java index 09a67ca81..6c1dfe779 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/ThreadedServerWorkflowExecutor.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/ThreadedServerWorkflowExecutor.java @@ -87,7 +87,7 @@ private void addHook() { kill(); LOGGER.info("Waiting for connections to be closed..."); int watchDog = 3; - while ((!shutdown) && (watchDog > 0)) { + while (!shutdown && watchDog > 0) { try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException ex) { @@ -117,7 +117,7 @@ public void executeWorkflow() throws WorkflowExecutionException { try { while (!killed) { Socket socket = serverSocket.accept(); - this.handleClient(socket); + handleClient(socket); sockets.add(socket); } } catch (IOException ex) { @@ -155,7 +155,7 @@ public void clientDone(Socket socket) { private void initialize() { LOGGER.info("Initializing server connection end at port {}", bindPort); - if ((serverSocket != null) && (!serverSocket.isClosed())) { + if (serverSocket != null && !serverSocket.isClosed()) { LOGGER.debug("Server socket already initialized"); return; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java index b34442b5b..263ab2bc4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java @@ -628,9 +628,9 @@ public KeyExchangeAlgorithm getKeyExchangeAlgorithm() { : getServerSupportedKeyExchangeAlgorithms() .get(0)); // TODO: Determine whether updating the context here can be - // considered - // useful or disadvantageous (same for all negotiated algorithm - // methods) + // considered + // useful or disadvantageous (same for all negotiated algorithm + // methods) context.setKeyExchangeAlgorithm(negotiatedAlgorithm); return negotiatedAlgorithm; }); From 00f7395540db3b2ae8a25fa4df41fd80528579fc Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 25 Nov 2024 12:04:09 +0100 Subject: [PATCH 046/203] Replace Lists of ModifiableVariable with Lists of ModifiableVariableHolder. So that I only have to implement one kind of mutator. Also added some missing annotations. And fixed UsersGroupsById Message --- .../SftpAclEntryHandler.java | 10 +-- .../SftpFileAttributesHandler.java | 10 +-- .../SftpFileExtendedAttributeHandler.java | 10 +-- .../holder/SftpFileNameEntryHandler.java | 55 ++++++++++++++ .../handler/holder/SftpIdEntryHandler.java | 55 ++++++++++++++ .../handler/holder/SftpNameEntryHandler.java | 55 ++++++++++++++ .../SftpResponseNameEntryHandler.java | 55 -------------- .../sftp/message/SftpHandshakeMessage.java | 29 ++++++- .../SftpRequestLinkSetStatMessage.java | 2 +- .../SftpRequestUsersGroupsByIdMessage.java | 55 ++++++++++++-- .../SftpResponseUsersGroupsByIdMessage.java | 63 ++++++++++++--- .../{attribute => holder}/SftpAclEntry.java | 4 +- .../SftpFileAttributes.java | 6 +- .../SftpFileExtendedAttribute.java | 4 +- .../SftpFileNameEntry.java} | 11 ++- .../data/sftp/message/holder/SftpIdEntry.java | 47 ++++++++++++ .../sftp/message/holder/SftpNameEntry.java | 76 +++++++++++++++++++ .../SftpRequestFileSetStatMessage.java | 2 +- .../request/SftpRequestMakeDirMessage.java | 2 +- .../request/SftpRequestOpenMessage.java | 2 +- .../request/SftpRequestSetStatMessage.java | 2 +- .../SftpResponseAttributesMessage.java | 2 +- .../response/SftpResponseNameMessage.java | 17 +++-- .../SftpRequestLinkSetStatMessageParser.java | 2 +- ...tpRequestUsersGroupsByIdMessageParser.java | 25 +++--- ...pResponseUsersGroupsByIdMessageParser.java | 28 +++---- .../SftpAclEntryParser.java | 4 +- .../SftpFileAttributesParser.java | 4 +- .../SftpFileExtendedAttributeParser.java | 4 +- .../SftpFileNameEntryParser.java} | 15 ++-- .../sftp/parser/holder/SftpIdEntryParser.java | 41 ++++++++++ .../parser/holder/SftpNameEntryParser.java | 47 ++++++++++++ .../SftpRequestFileSetStatMessageParser.java | 2 +- .../SftpRequestMakeDirMessageParser.java | 2 +- .../request/SftpRequestOpenMessageParser.java | 2 +- .../SftpRequestSetStatMessageParser.java | 2 +- .../SftpResponseAttributesMessageParser.java | 2 +- .../SftpResponseNameMessageParser.java | 5 +- ...tpRequestLinkSetStatMessagePreparator.java | 2 +- ...ponseUsersGroupsByIdMessagePreparator.java | 9 ++- .../SftpAclEntryPreparator.java | 4 +- .../SftpFileAttributesPreparator.java | 8 +- .../SftpFileExtendedAttributePreparator.java | 4 +- .../SftpFileNameEntryPreparator.java} | 12 +-- .../holder/SftpIdEntryPreparator.java | 26 +++++++ .../holder/SftpNameEntryPreparator.java | 29 +++++++ ...tpRequestFileSetStatMessagePreparator.java | 2 +- .../SftpRequestMakeDirMessagePreparator.java | 2 +- .../SftpRequestOpenMessagePreparator.java | 2 +- .../SftpRequestSetStatMessagePreparator.java | 2 +- ...tpResponseAttributesMessagePreparator.java | 2 +- ...questUsersGroupsByIdMessageSerializer.java | 15 ++-- ...ponseUsersGroupsByIdMessageSerializer.java | 27 +++---- .../SftpAclEntrySerializer.java | 4 +- .../SftpFileAttributesSerializer.java | 4 +- .../SftpFileExtendedAttributeSerializer.java | 4 +- .../SftpFileNameEntrySerializer.java} | 10 +-- .../holder/SftpIdEntrySerializer.java | 37 +++++++++ .../holder/SftpNameEntrySerializer.java | 43 +++++++++++ .../message/ExtensionInfoMessage.java | 3 + 60 files changed, 782 insertions(+), 228 deletions(-) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{attribute => holder}/SftpAclEntryHandler.java (77%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{attribute => holder}/SftpFileAttributesHandler.java (77%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/{attribute => holder}/SftpFileExtendedAttributeHandler.java (77%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileNameEntryHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpIdEntryHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpNameEntryHandler.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameEntryHandler.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{attribute => holder}/SftpAclEntry.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{attribute => holder}/SftpFileAttributes.java (98%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{attribute => holder}/SftpFileExtendedAttribute.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/{response/SftpResponseNameEntry.java => holder/SftpFileNameEntry.java} (90%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{attribute => holder}/SftpAclEntryParser.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{attribute => holder}/SftpFileAttributesParser.java (98%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{attribute => holder}/SftpFileExtendedAttributeParser.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/{response/SftpResponseNameEntryParser.java => holder/SftpFileNameEntryParser.java} (78%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpIdEntryParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpNameEntryParser.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{attribute => holder}/SftpAclEntryPreparator.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{attribute => holder}/SftpFileAttributesPreparator.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{attribute => holder}/SftpFileExtendedAttributePreparator.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/{response/SftpResponseNameEntryPreparator.java => holder/SftpFileNameEntryPreparator.java} (78%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{attribute => holder}/SftpAclEntrySerializer.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{attribute => holder}/SftpFileAttributesSerializer.java (97%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{attribute => holder}/SftpFileExtendedAttributeSerializer.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/{response/SftpResponseNameEntrySerializer.java => holder/SftpFileNameEntrySerializer.java} (84%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpIdEntrySerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpNameEntrySerializer.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpAclEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpAclEntryHandler.java similarity index 77% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpAclEntryHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpAclEntryHandler.java index dd5386fd5..dd5fb15a3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpAclEntryHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpAclEntryHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.attribute; +package de.rub.nds.sshattacker.core.data.sftp.handler.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpAclEntry; -import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpAclEntryParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.attribute.SftpAclEntryPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.attribute.SftpAclEntrySerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpAclEntry; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpAclEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.holder.SftpAclEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.holder.SftpAclEntrySerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileAttributesHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileAttributesHandler.java similarity index 77% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileAttributesHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileAttributesHandler.java index c22726b68..9bdd6a399 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileAttributesHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileAttributesHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.attribute; +package de.rub.nds.sshattacker.core.data.sftp.handler.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; -import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.attribute.SftpFileAttributesPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.attribute.SftpFileAttributesSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.holder.SftpFileAttributesPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.holder.SftpFileAttributesSerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileExtendedAttributeHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileExtendedAttributeHandler.java similarity index 77% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileExtendedAttributeHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileExtendedAttributeHandler.java index c5eb5fe1f..852739a56 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/attribute/SftpFileExtendedAttributeHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileExtendedAttributeHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.attribute; +package de.rub.nds.sshattacker.core.data.sftp.handler.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileExtendedAttribute; -import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileExtendedAttributeParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.attribute.SftpFileExtendedAttributePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.attribute.SftpFileExtendedAttributeSerializer; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileExtendedAttributeParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.holder.SftpFileExtendedAttributePreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.holder.SftpFileExtendedAttributeSerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileNameEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileNameEntryHandler.java new file mode 100644 index 000000000..f400e0b78 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileNameEntryHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.holder; + +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileNameEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.holder.SftpFileNameEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.holder.SftpFileNameEntrySerializer; +import de.rub.nds.sshattacker.core.protocol.common.Handler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpFileNameEntryHandler implements Handler { + + private final SshContext context; + + private final SftpFileNameEntry nameEntry; + + public SftpFileNameEntryHandler(SshContext context) { + this(context, null); + } + + public SftpFileNameEntryHandler(SshContext context, SftpFileNameEntry nameEntry) { + super(); + this.context = context; + this.nameEntry = nameEntry; + } + + @Override + public void adjustContext() {} + + @Override + public SftpFileNameEntryParser getParser(byte[] array) { + return new SftpFileNameEntryParser(array, context.getChooser()); + } + + @Override + public SftpFileNameEntryParser getParser(byte[] array, int startPosition) { + return new SftpFileNameEntryParser(array, startPosition, context.getChooser()); + } + + @Override + public SftpFileNameEntryPreparator getPreparator() { + return new SftpFileNameEntryPreparator(context.getChooser(), nameEntry); + } + + @Override + public SftpFileNameEntrySerializer getSerializer() { + return new SftpFileNameEntrySerializer(nameEntry); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpIdEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpIdEntryHandler.java new file mode 100644 index 000000000..ec1ae005e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpIdEntryHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.holder; + +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpIdEntry; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpIdEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.holder.SftpIdEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.holder.SftpIdEntrySerializer; +import de.rub.nds.sshattacker.core.protocol.common.Handler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpIdEntryHandler implements Handler { + + private final SshContext context; + + private final SftpIdEntry idEntry; + + public SftpIdEntryHandler(SshContext context) { + this(context, null); + } + + public SftpIdEntryHandler(SshContext context, SftpIdEntry idEntry) { + super(); + this.context = context; + this.idEntry = idEntry; + } + + @Override + public void adjustContext() {} + + @Override + public SftpIdEntryParser getParser(byte[] array) { + return new SftpIdEntryParser(array); + } + + @Override + public SftpIdEntryParser getParser(byte[] array, int startPosition) { + return new SftpIdEntryParser(array, startPosition); + } + + @Override + public SftpIdEntryPreparator getPreparator() { + return new SftpIdEntryPreparator(context.getChooser(), idEntry); + } + + @Override + public SftpIdEntrySerializer getSerializer() { + return new SftpIdEntrySerializer(idEntry); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpNameEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpNameEntryHandler.java new file mode 100644 index 000000000..e9d08cce3 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpNameEntryHandler.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.handler.holder; + +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpNameEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.preperator.holder.SftpNameEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.serializer.holder.SftpNameEntrySerializer; +import de.rub.nds.sshattacker.core.protocol.common.Handler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpNameEntryHandler implements Handler { + + private final SshContext context; + + private final SftpNameEntry nameEntry; + + public SftpNameEntryHandler(SshContext context) { + this(context, null); + } + + public SftpNameEntryHandler(SshContext context, SftpNameEntry nameEntry) { + super(); + this.context = context; + this.nameEntry = nameEntry; + } + + @Override + public void adjustContext() {} + + @Override + public SftpNameEntryParser getParser(byte[] array) { + return new SftpNameEntryParser(array); + } + + @Override + public SftpNameEntryParser getParser(byte[] array, int startPosition) { + return new SftpNameEntryParser(array, startPosition); + } + + @Override + public SftpNameEntryPreparator getPreparator() { + return new SftpNameEntryPreparator(context.getChooser(), nameEntry); + } + + @Override + public SftpNameEntrySerializer getSerializer() { + return new SftpNameEntrySerializer(nameEntry); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameEntryHandler.java deleted file mode 100644 index 909ea8519..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameEntryHandler.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.handler.response; - -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameEntry; -import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseNameEntryParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseNameEntryPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseNameEntrySerializer; -import de.rub.nds.sshattacker.core.protocol.common.Handler; -import de.rub.nds.sshattacker.core.state.SshContext; - -public class SftpResponseNameEntryHandler implements Handler { - - private final SshContext context; - - private final SftpResponseNameEntry nameEntry; - - public SftpResponseNameEntryHandler(SshContext context) { - this(context, null); - } - - public SftpResponseNameEntryHandler(SshContext context, SftpResponseNameEntry nameEntry) { - super(); - this.context = context; - this.nameEntry = nameEntry; - } - - @Override - public void adjustContext() {} - - @Override - public SftpResponseNameEntryParser getParser(byte[] array) { - return new SftpResponseNameEntryParser(array, context.getChooser()); - } - - @Override - public SftpResponseNameEntryParser getParser(byte[] array, int startPosition) { - return new SftpResponseNameEntryParser(array, startPosition, context.getChooser()); - } - - @Override - public SftpResponseNameEntryPreparator getPreparator() { - return new SftpResponseNameEntryPreparator(context.getChooser(), nameEntry); - } - - @Override - public SftpResponseNameEntrySerializer getSerializer() { - return new SftpResponseNameEntrySerializer(nameEntry); - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java index 0ae0b1334..74317a50b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java @@ -11,8 +11,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.sshattacker.core.data.sftp.SftpMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionUnknown; +import de.rub.nds.sshattacker.core.data.sftp.message.extension.*; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; @@ -27,7 +26,31 @@ public abstract class SftpHandshakeMessage> @HoldsModifiableVariable @XmlElementWrapper - @XmlElements({@XmlElement(type = SftpExtensionUnknown.class, name = "SftpUnknownExtension")}) + @XmlElements({ + @XmlElement(type = SftpExtensionCheckFile.class, name = "SftpExtensionCheckFile"), + @XmlElement(type = SftpExtensionCopyData.class, name = "SftpExtensionCopyData"), + @XmlElement(type = SftpExtensionCopyFile.class, name = "SftpExtensionCopyFile"), + @XmlElement(type = SftpExtensionExpandPath.class, name = "SftpExtensionExpandPath"), + @XmlElement(type = SftpExtensionFileStatVfs.class, name = "SftpExtensionFileStatVfs"), + @XmlElement(type = SftpExtensionFileSync.class, name = "SftpExtensionFileSync"), + @XmlElement(type = SftpExtensionGetTempFolder.class, name = "SftpExtensionGetTempFolder"), + @XmlElement(type = SftpExtensionHardlink.class, name = "SftpExtensionHardlink"), + @XmlElement(type = SftpExtensionHomeDirectory.class, name = "SftpExtensionHomeDirectory"), + @XmlElement(type = SftpExtensionLimits.class, name = "SftpExtensionLimits"), + @XmlElement(type = SftpExtensionLinkSetStat.class, name = "SftpExtensionLinkSetStat"), + @XmlElement(type = SftpExtensionMakeTempFolder.class, name = "SftpExtensionMakeTempFolder"), + @XmlElement(type = SftpExtensionNewline.class, name = "SftpExtensionNewline"), + @XmlElement(type = SftpExtensionPosixRename.class, name = "SftpExtensionPosixRename"), + @XmlElement(type = SftpExtensionSpaceAvailable.class, name = "SftpExtensionSpaceAvailable"), + @XmlElement(type = SftpExtensionStatVfs.class, name = "SftpExtensionStatVfs"), + @XmlElement(type = SftpExtensionTextSeek.class, name = "SftpExtensionTextSeek"), + @XmlElement(type = SftpExtensionUnknown.class, name = "SftpExtensionUnknown"), + @XmlElement( + type = SftpExtensionUsersGroupsById.class, + name = "SftpExtensionUsersGroupsById"), + @XmlElement(type = SftpExtensionVendorId.class, name = "SftpExtensionVendorId"), + @XmlElement(type = SftpExtensionWithVersion.class, name = "SftpExtensionWithVersion") + }) private List> extensions = new ArrayList<>(); public ModifiableInteger getVersion() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java index 931cbbeba..e287364d4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java @@ -9,7 +9,7 @@ import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestLinkSetStatMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import java.util.List; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java index a1bf9b9a9..bfcd6adf2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java @@ -7,20 +7,35 @@ */ package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestUsersGroupsByIdMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpIdEntry; import de.rub.nds.sshattacker.core.state.SshContext; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElementWrapper; +import jakarta.xml.bind.annotation.XmlElements; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; public class SftpRequestUsersGroupsByIdMessage extends SftpRequestExtendedMessage { private ModifiableInteger userIdsLength; - private List userIds = new ArrayList<>(); + + @HoldsModifiableVariable + @XmlElementWrapper + @XmlElements(@XmlElement(type = SftpIdEntry.class, name = "SftpIdEntry")) + private List userIds = new ArrayList<>(); + private ModifiableInteger groupIdsLength; - private List groupIds = new ArrayList<>(); + + @HoldsModifiableVariable + @XmlElementWrapper + @XmlElements(@XmlElement(type = SftpIdEntry.class, name = "SftpIdEntry")) + private List groupIds = new ArrayList<>(); public ModifiableInteger getUserIdsLength() { return userIdsLength; @@ -35,19 +50,31 @@ public void setUserIdsLength(int userIdsLength) { ModifiableVariableFactory.safelySetValue(this.userIdsLength, userIdsLength); } - public List getUserIds() { + public List getUserIds() { return userIds; } - public void setUserIds(List userIds) { + public List getUserIdsDirect() { + return userIds.stream().map(SftpIdEntry::getId).collect(Collectors.toList()); + } + + public void setUserIds(List userIds) { this.userIds = userIds; } + public void setUserIdsDirect(List userIds) { + this.userIds = userIds.stream().map(SftpIdEntry::new).collect(Collectors.toList()); + } + public void addUserId(int userId) { - userIds.add(ModifiableVariableFactory.safelySetValue(null, userId)); + userIds.add(new SftpIdEntry(ModifiableVariableFactory.safelySetValue(null, userId))); } public void addUserId(ModifiableInteger userId) { + userIds.add(new SftpIdEntry(userId)); + } + + public void addUserId(SftpIdEntry userId) { userIds.add(userId); } @@ -64,19 +91,31 @@ public void setGroupIdsLength(int groupIdsLength) { ModifiableVariableFactory.safelySetValue(this.groupIdsLength, groupIdsLength); } - public List getGroupIds() { + public List getGroupIds() { return groupIds; } - public void setGroupIds(List groupIds) { + public List getGroupIdsDirect() { + return groupIds.stream().map(SftpIdEntry::getId).collect(Collectors.toList()); + } + + public void setGroupIds(List groupIds) { this.groupIds = groupIds; } + public void setGroupIdsDirect(List groupIds) { + this.groupIds = groupIds.stream().map(SftpIdEntry::new).collect(Collectors.toList()); + } + public void addGroupId(int groupId) { - groupIds.add(ModifiableVariableFactory.safelySetValue(null, groupId)); + groupIds.add(new SftpIdEntry(ModifiableVariableFactory.safelySetValue(null, groupId))); } public void addGroupId(ModifiableInteger groupId) { + groupIds.add(new SftpIdEntry(groupId)); + } + + public void addGroupId(SftpIdEntry groupId) { groupIds.add(groupId); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java index b5b5b5f7f..009444c06 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java @@ -7,22 +7,37 @@ */ package de.rub.nds.sshattacker.core.data.sftp.message.extended_response; +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseUsersGroupsByIdMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpNameEntry; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; import de.rub.nds.sshattacker.core.state.SshContext; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElementWrapper; +import jakarta.xml.bind.annotation.XmlElements; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; public class SftpResponseUsersGroupsByIdMessage extends SftpResponseMessage { private ModifiableInteger userNamesLength; - private List userNames = new ArrayList<>(); + + @HoldsModifiableVariable + @XmlElementWrapper + @XmlElements(@XmlElement(type = SftpNameEntry.class, name = "SftpNameEntry")) + private List userNames = new ArrayList<>(); + private ModifiableInteger groupNamesLength; - private List groupNames = new ArrayList<>(); + + @HoldsModifiableVariable + @XmlElementWrapper + @XmlElements(@XmlElement(type = SftpNameEntry.class, name = "SftpNameEntry")) + private List groupNames = new ArrayList<>(); public ModifiableInteger getUserNamesLength() { return userNamesLength; @@ -37,20 +52,33 @@ public void setUserNamesLength(int userNamesLength) { ModifiableVariableFactory.safelySetValue(this.userNamesLength, userNamesLength); } - public List getUserNames() { + public List getUserNames() { return userNames; } - public void setUserNames(List userNames) { + public List getUserNamesDirect() { + return userNames.stream().map(SftpNameEntry::getName).collect(Collectors.toList()); + } + + public void setUserNames(List userNames) { this.userNames = userNames; } - public void addUserName(ModifiableString userName) { + public void setUserNamesDirect(List userNames) { + this.userNames = userNames.stream().map(SftpNameEntry::new).collect(Collectors.toList()); + ; + } + + public void addUserName(SftpNameEntry userName) { userNames.add(userName); } + public void addUserName(ModifiableString userName) { + userNames.add(new SftpNameEntry(userName)); + } + public void addUserName(String userName) { - userNames.add(ModifiableVariableFactory.safelySetValue(null, userName)); + userNames.add(new SftpNameEntry(ModifiableVariableFactory.safelySetValue(null, userName))); } public ModifiableInteger getGroupNamesLength() { @@ -66,20 +94,35 @@ public void setGroupNamesLength(int groupNamesLength) { ModifiableVariableFactory.safelySetValue(this.groupNamesLength, groupNamesLength); } - public List getGroupNames() { + public List getGroupNames() { return groupNames; } - public void setGroupNames(List groupNames) { + public List getGroupNamesDirect() { + return groupNames.stream().map(SftpNameEntry::getName).collect(Collectors.toList()); + } + + public void setGroupNames(List groupNames) { this.groupNames = groupNames; } - public void addGroupName(ModifiableString groupName) { + public void setGroupNamesDirect(List groupNames) { + this.groupNames = groupNames.stream().map(SftpNameEntry::new).collect(Collectors.toList()); + ; + ; + } + + public void addGroupName(SftpNameEntry groupName) { groupNames.add(groupName); } + public void addGroupName(ModifiableString groupName) { + groupNames.add(new SftpNameEntry(groupName)); + } + public void addGroupName(String groupName) { - groupNames.add(ModifiableVariableFactory.safelySetValue(null, groupName)); + groupNames.add( + new SftpNameEntry(ModifiableVariableFactory.safelySetValue(null, groupName))); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpAclEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpAclEntry.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpAclEntry.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpAclEntry.java index 436db126e..7760db0c0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpAclEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpAclEntry.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.attribute; +package de.rub.nds.sshattacker.core.data.sftp.message.holder; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; @@ -13,7 +13,7 @@ import de.rub.nds.sshattacker.core.constants.SftpAceFlag; import de.rub.nds.sshattacker.core.constants.SftpAceMask; import de.rub.nds.sshattacker.core.constants.SftpAceType; -import de.rub.nds.sshattacker.core.data.sftp.handler.attribute.SftpAclEntryHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpAclEntryHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import jakarta.xml.bind.annotation.XmlAccessType; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java similarity index 98% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java index ad377c3b4..8b939b951 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileAttributes.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java @@ -5,9 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.attribute; - -import static org.bouncycastle.asn1.x500.style.RFC4519Style.name; +package de.rub.nds.sshattacker.core.data.sftp.message.holder; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; @@ -17,7 +15,7 @@ import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.constants.SftpFileType; -import de.rub.nds.sshattacker.core.data.sftp.handler.attribute.SftpFileAttributesHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpFileAttributesHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import jakarta.xml.bind.annotation.*; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileExtendedAttribute.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileExtendedAttribute.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileExtendedAttribute.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileExtendedAttribute.java index 4b670a96b..9c934b7c9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/attribute/SftpFileExtendedAttribute.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileExtendedAttribute.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.attribute; +package de.rub.nds.sshattacker.core.data.sftp.message.holder; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.attribute.SftpFileExtendedAttributeHandler; +import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpFileExtendedAttributeHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import jakarta.xml.bind.annotation.XmlAccessType; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameEntry.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java index ca4958761..73d607b94 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java @@ -5,14 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.response; +package de.rub.nds.sshattacker.core.data.sftp.message.holder; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseNameEntryHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpFileNameEntryHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import jakarta.xml.bind.annotation.XmlAccessType; @@ -21,7 +20,7 @@ import java.util.List; @XmlAccessorType(XmlAccessType.FIELD) -public class SftpResponseNameEntry extends ModifiableVariableHolder { +public class SftpFileNameEntry extends ModifiableVariableHolder { private ModifiableInteger filenameLength; private ModifiableString filename; @@ -121,8 +120,8 @@ public void setAttributes(SftpFileAttributes attributes) { this.attributes = attributes; } - public SftpResponseNameEntryHandler getHandler(SshContext context) { - return new SftpResponseNameEntryHandler(context, this); + public SftpFileNameEntryHandler getHandler(SshContext context) { + return new SftpFileNameEntryHandler(context, this); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java new file mode 100644 index 000000000..6422a3a04 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java @@ -0,0 +1,47 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.holder; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpIdEntryHandler; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; + +@XmlAccessorType(XmlAccessType.FIELD) +public class SftpIdEntry extends ModifiableVariableHolder { + + private ModifiableInteger id; + + public SftpIdEntry() { + super(); + } + + public SftpIdEntry(ModifiableInteger id) { + super(); + this.id = id; + } + + public ModifiableInteger getId() { + return id; + } + + public void setId(ModifiableInteger id) { + this.id = id; + } + + public void setId(int id) { + this.id = ModifiableVariableFactory.safelySetValue(this.id, id); + } + + public SftpIdEntryHandler getHandler(SshContext context) { + return new SftpIdEntryHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java new file mode 100644 index 000000000..35aa93c1c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java @@ -0,0 +1,76 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.message.holder; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpNameEntryHandler; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import java.nio.charset.StandardCharsets; + +@XmlAccessorType(XmlAccessType.FIELD) +public class SftpNameEntry extends ModifiableVariableHolder { + + private ModifiableInteger nameLength; + private ModifiableString name; + + public SftpNameEntry() { + super(); + } + + public SftpNameEntry(ModifiableString name) { + super(); + setName(name, true); + } + + public ModifiableInteger getNameLength() { + return nameLength; + } + + public void setNameLength(ModifiableInteger nameLength) { + this.nameLength = nameLength; + } + + public void setNameLength(int nameLength) { + this.nameLength = ModifiableVariableFactory.safelySetValue(this.nameLength, nameLength); + } + + public ModifiableString getName() { + return name; + } + + public void setName(ModifiableString name) { + setName(name, false); + } + + public void setName(String name) { + setName(name, false); + } + + public void setName(ModifiableString name, boolean adjustLengthField) { + if (adjustLengthField) { + setNameLength(name.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.name = name; + } + + public void setName(String name, boolean adjustLengthField) { + if (adjustLengthField) { + setNameLength(name.getBytes(StandardCharsets.UTF_8).length); + } + this.name = ModifiableVariableFactory.safelySetValue(this.name, name); + } + + public SftpNameEntryHandler getHandler(SshContext context) { + return new SftpNameEntryHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java index 6a1699a3c..59db3812c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java @@ -9,7 +9,7 @@ import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestFileSetStatMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import java.util.List; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java index a67810d99..9c25900d1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java @@ -9,7 +9,7 @@ import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMakeDirMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import java.util.List; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java index 5a2a352b6..837775d5f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java @@ -12,7 +12,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestOpenMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import java.util.List; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java index 8fbf788db..746d4edc7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java @@ -9,7 +9,7 @@ import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestSetStatMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import java.util.List; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java index e93887116..d639dbb86 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java @@ -9,7 +9,7 @@ import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseAttributesMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import java.util.List; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java index a6724e0b4..7ac4153c8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseNameMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileNameEntry; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import jakarta.xml.bind.annotation.XmlElement; @@ -25,8 +26,8 @@ public class SftpResponseNameMessage extends SftpResponseMessage nameEntries = new ArrayList<>(); + @XmlElements({@XmlElement(type = SftpFileNameEntry.class, name = "SftpResponseNameEntry")}) + private List nameEntries = new ArrayList<>(); public ModifiableInteger getCountNameEntries() { return countNameEntries; @@ -41,26 +42,26 @@ public void setCountNameEntries(int countNameEntries) { ModifiableVariableFactory.safelySetValue(this.countNameEntries, countNameEntries); } - public List getNameEntries() { + public List getNameEntries() { return nameEntries; } - public void setNameEntries(List nameEntries) { + public void setNameEntries(List nameEntries) { setNameEntries(nameEntries, false); } - public void setNameEntries(List nameEntries, boolean adjustLengthField) { + public void setNameEntries(List nameEntries, boolean adjustLengthField) { if (adjustLengthField) { setCountNameEntries(nameEntries.size()); } this.nameEntries = nameEntries; } - public void addNameEntry(SftpResponseNameEntry nameEntry) { + public void addNameEntry(SftpFileNameEntry nameEntry) { addNameEntry(nameEntry, false); } - public void addNameEntry(SftpResponseNameEntry nameEntry, boolean adjustLengthField) { + public void addNameEntry(SftpFileNameEntry nameEntry, boolean adjustLengthField) { nameEntries.add(nameEntry); if (adjustLengthField) { setCountNameEntries(nameEntries.size()); @@ -75,7 +76,7 @@ public SftpResponseNameMessageHandler getHandler(SshContext context) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - for (SftpResponseNameEntry nameEntry : nameEntries) { + for (SftpFileNameEntry nameEntry : nameEntries) { holders.addAll(nameEntry.getAllModifiableVariableHolders()); } return holders; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLinkSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLinkSetStatMessageParser.java index af7b561a2..ac7834d30 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLinkSetStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLinkSetStatMessageParser.java @@ -8,7 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLinkSetStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileAttributesParser; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestLinkSetStatMessageParser diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java index e7265d763..4d190fb94 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java @@ -9,6 +9,7 @@ import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpIdEntryParser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -34,11 +35,13 @@ private void parseUserIds() { int userIdsLength = parseIntField(DataFormatConstants.UINT32_SIZE); message.setUserIdsLength(userIdsLength); LOGGER.debug("UserIdsLength: {}", userIdsLength); - int userIdsCount = message.getUserIdsLength().getValue() / DataFormatConstants.UINT32_SIZE; - for (int i = 0; i < userIdsCount; i++) { - int userId = parseIntField(DataFormatConstants.UINT32_SIZE); - message.addUserId(userId); - LOGGER.debug("UserId[{}]: {}", i, userId); + + int oldPointer = getPointer(); + while (getPointer() - oldPointer < userIdsLength) { + SftpIdEntryParser idEntryParser = new SftpIdEntryParser(getArray(), getPointer()); + + message.addUserId(idEntryParser.parse()); + setPointer(idEntryParser.getPointer()); } } @@ -46,12 +49,12 @@ private void parseGroupIds() { int groupIdsLength = parseIntField(DataFormatConstants.UINT32_SIZE); message.setGroupIdsLength(groupIdsLength); LOGGER.debug("GroupIdsLength: {}", groupIdsLength); - int groupIdsCount = - message.getGroupIdsLength().getValue() / DataFormatConstants.UINT32_SIZE; - for (int i = 0; i < groupIdsCount; i++) { - int groupId = parseIntField(DataFormatConstants.UINT32_SIZE); - message.addGroupId(groupId); - LOGGER.debug("GroupId[{}]: {}", i, groupId); + int oldPointer = getPointer(); + while (getPointer() - oldPointer < groupIdsLength) { + SftpIdEntryParser idEntryParser = new SftpIdEntryParser(getArray(), getPointer()); + + message.addGroupId(idEntryParser.parse()); + setPointer(idEntryParser.getPointer()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java index f9b00a5b7..8377dcdb1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java @@ -7,12 +7,10 @@ */ package de.rub.nds.sshattacker.core.data.sftp.parser.extended_response; -import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; - import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpNameEntryParser; import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseMessageParser; -import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -39,13 +37,11 @@ private void parseUserNames() { message.setUserNamesLength(userNamesLength); LOGGER.debug("UserNames length: {}", userNamesLength); int oldPointer = getPointer(); - int bytesToRead = message.getUserNamesLength().getValue(); - while (getPointer() - oldPointer < bytesToRead) { - int usernameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("UserName length: {}", usernameLength); - String username = parseByteString(usernameLength, StandardCharsets.UTF_8); - message.addUserName(username); - LOGGER.debug("UserName: {}", () -> backslashEscapeString(username)); + while (getPointer() - oldPointer < userNamesLength) { + SftpNameEntryParser nameEntryParser = new SftpNameEntryParser(getArray(), getPointer()); + + message.addUserName(nameEntryParser.parse()); + setPointer(nameEntryParser.getPointer()); } } @@ -54,13 +50,11 @@ private void parseGroupNames() { message.setGroupNamesLength(groupNamesLength); LOGGER.debug("GroupNames length: {}", groupNamesLength); int oldPointer = getPointer(); - int bytesToRead = message.getGroupNamesLength().getValue(); - while (getPointer() - oldPointer < bytesToRead) { - int usernameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("GroupName length: {}", usernameLength); - String groupName = parseByteString(usernameLength, StandardCharsets.UTF_8); - message.addGroupName(groupName); - LOGGER.debug("GroupName: {}", () -> backslashEscapeString(groupName)); + while (getPointer() - oldPointer < groupNamesLength) { + SftpNameEntryParser nameEntryParser = new SftpNameEntryParser(getArray(), getPointer()); + + message.addGroupName(nameEntryParser.parse()); + setPointer(nameEntryParser.getPointer()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpAclEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpAclEntryParser.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpAclEntryParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpAclEntryParser.java index dd09eb22d..05c84e1b9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpAclEntryParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpAclEntryParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.attribute; +package de.rub.nds.sshattacker.core.data.sftp.parser.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpAclEntry; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpAclEntry; import de.rub.nds.sshattacker.core.protocol.common.Parser; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileAttributesParser.java similarity index 98% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileAttributesParser.java index 8251ae74c..ec42c9f48 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileAttributesParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileAttributesParser.java @@ -5,14 +5,14 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.attribute; +package de.rub.nds.sshattacker.core.data.sftp.parser.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.constants.SftpFileType; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.Parser; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileExtendedAttributeParser.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileExtendedAttributeParser.java index 21d36f1d5..2abe81681 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/attribute/SftpFileExtendedAttributeParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileExtendedAttributeParser.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.attribute; +package de.rub.nds.sshattacker.core.data.sftp.parser.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileExtendedAttribute; import de.rub.nds.sshattacker.core.protocol.common.Parser; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileNameEntryParser.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameEntryParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileNameEntryParser.java index ce8925ecb..52a6fa0fc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameEntryParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileNameEntryParser.java @@ -5,33 +5,32 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.response; +package de.rub.nds.sshattacker.core.data.sftp.parser.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameEntry; -import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Parser; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SftpResponseNameEntryParser extends Parser { +public class SftpFileNameEntryParser extends Parser { private static final Logger LOGGER = LogManager.getLogger(); - private final SftpResponseNameEntry nameEntry = new SftpResponseNameEntry(); + private final SftpFileNameEntry nameEntry = new SftpFileNameEntry(); private final Chooser chooser; - public SftpResponseNameEntryParser(byte[] array, Chooser chooser) { + public SftpFileNameEntryParser(byte[] array, Chooser chooser) { super(array); this.chooser = chooser; } - public SftpResponseNameEntryParser(byte[] array, int startPosition, Chooser chooser) { + public SftpFileNameEntryParser(byte[] array, int startPosition, Chooser chooser) { super(array, startPosition); this.chooser = chooser; } @@ -64,7 +63,7 @@ private void parseAttributes() { } @Override - public final SftpResponseNameEntry parse() { + public final SftpFileNameEntry parse() { parseFilename(); parseLongName(); parseAttributes(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpIdEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpIdEntryParser.java new file mode 100644 index 000000000..ad4c44a06 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpIdEntryParser.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.holder; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpIdEntry; +import de.rub.nds.sshattacker.core.protocol.common.Parser; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpIdEntryParser extends Parser { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpIdEntry idEntry = new SftpIdEntry(); + + public SftpIdEntryParser(byte[] array) { + super(array); + } + + public SftpIdEntryParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseId() { + int id = parseIntField(DataFormatConstants.UINT32_SIZE); + idEntry.setId(id); + LOGGER.debug("Id: {}", id); + } + + @Override + public final SftpIdEntry parse() { + parseId(); + return idEntry; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpNameEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpNameEntryParser.java new file mode 100644 index 000000000..9096cca3b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpNameEntryParser.java @@ -0,0 +1,47 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.parser.holder; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpNameEntry; +import de.rub.nds.sshattacker.core.protocol.common.Parser; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpNameEntryParser extends Parser { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpNameEntry nameEntry = new SftpNameEntry(); + + public SftpNameEntryParser(byte[] array) { + super(array); + } + + public SftpNameEntryParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseName() { + int nameLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + nameEntry.setNameLength(nameLength); + LOGGER.debug("Name length: {}", nameLength); + String name = parseByteString(nameLength, StandardCharsets.UTF_8); + nameEntry.setName(name); + LOGGER.debug("Name: {}", () -> backslashEscapeString(name)); + } + + @Override + public final SftpNameEntry parse() { + parseName(); + return nameEntry; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileSetStatMessageParser.java index 050064531..82e2684db 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileSetStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileSetStatMessageParser.java @@ -8,7 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.parser.request; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileSetStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileAttributesParser; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestFileSetStatMessageParser diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMakeDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMakeDirMessageParser.java index f917a435a..59f096346 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMakeDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMakeDirMessageParser.java @@ -8,7 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.parser.request; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMakeDirMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileAttributesParser; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestMakeDirMessageParser diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java index 9c2a7fcfc..5a8fd831b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileAttributesParser; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSetStatMessageParser.java index 37ecd5412..debeb2154 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSetStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSetStatMessageParser.java @@ -8,7 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.parser.request; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSetStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileAttributesParser; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestSetStatMessageParser diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseAttributesMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseAttributesMessageParser.java index f27682037..a6495705a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseAttributesMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseAttributesMessageParser.java @@ -8,7 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.parser.response; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.attribute.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileAttributesParser; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseAttributesMessageParser diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java index 2bd3a2f63..b09da0a3d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java @@ -9,6 +9,7 @@ import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileNameEntryParser; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -43,8 +44,8 @@ private void parseNameEntries() { nameEntryIndex < message.getCountNameEntries().getValue(); nameEntryIndex++, nameEntryStartPointer = getPointer()) { - SftpResponseNameEntryParser nameEntryParser = - new SftpResponseNameEntryParser(getArray(), nameEntryStartPointer, chooser); + SftpFileNameEntryParser nameEntryParser = + new SftpFileNameEntryParser(getArray(), nameEntryStartPointer, chooser); message.addNameEntry(nameEntryParser.parse()); setPointer(nameEntryParser.getPointer()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java index e69948720..2950fdc0f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java @@ -8,8 +8,8 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLinkSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestLinkSetStatMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java index 3f19a1148..d32283126 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariable; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpNameEntry; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseUsersGroupsByIdMessagePreparator @@ -34,15 +35,15 @@ public void prepareResponseSpecificContents() { .setUserNamesLength( getObject().getUserNames().size() * DataFormatConstants.UINT32_SIZE + getObject().getUserNames().stream() - .map(ModifiableVariable::getValue) - .mapToInt(String::length) + .map(SftpNameEntry::getNameLength) + .mapToInt(ModifiableVariable::getValue) .sum()); getObject() .setGroupNamesLength( getObject().getGroupNames().size() * DataFormatConstants.UINT32_SIZE + getObject().getGroupNames().stream() - .map(ModifiableVariable::getValue) - .mapToInt(String::length) + .map(SftpNameEntry::getNameLength) + .mapToInt(ModifiableVariable::getValue) .sum()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpAclEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpAclEntryPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java index 0b1b05ec2..de7daa75b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpAclEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.attribute; +package de.rub.nds.sshattacker.core.data.sftp.preperator.holder; import de.rub.nds.sshattacker.core.constants.SftpAceFlag; import de.rub.nds.sshattacker.core.constants.SftpAceMask; import de.rub.nds.sshattacker.core.constants.SftpAceType; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpAclEntry; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpAclEntry; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java index 909249ead..366524111 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileAttributesPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java @@ -5,15 +5,15 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.attribute; +package de.rub.nds.sshattacker.core.data.sftp.preperator.holder; import de.rub.nds.modifiablevariable.ModifiableVariable; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.constants.SftpFileType; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpAclEntry; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpAclEntry; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileExtendedAttribute; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java index ffa472261..1c5a927d0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/attribute/SftpFileExtendedAttributePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.attribute; +package de.rub.nds.sshattacker.core.data.sftp.preperator.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileExtendedAttribute; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameEntryPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java index 496d2d217..27fc93051 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java @@ -5,17 +5,17 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.preperator.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -public class SftpResponseNameEntryPreparator extends Preparator { +public class SftpFileNameEntryPreparator extends Preparator { - public SftpResponseNameEntryPreparator(Chooser chooser, SftpResponseNameEntry attribute) { - super(chooser, attribute); + public SftpFileNameEntryPreparator(Chooser chooser, SftpFileNameEntry nameEntry) { + super(chooser, nameEntry); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java new file mode 100644 index 000000000..823cf0779 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java @@ -0,0 +1,26 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.holder; + +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpIdEntry; +import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpIdEntryPreparator extends Preparator { + + public SftpIdEntryPreparator(Chooser chooser, SftpIdEntry idEntry) { + super(chooser, idEntry); + } + + @Override + public final void prepare() { + if (getObject().getId() == null) { + getObject().setId(1000); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java new file mode 100644 index 000000000..af02fd10c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java @@ -0,0 +1,29 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.preperator.holder; + +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpNameEntry; +import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpNameEntryPreparator extends Preparator { + + public SftpNameEntryPreparator(Chooser chooser, SftpNameEntry nameEntry) { + super(chooser, nameEntry); + } + + @Override + public final void prepare() { + if (getObject().getName() == null) { + getObject().setName("ssh-attacker", true); + } + if (getObject().getNameLength() == null) { + getObject().setNameLength(getObject().getName().getValue().length()); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java index eeffb1e4f..175410769 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java @@ -8,7 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileSetStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java index c99ad7924..7a54bd62b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java @@ -8,7 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMakeDirMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java index c7fafa45c..d42db3a52 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java index 5036dffb8..ea0814b19 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java @@ -8,7 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSetStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java index 72e8c5a7c..ba6601e8f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java @@ -8,7 +8,7 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java index f39652ecc..9d04eee7a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java @@ -26,10 +26,9 @@ private void serializeUserIdsLength() { LOGGER.debug("UserIdsLength: {}", userIdsLength); appendInt(userIdsLength, DataFormatConstants.UINT32_SIZE); - for (int i = 0; i < message.getUserIds().size(); i++) { - LOGGER.debug("UserId[{}]: {}", i, message.getUserIdsLength().getValue()); - appendInt(message.getUserIdsLength().getValue(), DataFormatConstants.UINT32_SIZE); - } + message.getUserIds() + .forEach( + userId -> appendBytes(userId.getHandler(null).getSerializer().serialize())); } private void serializeGroupIdsLength() { @@ -37,10 +36,10 @@ private void serializeGroupIdsLength() { LOGGER.debug("GroupIdsLength: {}", groupIdsLength); appendInt(groupIdsLength, DataFormatConstants.UINT32_SIZE); - for (int i = 0; i < message.getGroupIds().size(); i++) { - LOGGER.debug("GroupId[{}]: {}", i, message.getGroupIdsLength().getValue()); - appendInt(message.getGroupIdsLength().getValue(), DataFormatConstants.UINT32_SIZE); - } + message.getGroupIds() + .forEach( + groupId -> + appendBytes(groupId.getHandler(null).getSerializer().serialize())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java index 0459c2da8..18e9e7f50 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java @@ -7,13 +7,9 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response; -import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; - -import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUsersGroupsByIdMessage; import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseMessageSerializer; -import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -31,24 +27,23 @@ private void serializeUserNames() { Integer userNamesLength = message.getUserNamesLength().getValue(); LOGGER.debug("UserNames length: {}", userNamesLength); appendInt(userNamesLength, DataFormatConstants.STRING_SIZE_LENGTH); - for (ModifiableString userName : message.getUserNames()) { - LOGGER.debug("UserName length: {}", userName.getValue().length()); - appendInt(userName.getValue().length(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("UserName: {}", () -> backslashEscapeString(userName.getValue())); - appendString(userName.getValue(), StandardCharsets.UTF_8); - } + + message.getUserNames() + .forEach( + userName -> + appendBytes(userName.getHandler(null).getSerializer().serialize())); } private void serializeGroupNames() { Integer groupNamesLength = message.getGroupNamesLength().getValue(); LOGGER.debug("GroupNames length: {}", groupNamesLength); appendInt(groupNamesLength, DataFormatConstants.STRING_SIZE_LENGTH); - for (ModifiableString userName : message.getGroupNames()) { - LOGGER.debug("GroupName length: {}", userName.getValue().length()); - appendInt(userName.getValue().length(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("GroupName: {}", () -> backslashEscapeString(userName.getValue())); - appendString(userName.getValue(), StandardCharsets.UTF_8); - } + + message.getGroupNames() + .forEach( + groupName -> + appendBytes( + groupName.getHandler(null).getSerializer().serialize())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpAclEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpAclEntrySerializer.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpAclEntrySerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpAclEntrySerializer.java index b554f2e4c..ef1dc2954 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpAclEntrySerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpAclEntrySerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.attribute; +package de.rub.nds.sshattacker.core.data.sftp.serializer.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpAclEntry; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpAclEntry; import de.rub.nds.sshattacker.core.protocol.common.Serializer; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileAttributesSerializer.java similarity index 97% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileAttributesSerializer.java index c5e94569d..66c7cf744 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileAttributesSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileAttributesSerializer.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.attribute; +package de.rub.nds.sshattacker.core.data.sftp.serializer.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpFileType; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.Serializer; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileExtendedAttributeSerializer.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileExtendedAttributeSerializer.java index da436d1d2..58023cf3c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/attribute/SftpFileExtendedAttributeSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileExtendedAttributeSerializer.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.attribute; +package de.rub.nds.sshattacker.core.data.sftp.serializer.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.attribute.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileExtendedAttribute; import de.rub.nds.sshattacker.core.protocol.common.Serializer; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileNameEntrySerializer.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameEntrySerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileNameEntrySerializer.java index b5f60c930..c33190127 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameEntrySerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileNameEntrySerializer.java @@ -5,24 +5,24 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.response; +package de.rub.nds.sshattacker.core.data.sftp.serializer.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Serializer; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SftpResponseNameEntrySerializer extends Serializer { +public class SftpFileNameEntrySerializer extends Serializer { private static final Logger LOGGER = LogManager.getLogger(); - private final SftpResponseNameEntry nameEntry; + private final SftpFileNameEntry nameEntry; - public SftpResponseNameEntrySerializer(SftpResponseNameEntry nameEntry) { + public SftpFileNameEntrySerializer(SftpFileNameEntry nameEntry) { super(); this.nameEntry = nameEntry; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpIdEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpIdEntrySerializer.java new file mode 100644 index 000000000..9afcbb592 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpIdEntrySerializer.java @@ -0,0 +1,37 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.holder; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpIdEntry; +import de.rub.nds.sshattacker.core.protocol.common.Serializer; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpIdEntrySerializer extends Serializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpIdEntry idEntry; + + public SftpIdEntrySerializer(SftpIdEntry idEntry) { + super(); + this.idEntry = idEntry; + } + + private void serializeId() { + Integer id = idEntry.getId().getValue(); + LOGGER.debug("Id: {}", id); + appendInt(id, DataFormatConstants.UINT32_SIZE); + } + + @Override + protected final void serializeBytes() { + serializeId(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpNameEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpNameEntrySerializer.java new file mode 100644 index 000000000..2b7600173 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpNameEntrySerializer.java @@ -0,0 +1,43 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.serializer.holder; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpNameEntry; +import de.rub.nds.sshattacker.core.protocol.common.Serializer; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpNameEntrySerializer extends Serializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpNameEntry nameEntry; + + public SftpNameEntrySerializer(SftpNameEntry nameEntry) { + super(); + this.nameEntry = nameEntry; + } + + private void serializeName() { + Integer nameLength = nameEntry.getNameLength().getValue(); + LOGGER.debug("Name length: {}", nameLength); + appendInt(nameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String name = nameEntry.getName().getValue(); + LOGGER.debug("Name: {}", () -> backslashEscapeString(name)); + appendString(name, StandardCharsets.UTF_8); + } + + @Override + protected final void serializeBytes() { + serializeName(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java index 23dc6a8d3..d6f1fe641 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java @@ -31,6 +31,9 @@ public class ExtensionInfoMessage extends SshMessage { @XmlElement(type = ServerSigAlgsExtension.class, name = "ServerSigAlgsExtension"), @XmlElement(type = DelayCompressionExtension.class, name = "DelayCompressionExtension"), @XmlElement(type = PingExtension.class, name = "PingExtension"), + @XmlElement( + type = PublicKeyAlgorithmsRoumenPetrovExtension.class, + name = "PublicKeyAlgorithmsRoumenPetrovExtension"), @XmlElement(type = UnknownExtension.class, name = "UnknownExtension") }) private List> extensions = new ArrayList<>(); From dddfd18c72c192e7ecc70244dc93dd3c97e16c1f Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 25 Nov 2024 15:55:09 +0100 Subject: [PATCH 047/203] Fix all getAllModifiableVariableHolders() methods --- .../core/data/sftp/message/SftpHandshakeMessage.java | 4 +++- .../SftpRequestLinkSetStatMessage.java | 4 +++- .../data/sftp/message/holder/SftpFileAttributes.java | 10 ++++++++-- .../data/sftp/message/holder/SftpFileNameEntry.java | 4 +++- .../message/request/SftpRequestFileSetStatMessage.java | 4 +++- .../message/request/SftpRequestMakeDirMessage.java | 4 +++- .../message/request/SftpRequestSetStatMessage.java | 4 +++- .../response/SftpResponseAttributesMessage.java | 4 +++- .../sftp/message/response/SftpResponseNameMessage.java | 6 ++++-- .../transport/message/ExtensionInfoMessage.java | 5 ++++- 10 files changed, 37 insertions(+), 12 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java index 74317a50b..56af70099 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java @@ -80,7 +80,9 @@ public void addExtension(SftpAbstractExtension extension) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - holders.addAll(extensions); + if(extensions != null) { + holders.addAll(extensions); + } return holders; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java index e287364d4..293fa3f41 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java @@ -35,7 +35,9 @@ public SftpRequestLinkSetStatMessageHandler getHandler(SshContext context) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - holders.addAll(attributes.getAllModifiableVariableHolders()); + if (attributes != null) { + holders.addAll(attributes.getAllModifiableVariableHolders()); + } return holders; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java index 8b939b951..ff74d0d02 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java @@ -406,8 +406,14 @@ public void addAclEntry(SftpAclEntry aclEntry, boolean adjustLengthField) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - holders.addAll(extendedAttributes); - holders.addAll(aclEntries); + if(extendedAttributes != null) + { + holders.addAll(extendedAttributes); + } + if(aclEntries != null) + { + holders.addAll(aclEntries); + } return holders; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java index 73d607b94..e77f6c8ba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java @@ -127,7 +127,9 @@ public SftpFileNameEntryHandler getHandler(SshContext context) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - holders.addAll(attributes.getAllModifiableVariableHolders()); + if (attributes != null) { + holders.addAll(attributes.getAllModifiableVariableHolders()); + } return holders; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java index 59db3812c..d612c240c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java @@ -30,7 +30,9 @@ public void setAttributes(SftpFileAttributes attributes) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - holders.addAll(attributes.getAllModifiableVariableHolders()); + if (attributes != null) { + holders.addAll(attributes.getAllModifiableVariableHolders()); + } return holders; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java index 9c25900d1..8199408d3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java @@ -35,7 +35,9 @@ public SftpRequestMakeDirMessageHandler getHandler(SshContext context) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - holders.addAll(attributes.getAllModifiableVariableHolders()); + if (attributes != null) { + holders.addAll(attributes.getAllModifiableVariableHolders()); + } return holders; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java index 746d4edc7..68da9c0f5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java @@ -35,7 +35,9 @@ public SftpRequestSetStatMessageHandler getHandler(SshContext context) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - holders.addAll(attributes.getAllModifiableVariableHolders()); + if (attributes != null) { + holders.addAll(attributes.getAllModifiableVariableHolders()); + } return holders; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java index d639dbb86..654c4f3d0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java @@ -35,7 +35,9 @@ public SftpResponseAttributesMessageHandler getHandler(SshContext context) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - holders.addAll(attributes.getAllModifiableVariableHolders()); + if (attributes != null) { + holders.addAll(attributes.getAllModifiableVariableHolders()); + } return holders; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java index 7ac4153c8..aa5d242e9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java @@ -76,8 +76,10 @@ public SftpResponseNameMessageHandler getHandler(SshContext context) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - for (SftpFileNameEntry nameEntry : nameEntries) { - holders.addAll(nameEntry.getAllModifiableVariableHolders()); + if(nameEntries != null){ + for (SftpFileNameEntry nameEntry : nameEntries) { + holders.addAll(nameEntry.getAllModifiableVariableHolders()); + } } return holders; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java index d6f1fe641..288164a64 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java @@ -82,7 +82,10 @@ public ExtensionInfoMessageHandler getHandler(SshContext context) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - holders.addAll(extensions); + if(extensions != null) + { + holders.addAll(extensions); + } return holders; } } From a1682b7574ddd4eee9cf06b2797343ccd4e026e8 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 25 Nov 2024 15:59:05 +0100 Subject: [PATCH 048/203] run formatter --- .../core/data/sftp/message/SftpHandshakeMessage.java | 2 +- .../core/data/sftp/message/holder/SftpFileAttributes.java | 6 ++---- .../data/sftp/message/response/SftpResponseNameMessage.java | 2 +- .../protocol/transport/message/ExtensionInfoMessage.java | 3 +-- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java index 56af70099..da9179b43 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java @@ -80,7 +80,7 @@ public void addExtension(SftpAbstractExtension extension) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - if(extensions != null) { + if (extensions != null) { holders.addAll(extensions); } return holders; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java index ff74d0d02..02da94b3f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java @@ -406,12 +406,10 @@ public void addAclEntry(SftpAclEntry aclEntry, boolean adjustLengthField) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - if(extendedAttributes != null) - { + if (extendedAttributes != null) { holders.addAll(extendedAttributes); } - if(aclEntries != null) - { + if (aclEntries != null) { holders.addAll(aclEntries); } return holders; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java index aa5d242e9..a4837548d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java @@ -76,7 +76,7 @@ public SftpResponseNameMessageHandler getHandler(SshContext context) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - if(nameEntries != null){ + if (nameEntries != null) { for (SftpFileNameEntry nameEntry : nameEntries) { holders.addAll(nameEntry.getAllModifiableVariableHolders()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java index 288164a64..900df43b2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ExtensionInfoMessage.java @@ -82,8 +82,7 @@ public ExtensionInfoMessageHandler getHandler(SshContext context) { @Override public List getAllModifiableVariableHolders() { List holders = super.getAllModifiableVariableHolders(); - if(extensions != null) - { + if (extensions != null) { holders.addAll(extensions); } return holders; From 6f15f56c380e30ce2b3c6a222a338ec50c4ff1c7 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 27 Nov 2024 17:46:37 +0100 Subject: [PATCH 049/203] Fix getHandler() of all extended SftpRequests --- .../extended_request/SftpRequestCheckFileHandleMessage.java | 2 +- .../extended_request/SftpRequestCheckFileNameMessage.java | 2 +- .../message/extended_request/SftpRequestCopyDataMessage.java | 2 +- .../message/extended_request/SftpRequestCopyFileMessage.java | 2 +- .../message/extended_request/SftpRequestExpandPathMessage.java | 2 +- .../message/extended_request/SftpRequestFileStatVfsMessage.java | 2 +- .../message/extended_request/SftpRequestFileSyncMessage.java | 2 +- .../extended_request/SftpRequestGetTempFolderMessage.java | 2 +- .../message/extended_request/SftpRequestHardlinkMessage.java | 2 +- .../extended_request/SftpRequestHomeDirectoryMessage.java | 2 +- .../sftp/message/extended_request/SftpRequestLimitsMessage.java | 2 +- .../message/extended_request/SftpRequestLinkSetStatMessage.java | 2 +- .../extended_request/SftpRequestMakeTempFolderMessage.java | 2 +- .../message/extended_request/SftpRequestPosixRenameMessage.java | 2 +- .../extended_request/SftpRequestSpaceAvailableMessage.java | 2 +- .../message/extended_request/SftpRequestStatVfsMessage.java | 2 +- .../message/extended_request/SftpRequestTextSeekMessage.java | 2 +- .../message/extended_request/SftpRequestUnknownMessage.java | 2 +- .../extended_request/SftpRequestUsersGroupsByIdMessage.java | 2 +- .../message/extended_request/SftpRequestVendorIdMessage.java | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java index 9927ebbc6..be08fc5b6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java @@ -130,6 +130,6 @@ public void setBlockSize(int blockSize) { @Override public SftpRequestCheckFileHandleMessageHandler getHandler(SshContext context) { - return new SftpRequestCheckFileHandleMessageHandler(context); + return new SftpRequestCheckFileHandleMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java index ecd8b8489..5ac9743f2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java @@ -130,6 +130,6 @@ public void setBlockSize(int blockSize) { @Override public SftpRequestCheckFileNameMessageHandler getHandler(SshContext context) { - return new SftpRequestCheckFileNameMessageHandler(context); + return new SftpRequestCheckFileNameMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java index 6d04abf64..5d8750866 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java @@ -107,6 +107,6 @@ public void setWriteToOffset(long writeToOffset) { @Override public SftpRequestCopyDataMessageHandler getHandler(SshContext context) { - return new SftpRequestCopyDataMessageHandler(context); + return new SftpRequestCopyDataMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java index a2ed127c5..1ea7c9186 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java @@ -87,6 +87,6 @@ public void setDestinationPath(String destinationPath, boolean adjustLengthField @Override public SftpRequestCopyFileMessageHandler getHandler(SshContext context) { - return new SftpRequestCopyFileMessageHandler(context); + return new SftpRequestCopyFileMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExpandPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExpandPathMessage.java index 00cad72b4..eaa2b292c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExpandPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExpandPathMessage.java @@ -15,6 +15,6 @@ public class SftpRequestExpandPathMessage @Override public SftpRequestExpandPathMessageHandler getHandler(SshContext context) { - return new SftpRequestExpandPathMessageHandler(context); + return new SftpRequestExpandPathMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileStatVfsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileStatVfsMessage.java index ddf8f587f..85843601b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileStatVfsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileStatVfsMessage.java @@ -15,6 +15,6 @@ public class SftpRequestFileStatVfsMessage @Override public SftpRequestFileStatVfsMessageHandler getHandler(SshContext context) { - return new SftpRequestFileStatVfsMessageHandler(context); + return new SftpRequestFileStatVfsMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileSyncMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileSyncMessage.java index 839a5e2ad..b025e5b0a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileSyncMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileSyncMessage.java @@ -15,6 +15,6 @@ public class SftpRequestFileSyncMessage @Override public SftpRequestFileSyncMessageHandler getHandler(SshContext context) { - return new SftpRequestFileSyncMessageHandler(context); + return new SftpRequestFileSyncMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestGetTempFolderMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestGetTempFolderMessage.java index a27865071..99c3fbbb0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestGetTempFolderMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestGetTempFolderMessage.java @@ -15,6 +15,6 @@ public class SftpRequestGetTempFolderMessage @Override public SftpRequestGetTempFolderMessageHandler getHandler(SshContext context) { - return new SftpRequestGetTempFolderMessageHandler(context); + return new SftpRequestGetTempFolderMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java index c118a454a..caf34daf8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java @@ -63,6 +63,6 @@ public void setNewPath(String newPath, boolean adjustLengthField) { @Override public SftpRequestHardlinkMessageHandler getHandler(SshContext context) { - return new SftpRequestHardlinkMessageHandler(context); + return new SftpRequestHardlinkMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java index d5e45e8fa..31161601a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java @@ -61,6 +61,6 @@ public void setUsername(String username, boolean adjustLengthField) { @Override public SftpRequestHomeDirectoryMessageHandler getHandler(SshContext context) { - return new SftpRequestHomeDirectoryMessageHandler(context); + return new SftpRequestHomeDirectoryMessageHandler(context, this); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLimitsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLimitsMessage.java index 15a979c04..24b564603 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLimitsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLimitsMessage.java @@ -14,6 +14,6 @@ public class SftpRequestLimitsMessage extends SftpRequestExtendedMessage Date: Wed, 27 Nov 2024 18:11:49 +0100 Subject: [PATCH 050/203] Fix the check if a field is not set in the preparators: Used Regex-Replace: from: if \((getObject\(\).\w+\(\)) == null\) to: if ($1 == null || $1.getOriginalValue() == null) --- .../preperator/SftpInitMessagePreparator.java | 2 +- .../SftpUnknownMessagePreparator.java | 2 +- .../SftpVersionMessagePreparator.java | 2 +- ...questCheckFileHandleMessagePreparator.java | 10 +++--- ...RequestCheckFileNameMessagePreparator.java | 14 ++++---- .../SftpRequestCopyDataMessagePreparator.java | 6 ++-- .../SftpRequestCopyFileMessagePreparator.java | 10 +++--- ...ftpRequestExpandPathMessagePreparator.java | 4 +-- .../SftpRequestHardlinkMessagePreparator.java | 8 ++--- ...RequestHomeDirectoryMessagePreparator.java | 4 +-- ...tpRequestLinkSetStatMessagePreparator.java | 6 ++-- ...tpRequestPosixRenameMessagePreparator.java | 8 ++--- ...equestSpaceAvailableMessagePreparator.java | 4 +-- .../SftpRequestStatVfsMessagePreparator.java | 4 +-- .../SftpRequestTextSeekMessagePreparator.java | 2 +- .../SftpRequestUnknownMessagePreparator.java | 6 ++-- .../SftpRequestVendorIdMessagePreparator.java | 14 ++++---- ...ftpResponseCheckFileMessagePreparator.java | 6 ++-- .../SftpResponseLimitsMessagePreparator.java | 8 ++--- ...sponseSpaceAvailableMessagePreparator.java | 10 +++--- .../SftpResponseStatVfsMessagePreparator.java | 22 ++++++------ .../SftpResponseUnknownMessagePreparator.java | 2 +- .../SftpExtensionFileStatVfsPreparator.java | 2 +- .../SftpExtensionNewlinePreparator.java | 4 +-- .../SftpExtensionStatVfsPreparator.java | 2 +- .../SftpExtensionUnknownPreparator.java | 8 ++--- .../SftpExtensionVendorIdPreparator.java | 16 ++++----- .../SftpExtensionWithVersionPreparator.java | 4 +-- .../holder/SftpAclEntryPreparator.java | 10 +++--- .../holder/SftpFileAttributesPreparator.java | 34 +++++++++---------- .../SftpFileExtendedAttributePreparator.java | 8 ++--- .../holder/SftpFileNameEntryPreparator.java | 10 +++--- .../holder/SftpIdEntryPreparator.java | 2 +- .../holder/SftpNameEntryPreparator.java | 4 +-- ...tpRequestFileSetStatMessagePreparator.java | 2 +- .../SftpRequestFileStatMessagePreparator.java | 2 +- .../SftpRequestLinkStatMessagePreparator.java | 4 +-- .../SftpRequestMakeDirMessagePreparator.java | 6 ++-- .../SftpRequestOpenDirMessagePreparator.java | 4 +-- .../SftpRequestOpenMessagePreparator.java | 8 ++--- .../SftpRequestReadLinkMessagePreparator.java | 4 +-- .../SftpRequestReadMessagePreparator.java | 4 +-- .../SftpRequestRealPathMessagePreparator.java | 4 +-- ...SftpRequestRemoveDirMessagePreparator.java | 4 +-- .../SftpRequestRemoveMessagePreparator.java | 4 +-- .../SftpRequestRenameMessagePreparator.java | 8 ++--- .../SftpRequestSetStatMessagePreparator.java | 6 ++-- .../SftpRequestStatMessagePreparator.java | 6 ++-- ...pRequestSymbolicLinkMessagePreparator.java | 8 ++--- .../SftpRequestWriteMessagePreparator.java | 6 ++-- ...tpResponseAttributesMessagePreparator.java | 2 +- .../SftpResponseDataMessagePreparator.java | 4 +-- .../SftpResponseHandleMessagePreparator.java | 4 +-- .../SftpResponseMessagePreparator.java | 2 +- .../SftpResponseNameMessagePreparator.java | 2 +- .../SftpResponseStatusMessagePreparator.java | 10 +++--- 56 files changed, 181 insertions(+), 181 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java index da07e4938..3648f05df 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java @@ -19,7 +19,7 @@ public SftpInitMessagePreparator(Chooser chooser, SftpInitMessage message) { } public void prepareMessageSpecificContents() { - if (getObject().getVersion() == null) { + if (getObject().getVersion() == null || getObject().getVersion().getOriginalValue() == null) { getObject().setVersion(chooser.getSftpClientVersion()); } if (getObject().getExtensions().isEmpty()) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java index e7d669dff..f25a3d96f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java @@ -20,7 +20,7 @@ public SftpUnknownMessagePreparator(Chooser chooser, SftpUnknownMessage message) @Override public void prepareMessageSpecificContents() { - if (getObject().getPayload() == null) { + if (getObject().getPayload() == null || getObject().getPayload().getOriginalValue() == null) { getObject().setPayload(new byte[0]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java index c1f6d8c80..7a20ad004 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java @@ -19,7 +19,7 @@ public SftpVersionMessagePreparator(Chooser chooser, SftpVersionMessage message) } public void prepareMessageSpecificContents() { - if (getObject().getVersion() == null) { + if (getObject().getVersion() == null || getObject().getVersion().getOriginalValue() == null) { // Send own server version, but negotiate the version that is the lower if the two getObject().setVersion(chooser.getSftpServerVersion()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java index ea61e952f..0ee3d455b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java @@ -25,23 +25,23 @@ public SftpRequestCheckFileHandleMessagePreparator( public void prepareRequestExtendedSpecificContents() { getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); - if (getObject().getHashAlgorithms() == null) { + if (getObject().getHashAlgorithms() == null || getObject().getHashAlgorithms().getOriginalValue() == null) { getObject().setHashAlgorithms(List.of(HashAlgorithm.MD5, HashAlgorithm.SHA_1), true); } - if (getObject().getHashAlgorithmsLength() == null) { + if (getObject().getHashAlgorithmsLength() == null || getObject().getHashAlgorithmsLength().getOriginalValue() == null) { getObject() .setHashAlgorithmsLength(getObject().getHashAlgorithms().getValue().length()); } - if (getObject().getStartOffset() == null) { + if (getObject().getStartOffset() == null || getObject().getStartOffset().getOriginalValue() == null) { getObject().setStartOffset(0); } - if (getObject().getLength() == null) { + if (getObject().getLength() == null || getObject().getLength().getOriginalValue() == null) { getObject().setLength(100000); // 0 for all data } - if (getObject().getBlockSize() == null) { + if (getObject().getBlockSize() == null || getObject().getBlockSize().getOriginalValue() == null) { getObject().setBlockSize(512); // Should be >= 256 } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java index f7807d7aa..8a148e4c3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java @@ -23,30 +23,30 @@ public SftpRequestCheckFileNameMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getHashAlgorithms() == null) { + if (getObject().getHashAlgorithms() == null || getObject().getHashAlgorithms().getOriginalValue() == null) { getObject().setHashAlgorithms(List.of(HashAlgorithm.MD5, HashAlgorithm.SHA_1), true); } - if (getObject().getHashAlgorithmsLength() == null) { + if (getObject().getHashAlgorithmsLength() == null || getObject().getHashAlgorithmsLength().getOriginalValue() == null) { getObject() .setHashAlgorithmsLength(getObject().getHashAlgorithms().getValue().length()); } - if (getObject().getStartOffset() == null) { + if (getObject().getStartOffset() == null || getObject().getStartOffset().getOriginalValue() == null) { getObject().setStartOffset(0); } - if (getObject().getLength() == null) { + if (getObject().getLength() == null || getObject().getLength().getOriginalValue() == null) { getObject().setLength(100000); // 0 for all data } - if (getObject().getBlockSize() == null) { + if (getObject().getBlockSize() == null || getObject().getBlockSize().getOriginalValue() == null) { getObject().setBlockSize(512); // Should be >= 256 } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java index cae65db34..b6209fc4f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java @@ -23,17 +23,17 @@ public SftpRequestCopyDataMessagePreparator( public void prepareRequestExtendedSpecificContents() { getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); - if (getObject().getReadFromOffset() == null) { + if (getObject().getReadFromOffset() == null || getObject().getReadFromOffset().getOriginalValue() == null) { getObject().setReadFromOffset(0); } - if (getObject().getReadDataLength() == null) { + if (getObject().getReadDataLength() == null || getObject().getReadDataLength().getOriginalValue() == null) { getObject().setReadDataLength(1000000); } getObject().setWriteToHandle(chooser.getContext().getSftpManager().getFileHandle(), true); - if (getObject().getWriteToOffset() == null) { + if (getObject().getWriteToOffset() == null || getObject().getWriteToOffset().getOriginalValue() == null) { getObject().setWriteToOffset(0); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java index 4c828ed0a..a6ee44cb8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java @@ -21,22 +21,22 @@ public SftpRequestCopyFileMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getDestinationPath() == null) { + if (getObject().getDestinationPath() == null || getObject().getDestinationPath().getOriginalValue() == null) { getObject().setDestinationPath("/tmp/passwd", true); } - if (getObject().getDestinationPathLength() == null) { + if (getObject().getDestinationPathLength() == null || getObject().getDestinationPathLength().getOriginalValue() == null) { getObject() .setDestinationPathLength(getObject().getDestinationPath().getValue().length()); } - if (getObject().getOverwriteDestination() == null) { + if (getObject().getOverwriteDestination() == null || getObject().getOverwriteDestination().getOriginalValue() == null) { getObject().setOverwriteDestination(true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java index 5e10d029f..ff2abd120 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java @@ -21,10 +21,10 @@ public SftpRequestExpandPathMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("~/.config/passwd", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java index c7da80aaf..0def50482 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java @@ -21,17 +21,17 @@ public SftpRequestHardlinkMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getNewPath() == null) { + if (getObject().getNewPath() == null || getObject().getNewPath().getOriginalValue() == null) { getObject().setNewPath("/etc/passwd-new", true); } - if (getObject().getNewPathLength() == null) { + if (getObject().getNewPathLength() == null || getObject().getNewPathLength().getOriginalValue() == null) { getObject().setNewPathLength(getObject().getNewPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java index 7f8475fbd..686aba217 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java @@ -21,10 +21,10 @@ public SftpRequestHomeDirectoryMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getUsername() == null) { + if (getObject().getUsername() == null || getObject().getUsername().getOriginalValue() == null) { getObject().setUsername("ssh-attacker", true); } - if (getObject().getUsernameLength() == null) { + if (getObject().getUsernameLength() == null || getObject().getUsernameLength().getOriginalValue() == null) { getObject().setUsernameLength(getObject().getUsername().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java index 2950fdc0f..95c43c312 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java @@ -22,14 +22,14 @@ public SftpRequestLinkSetStatMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/bin/python3", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getAttributes() == null) { + if (getObject().getAttributes() == null || getObject().getAttributes().getOriginalValue() == null) { getObject().setAttributes(new SftpFileAttributes()); } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java index 8f27fbf9e..324063fd1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java @@ -21,17 +21,17 @@ public SftpRequestPosixRenameMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getNewPath() == null) { + if (getObject().getNewPath() == null || getObject().getNewPath().getOriginalValue() == null) { getObject().setNewPath("/etc/passwd-new", true); } - if (getObject().getNewPathLength() == null) { + if (getObject().getNewPathLength() == null || getObject().getNewPathLength().getOriginalValue() == null) { getObject().setNewPathLength(getObject().getNewPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java index 8e5eb13d1..48df5b884 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java @@ -21,10 +21,10 @@ public SftpRequestSpaceAvailableMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/tmp", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java index 21d5239bc..fbacfe3cc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java @@ -20,10 +20,10 @@ public SftpRequestStatVfsMessagePreparator(Chooser chooser, SftpRequestStatVfsMe @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java index 2caff70b5..3100e4348 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java @@ -23,7 +23,7 @@ public SftpRequestTextSeekMessagePreparator( public void prepareRequestExtendedSpecificContents() { getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); - if (getObject().getLineNumber() == null) { + if (getObject().getLineNumber() == null || getObject().getLineNumber().getOriginalValue() == null) { getObject().setLineNumber(0); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java index 7f000eecf..b848ae786 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java @@ -19,16 +19,16 @@ public SftpRequestUnknownMessagePreparator(Chooser chooser, SftpRequestUnknownMe @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getExtendedRequestName() == null) { + if (getObject().getExtendedRequestName() == null || getObject().getExtendedRequestName().getOriginalValue() == null) { getObject().setExtendedRequestName("hello-from@ssh-attacker.de"); } - if (getObject().getExtendedRequestNameLength() == null) { + if (getObject().getExtendedRequestNameLength() == null || getObject().getExtendedRequestNameLength().getOriginalValue() == null) { getObject() .setExtendedRequestNameLength( getObject().getExtendedRequestName().getValue().length()); } - if (getObject().getRequestSpecificData() == null) { + if (getObject().getRequestSpecificData() == null || getObject().getRequestSpecificData().getOriginalValue() == null) { getObject().setRequestSpecificData(new byte[100]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java index b115d31d6..68450385d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java @@ -21,29 +21,29 @@ public SftpRequestVendorIdMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getVendorName() == null) { + if (getObject().getVendorName() == null || getObject().getVendorName().getOriginalValue() == null) { getObject().setVendorName("NDS RUB", true); } - if (getObject().getVendorNameLength() == null) { + if (getObject().getVendorNameLength() == null || getObject().getVendorNameLength().getOriginalValue() == null) { getObject().setVendorNameLength(getObject().getVendorName().getValue().length()); } - if (getObject().getProductName() == null) { + if (getObject().getProductName() == null || getObject().getProductName().getOriginalValue() == null) { getObject().setProductName("SSH-Attacker", true); } - if (getObject().getProductNameLength() == null) { + if (getObject().getProductNameLength() == null || getObject().getProductNameLength().getOriginalValue() == null) { getObject().setProductNameLength(getObject().getProductName().getValue().length()); } - if (getObject().getProductVersion() == null) { + if (getObject().getProductVersion() == null || getObject().getProductVersion().getOriginalValue() == null) { getObject().setProductVersion("1.0", true); } - if (getObject().getProductVersionLength() == null) { + if (getObject().getProductVersionLength() == null || getObject().getProductVersionLength().getOriginalValue() == null) { getObject() .setProductVersionLength(getObject().getProductVersion().getValue().length()); } - if (getObject().getProductBuildNumber() == null) { + if (getObject().getProductBuildNumber() == null || getObject().getProductBuildNumber().getOriginalValue() == null) { getObject().setProductBuildNumber(2024); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java index 82e6cc655..b2fd70365 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java @@ -21,16 +21,16 @@ public SftpResponseCheckFileMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getUsedHashAlgorithm() == null) { + if (getObject().getUsedHashAlgorithm() == null || getObject().getUsedHashAlgorithm().getOriginalValue() == null) { getObject().setUsedHashAlgorithm(HashAlgorithm.MD5, true); } - if (getObject().getUsedHashAlgorithmLength() == null) { + if (getObject().getUsedHashAlgorithmLength() == null || getObject().getUsedHashAlgorithmLength().getOriginalValue() == null) { getObject() .setUsedHashAlgorithmLength( getObject().getUsedHashAlgorithm().getValue().length()); } - if (getObject().getHash() == null) { + if (getObject().getHash() == null || getObject().getHash().getOriginalValue() == null) { getObject().setHash(new byte[100]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java index 8616a024a..c5c32d0f7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java @@ -19,19 +19,19 @@ public SftpResponseLimitsMessagePreparator(Chooser chooser, SftpResponseLimitsMe @Override public void prepareResponseSpecificContents() { - if (getObject().getMaximumPacketLength() == null) { + if (getObject().getMaximumPacketLength() == null || getObject().getMaximumPacketLength().getOriginalValue() == null) { getObject().setMaximumPacketLength(100000); } - if (getObject().getMaximumReadLength() == null) { + if (getObject().getMaximumReadLength() == null || getObject().getMaximumReadLength().getOriginalValue() == null) { getObject().setMaximumReadLength(0); } - if (getObject().getMaximumWriteLength() == null) { + if (getObject().getMaximumWriteLength() == null || getObject().getMaximumWriteLength().getOriginalValue() == null) { getObject().setMaximumWriteLength(0); } - if (getObject().getMaximumOpenHandles() == null) { + if (getObject().getMaximumOpenHandles() == null || getObject().getMaximumOpenHandles().getOriginalValue() == null) { getObject().setMaximumOpenHandles(1); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java index 3f7483126..08f4f8625 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java @@ -20,23 +20,23 @@ public SftpResponseSpaceAvailableMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getBytesOnDevice() == null) { + if (getObject().getBytesOnDevice() == null || getObject().getBytesOnDevice().getOriginalValue() == null) { getObject().setBytesOnDevice(10000000001L); } - if (getObject().getUnusedBytesOnDevice() == null) { + if (getObject().getUnusedBytesOnDevice() == null || getObject().getUnusedBytesOnDevice().getOriginalValue() == null) { getObject().setUnusedBytesOnDevice(10); } - if (getObject().getBytesAvailableToUser() == null) { + if (getObject().getBytesAvailableToUser() == null || getObject().getBytesAvailableToUser().getOriginalValue() == null) { getObject().setBytesAvailableToUser(100); } - if (getObject().getUnusedBytesAvailableToUser() == null) { + if (getObject().getUnusedBytesAvailableToUser() == null || getObject().getUnusedBytesAvailableToUser().getOriginalValue() == null) { getObject().setUnusedBytesAvailableToUser(10); } - if (getObject().getBytesPerAllocationUnit() == null) { + if (getObject().getBytesPerAllocationUnit() == null || getObject().getBytesPerAllocationUnit().getOriginalValue() == null) { getObject().setBytesPerAllocationUnit(0); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java index 0f14eecd0..f48aa212d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java @@ -21,37 +21,37 @@ public SftpResponseStatVfsMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getBlockSize() == null) { + if (getObject().getBlockSize() == null || getObject().getBlockSize().getOriginalValue() == null) { getObject().setBlockSize(32); } - if (getObject().getFundamentalBlockSize() == null) { + if (getObject().getFundamentalBlockSize() == null || getObject().getFundamentalBlockSize().getOriginalValue() == null) { getObject().setFundamentalBlockSize(32); } - if (getObject().getCountBlocks() == null) { + if (getObject().getCountBlocks() == null || getObject().getCountBlocks().getOriginalValue() == null) { getObject().setCountBlocks(11608687979080L); } - if (getObject().getFreeBlocks() == null) { + if (getObject().getFreeBlocks() == null || getObject().getFreeBlocks().getOriginalValue() == null) { getObject().setFreeBlocks(11608687979080L); } - if (getObject().getFreeBlocksNonRoot() == null) { + if (getObject().getFreeBlocksNonRoot() == null || getObject().getFreeBlocksNonRoot().getOriginalValue() == null) { getObject().setFreeBlocksNonRoot(11608687979080L); } - if (getObject().getFileInodes() == null) { + if (getObject().getFileInodes() == null || getObject().getFileInodes().getOriginalValue() == null) { getObject().setFileInodes(0); } - if (getObject().getFreeInodes() == null) { + if (getObject().getFreeInodes() == null || getObject().getFreeInodes().getOriginalValue() == null) { getObject().setFreeInodes(11608687979080L); } - if (getObject().getFreeInodesNonRoot() == null) { + if (getObject().getFreeInodesNonRoot() == null || getObject().getFreeInodesNonRoot().getOriginalValue() == null) { getObject().setFreeInodesNonRoot(11608687979080L); } - if (getObject().getSystemId() == null) { + if (getObject().getSystemId() == null || getObject().getSystemId().getOriginalValue() == null) { getObject().setSystemId(0); } - if (getObject().getFlags() == null) { + if (getObject().getFlags() == null || getObject().getFlags().getOriginalValue() == null) { getObject().setFlags(SftpVfsFlag.SSH_FXE_STATVFS_ST_RDONLY); } - if (getObject().getMaximumFilenameLength() == null) { + if (getObject().getMaximumFilenameLength() == null || getObject().getMaximumFilenameLength().getOriginalValue() == null) { getObject().setMaximumFilenameLength(256); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java index df4d4abb6..a29159978 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java @@ -20,7 +20,7 @@ public SftpResponseUnknownMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getResponseSpecificData() == null) { + if (getObject().getResponseSpecificData() == null || getObject().getResponseSpecificData().getOriginalValue() == null) { getObject().setResponseSpecificData(new byte[100]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java index 7d96b070b..de8f01b89 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java @@ -21,7 +21,7 @@ public SftpExtensionFileStatVfsPreparator( @Override public void prepareExtensionSpecificContents() { - if (getObject().getVersion() == null) { + if (getObject().getVersion() == null || getObject().getVersion().getOriginalValue() == null) { getObject().setVersion("2", true); } super.prepareExtensionSpecificContents(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java index 62898cdff..64f7bb60f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java @@ -20,10 +20,10 @@ public SftpExtensionNewlinePreparator(Chooser chooser, SftpExtensionNewline exte @Override public void prepareExtensionSpecificContents() { - if (getObject().getNewlineSeperator() == null) { + if (getObject().getNewlineSeperator() == null || getObject().getNewlineSeperator().getOriginalValue() == null) { getObject().setNewlineSeperator("\n", true); } - if (getObject().getNewlineSeperatorLength() == null) { + if (getObject().getNewlineSeperatorLength() == null || getObject().getNewlineSeperatorLength().getOriginalValue() == null) { getObject() .setNewlineSeperatorLength( getObject().getNewlineSeperator().getValue().length()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java index 55e44721f..fb3286eaf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java @@ -21,7 +21,7 @@ public SftpExtensionStatVfsPreparator( @Override public void prepareExtensionSpecificContents() { - if (getObject().getVersion() == null) { + if (getObject().getVersion() == null || getObject().getVersion().getOriginalValue() == null) { getObject().setVersion("2", true); } super.prepareExtensionSpecificContents(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java index 0f33b5f4c..19a5bc94e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java @@ -19,17 +19,17 @@ public SftpExtensionUnknownPreparator(Chooser chooser, SftpExtensionUnknown exte @Override public void prepareExtensionSpecificContents() { - if (getObject().getName() == null) { + if (getObject().getName() == null || getObject().getName().getOriginalValue() == null) { getObject().setName("hello-from@ssh-attacker.de", true); } - if (getObject().getNameLength() == null) { + if (getObject().getNameLength() == null || getObject().getNameLength().getOriginalValue() == null) { getObject().setNameLength(getObject().getName().getValue().length()); } - if (getObject().getValue() == null) { + if (getObject().getValue() == null || getObject().getValue().getOriginalValue() == null) { getObject().setValue(new byte[100], true); } - if (getObject().getValueLength() == null) { + if (getObject().getValueLength() == null || getObject().getValueLength().getOriginalValue() == null) { getObject().setValueLength(getObject().getValue().getValue().length); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java index 5607d7332..f5381ffa3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java @@ -23,33 +23,33 @@ public SftpExtensionVendorIdPreparator(Chooser chooser, SftpExtensionVendorId ex public void prepareExtensionSpecificContents() { getObject().setName(SftpExtension.VENDOR_ID, true); - if (getObject().getVendorName() == null) { + if (getObject().getVendorName() == null || getObject().getVendorName().getOriginalValue() == null) { getObject().setVendorName("NDS RUB", true); } - if (getObject().getVendorNameLength() == null) { + if (getObject().getVendorNameLength() == null || getObject().getVendorNameLength().getOriginalValue() == null) { getObject().setVendorNameLength(getObject().getVendorName().getValue().length()); } - if (getObject().getProductName() == null) { + if (getObject().getProductName() == null || getObject().getProductName().getOriginalValue() == null) { getObject().setProductName("SSH-Attacker", true); } - if (getObject().getProductNameLength() == null) { + if (getObject().getProductNameLength() == null || getObject().getProductNameLength().getOriginalValue() == null) { getObject().setProductNameLength(getObject().getProductName().getValue().length()); } - if (getObject().getProductVersion() == null) { + if (getObject().getProductVersion() == null || getObject().getProductVersion().getOriginalValue() == null) { getObject().setProductVersion("1.0", true); } - if (getObject().getProductVersionLength() == null) { + if (getObject().getProductVersionLength() == null || getObject().getProductVersionLength().getOriginalValue() == null) { getObject() .setProductVersionLength(getObject().getProductVersion().getValue().length()); } - if (getObject().getProductBuildNumber() == null) { + if (getObject().getProductBuildNumber() == null || getObject().getProductBuildNumber().getOriginalValue() == null) { getObject().setProductBuildNumber(2024); } - if (getObject().getVendorStructureLength() == null) { + if (getObject().getVendorStructureLength() == null || getObject().getVendorStructureLength().getOriginalValue() == null) { getObject() .setVendorStructureLength( getObject().getVendorNameLength().getValue() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java index 0ba656e08..5ff27a12d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java @@ -26,10 +26,10 @@ public SftpExtensionWithVersionPreparator( public void prepareExtensionSpecificContents() { getObject().setName(extensionName, true); - if (getObject().getVersion() == null) { + if (getObject().getVersion() == null || getObject().getVersion().getOriginalValue() == null) { getObject().setVersion("1", true); } - if (getObject().getVersionLength() == null) { + if (getObject().getVersionLength() == null || getObject().getVersionLength().getOriginalValue() == null) { getObject().setVersionLength(getObject().getVersion().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java index de7daa75b..5c109d8ea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java @@ -22,20 +22,20 @@ public SftpAclEntryPreparator(Chooser chooser, SftpAclEntry aclEntry) { @Override public final void prepare() { - if (getObject().getType() == null) { + if (getObject().getType() == null || getObject().getType().getOriginalValue() == null) { getObject().setType(SftpAceType.ACE4_ACCESS_ALLOWED_ACE_TYPE); } - if (getObject().getFlags() == null) { + if (getObject().getFlags() == null || getObject().getFlags().getOriginalValue() == null) { getObject().setFlags(SftpAceFlag.ACE4_FILE_INHERIT_ACE); } - if (getObject().getMask() == null) { + if (getObject().getMask() == null || getObject().getMask().getOriginalValue() == null) { getObject().setMask(SftpAceMask.ACE4_ADD_FILE); } - if (getObject().getWho() == null) { + if (getObject().getWho() == null || getObject().getWho().getOriginalValue() == null) { getObject().setWho(chooser.getConfig().getUsername(), true); } - if (getObject().getWhoLength() == null) { + if (getObject().getWhoLength() == null || getObject().getWhoLength().getOriginalValue() == null) { getObject().setWhoLength(getObject().getWho().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java index 366524111..3ed6a3169 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java @@ -25,7 +25,7 @@ public SftpFileAttributesPreparator(Chooser chooser, SftpFileAttributes attribut @Override public final void prepare() { - if (getObject().getFlags() == null) { + if (getObject().getFlags() == null || getObject().getFlags().getOriginalValue() == null) { getObject() .setFlags( SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE, @@ -37,7 +37,7 @@ public final void prepare() { if (chooser.getSftpNegotiatedVersion() > 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { - if (getObject().getType() == null) { + if (getObject().getType() == null || getObject().getType().getOriginalValue() == null) { getObject().setType(SftpFileType.SSH_FILEXFER_TYPE_REGULAR); } } else { @@ -46,7 +46,7 @@ public final void prepare() { int flags = getObject().getFlags().getValue(); if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE)) { - if (getObject().getSize() == null) { + if (getObject().getSize() == null || getObject().getSize().getOriginalValue() == null) { getObject().setSize(0); } } else { @@ -56,17 +56,17 @@ public final void prepare() { if (chooser.getSftpNegotiatedVersion() > 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_OWNERGROUP)) { - if (getObject().getOwner() == null) { + if (getObject().getOwner() == null || getObject().getOwner().getOriginalValue() == null) { getObject().setOwner("ssh-attacker", true); } - if (getObject().getOwnerLength() == null) { + if (getObject().getOwnerLength() == null || getObject().getOwnerLength().getOriginalValue() == null) { getObject().setOwnerLength(getObject().getOwner().getValue().length()); } - if (getObject().getGroup() == null) { + if (getObject().getGroup() == null || getObject().getGroup().getOriginalValue() == null) { getObject().setGroup("nds", true); } - if (getObject().getGroupLength() == null) { + if (getObject().getGroupLength() == null || getObject().getGroupLength().getOriginalValue() == null) { getObject().setGroupLength(getObject().getGroup().getValue().length()); } } else { @@ -77,10 +77,10 @@ public final void prepare() { getObject().clearGroupId(); } else { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID)) { - if (getObject().getUserId() == null) { + if (getObject().getUserId() == null || getObject().getUserId().getOriginalValue() == null) { getObject().setUserId(0); } - if (getObject().getGroupId() == null) { + if (getObject().getGroupId() == null || getObject().getGroupId().getOriginalValue() == null) { getObject().setGroupId(0); } } else { @@ -92,7 +92,7 @@ public final void prepare() { } if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS)) { - if (getObject().getPermissions() == null) { + if (getObject().getPermissions() == null || getObject().getPermissions().getOriginalValue() == null) { getObject().setPermissions(0); } } else { @@ -102,14 +102,14 @@ public final void prepare() { if (chooser.getSftpNegotiatedVersion() > 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACCESSTIME)) { - if (getObject().getAccessTime() == null) { + if (getObject().getAccessTime() == null || getObject().getAccessTime().getOriginalValue() == null) { getObject().setAccessTime(0); } } else { getObject().clearAccessTime(); } if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_CREATETIME)) { - if (getObject().getCreateTime() == null) { + if (getObject().getCreateTime() == null || getObject().getCreateTime().getOriginalValue() == null) { getObject().setCreateTime(0); } } else { @@ -117,7 +117,7 @@ public final void prepare() { } if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_MODIFYTIME)) { - if (getObject().getModifyTime() == null) { + if (getObject().getModifyTime() == null || getObject().getModifyTime().getOriginalValue() == null) { getObject().setModifyTime(0); } } else { @@ -125,10 +125,10 @@ public final void prepare() { } } else { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME)) { - if (getObject().getAccessTime() == null) { + if (getObject().getAccessTime() == null || getObject().getAccessTime().getOriginalValue() == null) { getObject().setAccessTime(0); } - if (getObject().getModifyTime() == null) { + if (getObject().getModifyTime() == null || getObject().getModifyTime().getOriginalValue() == null) { getObject().setModifyTime(0); } } else { @@ -144,7 +144,7 @@ public final void prepare() { if (getObject().getAclEntries().isEmpty()) { getObject().addAclEntry(new SftpAclEntry()); } - if (getObject().getAclEntriesCount() == null) { + if (getObject().getAclEntriesCount() == null || getObject().getAclEntriesCount().getOriginalValue() == null) { getObject().setAclEntriesCount(getObject().getAclEntries().size()); } getObject() @@ -175,7 +175,7 @@ public final void prepare() { if (getObject().getExtendedAttributes().isEmpty()) { getObject().addExtendedAttribute(new SftpFileExtendedAttribute()); } - if (getObject().getExtendedCount() == null) { + if (getObject().getExtendedCount() == null || getObject().getExtendedCount().getOriginalValue() == null) { getObject().setExtendedCount(getObject().getExtendedAttributes().size()); } getObject() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java index 1c5a927d0..7edf69c6a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java @@ -20,17 +20,17 @@ public SftpFileExtendedAttributePreparator( @Override public final void prepare() { - if (getObject().getType() == null) { + if (getObject().getType() == null || getObject().getType().getOriginalValue() == null) { getObject().setType("hello-from@ssh-attacker.de", true); } - if (getObject().getTypeLength() == null) { + if (getObject().getTypeLength() == null || getObject().getTypeLength().getOriginalValue() == null) { getObject().setTypeLength(getObject().getType().getValue().length()); } - if (getObject().getData() == null) { + if (getObject().getData() == null || getObject().getData().getOriginalValue() == null) { getObject().setData(new byte[100], true); } - if (getObject().getDataLength() == null) { + if (getObject().getDataLength() == null || getObject().getDataLength().getOriginalValue() == null) { getObject().setDataLength(getObject().getData().getValue().length); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java index 27fc93051..b6116c187 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java @@ -20,22 +20,22 @@ public SftpFileNameEntryPreparator(Chooser chooser, SftpFileNameEntry nameEntry) @Override public final void prepare() { - if (getObject().getFilename() == null) { + if (getObject().getFilename() == null || getObject().getFilename().getOriginalValue() == null) { getObject().setFilename("/etc/passwd", true); } - if (getObject().getFilenameLength() == null) { + if (getObject().getFilenameLength() == null || getObject().getFilenameLength().getOriginalValue() == null) { getObject().setFilenameLength(getObject().getFilename().getValue().length()); } if (chooser.getSftpNegotiatedVersion() <= 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { - if (getObject().getLongName() == null) { + if (getObject().getLongName() == null || getObject().getLongName().getOriginalValue() == null) { getObject() .setLongName( "-rwxr-xr-x 1 ssh attacker 348911 Mar 25 14:29 passwd", true); } - if (getObject().getLongNameLength() == null) { + if (getObject().getLongNameLength() == null || getObject().getLongNameLength().getOriginalValue() == null) { getObject().setLongNameLength(getObject().getLongName().getValue().length()); } } else { @@ -43,7 +43,7 @@ public final void prepare() { getObject().clearLongName(); } - if (getObject().getAttributes() == null) { + if (getObject().getAttributes() == null || getObject().getAttributes().getOriginalValue() == null) { getObject().setAttributes(new SftpFileAttributes()); } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java index 823cf0779..d66b2f872 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java @@ -19,7 +19,7 @@ public SftpIdEntryPreparator(Chooser chooser, SftpIdEntry idEntry) { @Override public final void prepare() { - if (getObject().getId() == null) { + if (getObject().getId() == null || getObject().getId().getOriginalValue() == null) { getObject().setId(1000); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java index af02fd10c..81c6a6d63 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java @@ -19,10 +19,10 @@ public SftpNameEntryPreparator(Chooser chooser, SftpNameEntry nameEntry) { @Override public final void prepare() { - if (getObject().getName() == null) { + if (getObject().getName() == null || getObject().getName().getOriginalValue() == null) { getObject().setName("ssh-attacker", true); } - if (getObject().getNameLength() == null) { + if (getObject().getNameLength() == null || getObject().getNameLength().getOriginalValue() == null) { getObject().setNameLength(getObject().getName().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java index 175410769..2cca3e4de 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java @@ -25,7 +25,7 @@ public void prepareRequestSpecificContents() { getObject() .setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); - if (getObject().getAttributes() == null) { + if (getObject().getAttributes() == null || getObject().getAttributes().getOriginalValue() == null) { getObject().setAttributes(new SftpFileAttributes()); } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java index 7b584cfba..88e6d99ee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java @@ -27,7 +27,7 @@ public void prepareRequestSpecificContents() { if (chooser.getSftpNegotiatedVersion() > 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { - if (getObject().getFlags() == null) { + if (getObject().getFlags() == null || getObject().getFlags().getOriginalValue() == null) { getObject().setFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); } } else { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java index fc145876e..bf49cd2cc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java @@ -21,10 +21,10 @@ public SftpRequestLinkStatMessagePreparator( @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/bin/python3", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java index 7a54bd62b..936bed755 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java @@ -21,14 +21,14 @@ public SftpRequestMakeDirMessagePreparator(Chooser chooser, SftpRequestMakeDirMe @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/tmp/ssh-attacker/", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getAttributes() == null) { + if (getObject().getAttributes() == null || getObject().getAttributes().getOriginalValue() == null) { getObject().setAttributes(new SftpFileAttributes()); } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java index 8784bedd9..0cc7a2cc7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java @@ -20,10 +20,10 @@ public SftpRequestOpenDirMessagePreparator(Chooser chooser, SftpRequestOpenDirMe @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/tmp/", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java index d42db3a52..799135216 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java @@ -22,17 +22,17 @@ public SftpRequestOpenMessagePreparator(Chooser chooser, SftpRequestOpenMessage @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getPFlags() == null) { + if (getObject().getPFlags() == null || getObject().getPFlags().getOriginalValue() == null) { getObject().setPFlags(SftpFileOpenFlag.SSH_FXF_READ); } - if (getObject().getAttributes() == null) { + if (getObject().getAttributes() == null || getObject().getAttributes().getOriginalValue() == null) { getObject().setAttributes(new SftpFileAttributes()); } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java index f705252fc..845f63f06 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java @@ -21,10 +21,10 @@ public SftpRequestReadLinkMessagePreparator( @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/bin/python3", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java index bf96e950e..c16a437d8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java @@ -22,11 +22,11 @@ public SftpRequestReadMessagePreparator(Chooser chooser, SftpRequestReadMessage public void prepareRequestSpecificContents() { getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); - if (getObject().getOffset() == null) { + if (getObject().getOffset() == null || getObject().getOffset().getOriginalValue() == null) { getObject().setOffset(0); } - if (getObject().getLength() == null) { + if (getObject().getLength() == null || getObject().getLength().getOriginalValue() == null) { getObject().setLength(100000000); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java index 5aa4be235..883f79bc6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java @@ -21,10 +21,10 @@ public SftpRequestRealPathMessagePreparator( @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/tmp/../etc/./passwd", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java index 038ae23d3..a3cd27711 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java @@ -20,10 +20,10 @@ public SftpRequestRemoveDirMessagePreparator(Chooser chooser, SftpRequestRmdirMe } public void prepareMessageSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/tmp/ssh-attacker", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java index 629089591..68b8859c6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java @@ -20,10 +20,10 @@ public SftpRequestRemoveMessagePreparator(Chooser chooser, SftpRequestRemoveMess @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java index 9b3330faf..eaf4403c9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java @@ -20,17 +20,17 @@ public SftpRequestRenameMessagePreparator(Chooser chooser, SftpRequestRenameMess @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getNewPath() == null) { + if (getObject().getNewPath() == null || getObject().getNewPath().getOriginalValue() == null) { getObject().setNewPath("/tmp/passwd-win", true); } - if (getObject().getNewPathLength() == null) { + if (getObject().getNewPathLength() == null || getObject().getNewPathLength().getOriginalValue() == null) { getObject().setNewPathLength(getObject().getNewPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java index ea0814b19..e5c3f7e9b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java @@ -21,14 +21,14 @@ public SftpRequestSetStatMessagePreparator(Chooser chooser, SftpRequestSetStatMe @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/tmp/ssh-attacker", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getAttributes() == null) { + if (getObject().getAttributes() == null || getObject().getAttributes().getOriginalValue() == null) { getObject().setAttributes(new SftpFileAttributes()); } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java index e11a464e4..dc89d1fc9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java @@ -21,16 +21,16 @@ public SftpRequestStatMessagePreparator(Chooser chooser, SftpRequestStatMessage @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } if (chooser.getSftpNegotiatedVersion() > 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { - if (getObject().getFlags() == null) { + if (getObject().getFlags() == null || getObject().getFlags().getOriginalValue() == null) { getObject().setFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); } } else { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java index 478950a6e..685bdf147 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java @@ -21,17 +21,17 @@ public SftpRequestSymbolicLinkMessagePreparator( @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null) { + if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/bin/sh", true); } - if (getObject().getPathLength() == null) { + if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getTargetPath() == null) { + if (getObject().getTargetPath() == null || getObject().getTargetPath().getOriginalValue() == null) { getObject().setTargetPath("/tmp/ssh-attacker-sh", true); } - if (getObject().getTargetPathLength() == null) { + if (getObject().getTargetPathLength() == null || getObject().getTargetPathLength().getOriginalValue() == null) { getObject().setTargetPathLength(getObject().getTargetPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java index 2eb37dbf9..10e15eeda 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java @@ -22,14 +22,14 @@ public SftpRequestWriteMessagePreparator(Chooser chooser, SftpRequestWriteMessag public void prepareRequestSpecificContents() { getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); - if (getObject().getOffset() == null) { + if (getObject().getOffset() == null || getObject().getOffset().getOriginalValue() == null) { getObject().setOffset(0); } - if (getObject().getData() == null) { + if (getObject().getData() == null || getObject().getData().getOriginalValue() == null) { getObject().setData(new byte[100], true); } - if (getObject().getDataLength() == null) { + if (getObject().getDataLength() == null || getObject().getDataLength().getOriginalValue() == null) { getObject().setDataLength(getObject().getData().getValue().length); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java index ba6601e8f..4c125ae13 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java @@ -22,7 +22,7 @@ public SftpResponseAttributesMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getAttributes() == null) { + if (getObject().getAttributes() == null || getObject().getAttributes().getOriginalValue() == null) { getObject().setAttributes(new SftpFileAttributes()); } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java index acf611afe..b50f49c93 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java @@ -20,10 +20,10 @@ public SftpResponseDataMessagePreparator(Chooser chooser, SftpResponseDataMessag @Override public void prepareResponseSpecificContents() { - if (getObject().getData() == null) { + if (getObject().getData() == null || getObject().getData().getOriginalValue() == null) { getObject().setData(new byte[100], true); } - if (getObject().getDataLength() == null) { + if (getObject().getDataLength() == null || getObject().getDataLength().getOriginalValue() == null) { getObject().setDataLength(getObject().getData().getValue().length); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java index d2d6b49ab..2f9a0b2bf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java @@ -20,11 +20,11 @@ public SftpResponseHandleMessagePreparator(Chooser chooser, SftpResponseHandleMe @Override public void prepareResponseSpecificContents() { - if (getObject().getHandle() == null) { + if (getObject().getHandle() == null || getObject().getHandle().getOriginalValue() == null) { // Should be set in SftpManager handleRequestMessage() getObject().setHandle(new byte[100], true); } - if (getObject().getHandleLength() == null) { + if (getObject().getHandleLength() == null || getObject().getHandleLength().getOriginalValue() == null) { getObject().setHandleLength(getObject().getHandle().getValue().length); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java index d26dea398..c9a214cf9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java @@ -22,7 +22,7 @@ protected SftpResponseMessagePreparator( public void prepareMessageSpecificContents() { // Request identifier should be set by SftpManager in handleRequestMessage() - if (getObject().getRequestId() == null) { + if (getObject().getRequestId() == null || getObject().getRequestId().getOriginalValue() == null) { getObject().setRequestId(chooser.getContext().getSftpManager().getNextRequestId()); } prepareResponseSpecificContents(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java index e832affdb..6acd21dec 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java @@ -20,7 +20,7 @@ public SftpResponseNameMessagePreparator(Chooser chooser, SftpResponseNameMessag @Override public void prepareResponseSpecificContents() { - if (getObject().getCountNameEntries() == null) { + if (getObject().getCountNameEntries() == null || getObject().getCountNameEntries().getOriginalValue() == null) { getObject().setCountNameEntries(0); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java index 5979a3c54..fa6914e40 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java @@ -21,21 +21,21 @@ public SftpResponseStatusMessagePreparator(Chooser chooser, SftpResponseStatusMe @Override public void prepareResponseSpecificContents() { - if (getObject().getStatusCode() == null) { + if (getObject().getStatusCode() == null || getObject().getStatusCode().getOriginalValue() == null) { getObject().setStatusCode(SftpStatusCode.SSH_FX_OK); } - if (getObject().getErrorMessage() == null) { + if (getObject().getErrorMessage() == null || getObject().getErrorMessage().getOriginalValue() == null) { getObject().setErrorMessage("SSH-Attacker sagt NEIN!", true); } - if (getObject().getErrorMessageLength() == null) { + if (getObject().getErrorMessageLength() == null || getObject().getErrorMessageLength().getOriginalValue() == null) { getObject().setErrorMessageLength(getObject().getErrorMessage().getValue().length()); } - if (getObject().getLanguageTag() == null) { + if (getObject().getLanguageTag() == null || getObject().getLanguageTag().getOriginalValue() == null) { getObject().setLanguageTag("de", true); } - if (getObject().getLanguageTagLength() == null) { + if (getObject().getLanguageTagLength() == null || getObject().getLanguageTagLength().getOriginalValue() == null) { getObject().setLanguageTagLength(getObject().getLanguageTag().getValue().length()); } } From 05600a1d8b720cdb912ac48599d6ceae68f40110 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 27 Nov 2024 18:14:59 +0100 Subject: [PATCH 051/203] run formatter --- .../preperator/SftpInitMessagePreparator.java | 3 +- .../SftpUnknownMessagePreparator.java | 3 +- .../SftpVersionMessagePreparator.java | 3 +- ...questCheckFileHandleMessagePreparator.java | 12 ++++-- ...RequestCheckFileNameMessagePreparator.java | 15 ++++--- .../SftpRequestCopyDataMessagePreparator.java | 9 ++-- .../SftpRequestCopyFileMessagePreparator.java | 12 ++++-- ...ftpRequestExpandPathMessagePreparator.java | 3 +- .../SftpRequestHardlinkMessagePreparator.java | 9 ++-- ...RequestHomeDirectoryMessagePreparator.java | 6 ++- ...tpRequestLinkSetStatMessagePreparator.java | 5 ++- ...tpRequestPosixRenameMessagePreparator.java | 9 ++-- ...equestSpaceAvailableMessagePreparator.java | 3 +- .../SftpRequestStatVfsMessagePreparator.java | 3 +- .../SftpRequestTextSeekMessagePreparator.java | 3 +- .../SftpRequestUnknownMessagePreparator.java | 9 ++-- .../SftpRequestVendorIdMessagePreparator.java | 21 ++++++---- ...ftpResponseCheckFileMessagePreparator.java | 6 ++- .../SftpResponseLimitsMessagePreparator.java | 12 ++++-- ...sponseSpaceAvailableMessagePreparator.java | 15 ++++--- .../SftpResponseStatVfsMessagePreparator.java | 30 ++++++++----- .../SftpResponseUnknownMessagePreparator.java | 3 +- .../SftpExtensionFileStatVfsPreparator.java | 3 +- .../SftpExtensionNewlinePreparator.java | 6 ++- .../SftpExtensionStatVfsPreparator.java | 3 +- .../SftpExtensionUnknownPreparator.java | 6 ++- .../SftpExtensionVendorIdPreparator.java | 24 +++++++---- .../SftpExtensionWithVersionPreparator.java | 6 ++- .../holder/SftpAclEntryPreparator.java | 3 +- .../holder/SftpFileAttributesPreparator.java | 42 ++++++++++++------- .../SftpFileExtendedAttributePreparator.java | 6 ++- .../holder/SftpFileNameEntryPreparator.java | 14 ++++--- .../holder/SftpNameEntryPreparator.java | 3 +- ...tpRequestFileSetStatMessagePreparator.java | 2 +- .../SftpRequestFileStatMessagePreparator.java | 3 +- .../SftpRequestLinkStatMessagePreparator.java | 3 +- .../SftpRequestMakeDirMessagePreparator.java | 5 ++- .../SftpRequestOpenDirMessagePreparator.java | 3 +- .../SftpRequestOpenMessagePreparator.java | 5 ++- .../SftpRequestReadLinkMessagePreparator.java | 3 +- .../SftpRequestRealPathMessagePreparator.java | 3 +- ...SftpRequestRemoveDirMessagePreparator.java | 3 +- .../SftpRequestRemoveMessagePreparator.java | 3 +- .../SftpRequestRenameMessagePreparator.java | 9 ++-- .../SftpRequestSetStatMessagePreparator.java | 5 ++- .../SftpRequestStatMessagePreparator.java | 6 ++- ...pRequestSymbolicLinkMessagePreparator.java | 9 ++-- .../SftpRequestWriteMessagePreparator.java | 3 +- ...tpResponseAttributesMessagePreparator.java | 2 +- .../SftpResponseDataMessagePreparator.java | 3 +- .../SftpResponseHandleMessagePreparator.java | 3 +- .../SftpResponseMessagePreparator.java | 3 +- .../SftpResponseNameMessagePreparator.java | 3 +- .../SftpResponseStatusMessagePreparator.java | 15 ++++--- 54 files changed, 267 insertions(+), 137 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java index 3648f05df..49d6b3b62 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java @@ -19,7 +19,8 @@ public SftpInitMessagePreparator(Chooser chooser, SftpInitMessage message) { } public void prepareMessageSpecificContents() { - if (getObject().getVersion() == null || getObject().getVersion().getOriginalValue() == null) { + if (getObject().getVersion() == null + || getObject().getVersion().getOriginalValue() == null) { getObject().setVersion(chooser.getSftpClientVersion()); } if (getObject().getExtensions().isEmpty()) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java index f25a3d96f..70ff7ca3a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java @@ -20,7 +20,8 @@ public SftpUnknownMessagePreparator(Chooser chooser, SftpUnknownMessage message) @Override public void prepareMessageSpecificContents() { - if (getObject().getPayload() == null || getObject().getPayload().getOriginalValue() == null) { + if (getObject().getPayload() == null + || getObject().getPayload().getOriginalValue() == null) { getObject().setPayload(new byte[0]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java index 7a20ad004..faac7e96c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java @@ -19,7 +19,8 @@ public SftpVersionMessagePreparator(Chooser chooser, SftpVersionMessage message) } public void prepareMessageSpecificContents() { - if (getObject().getVersion() == null || getObject().getVersion().getOriginalValue() == null) { + if (getObject().getVersion() == null + || getObject().getVersion().getOriginalValue() == null) { // Send own server version, but negotiate the version that is the lower if the two getObject().setVersion(chooser.getSftpServerVersion()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java index 0ee3d455b..cd83c6ffa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java @@ -25,15 +25,18 @@ public SftpRequestCheckFileHandleMessagePreparator( public void prepareRequestExtendedSpecificContents() { getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); - if (getObject().getHashAlgorithms() == null || getObject().getHashAlgorithms().getOriginalValue() == null) { + if (getObject().getHashAlgorithms() == null + || getObject().getHashAlgorithms().getOriginalValue() == null) { getObject().setHashAlgorithms(List.of(HashAlgorithm.MD5, HashAlgorithm.SHA_1), true); } - if (getObject().getHashAlgorithmsLength() == null || getObject().getHashAlgorithmsLength().getOriginalValue() == null) { + if (getObject().getHashAlgorithmsLength() == null + || getObject().getHashAlgorithmsLength().getOriginalValue() == null) { getObject() .setHashAlgorithmsLength(getObject().getHashAlgorithms().getValue().length()); } - if (getObject().getStartOffset() == null || getObject().getStartOffset().getOriginalValue() == null) { + if (getObject().getStartOffset() == null + || getObject().getStartOffset().getOriginalValue() == null) { getObject().setStartOffset(0); } @@ -41,7 +44,8 @@ public void prepareRequestExtendedSpecificContents() { getObject().setLength(100000); // 0 for all data } - if (getObject().getBlockSize() == null || getObject().getBlockSize().getOriginalValue() == null) { + if (getObject().getBlockSize() == null + || getObject().getBlockSize().getOriginalValue() == null) { getObject().setBlockSize(512); // Should be >= 256 } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java index 8a148e4c3..7aeb54d0f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java @@ -26,19 +26,23 @@ public void prepareRequestExtendedSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getHashAlgorithms() == null || getObject().getHashAlgorithms().getOriginalValue() == null) { + if (getObject().getHashAlgorithms() == null + || getObject().getHashAlgorithms().getOriginalValue() == null) { getObject().setHashAlgorithms(List.of(HashAlgorithm.MD5, HashAlgorithm.SHA_1), true); } - if (getObject().getHashAlgorithmsLength() == null || getObject().getHashAlgorithmsLength().getOriginalValue() == null) { + if (getObject().getHashAlgorithmsLength() == null + || getObject().getHashAlgorithmsLength().getOriginalValue() == null) { getObject() .setHashAlgorithmsLength(getObject().getHashAlgorithms().getValue().length()); } - if (getObject().getStartOffset() == null || getObject().getStartOffset().getOriginalValue() == null) { + if (getObject().getStartOffset() == null + || getObject().getStartOffset().getOriginalValue() == null) { getObject().setStartOffset(0); } @@ -46,7 +50,8 @@ public void prepareRequestExtendedSpecificContents() { getObject().setLength(100000); // 0 for all data } - if (getObject().getBlockSize() == null || getObject().getBlockSize().getOriginalValue() == null) { + if (getObject().getBlockSize() == null + || getObject().getBlockSize().getOriginalValue() == null) { getObject().setBlockSize(512); // Should be >= 256 } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java index b6209fc4f..cea9c6065 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java @@ -23,17 +23,20 @@ public SftpRequestCopyDataMessagePreparator( public void prepareRequestExtendedSpecificContents() { getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); - if (getObject().getReadFromOffset() == null || getObject().getReadFromOffset().getOriginalValue() == null) { + if (getObject().getReadFromOffset() == null + || getObject().getReadFromOffset().getOriginalValue() == null) { getObject().setReadFromOffset(0); } - if (getObject().getReadDataLength() == null || getObject().getReadDataLength().getOriginalValue() == null) { + if (getObject().getReadDataLength() == null + || getObject().getReadDataLength().getOriginalValue() == null) { getObject().setReadDataLength(1000000); } getObject().setWriteToHandle(chooser.getContext().getSftpManager().getFileHandle(), true); - if (getObject().getWriteToOffset() == null || getObject().getWriteToOffset().getOriginalValue() == null) { + if (getObject().getWriteToOffset() == null + || getObject().getWriteToOffset().getOriginalValue() == null) { getObject().setWriteToOffset(0); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java index a6ee44cb8..5a950fee3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java @@ -24,19 +24,23 @@ public void prepareRequestExtendedSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getDestinationPath() == null || getObject().getDestinationPath().getOriginalValue() == null) { + if (getObject().getDestinationPath() == null + || getObject().getDestinationPath().getOriginalValue() == null) { getObject().setDestinationPath("/tmp/passwd", true); } - if (getObject().getDestinationPathLength() == null || getObject().getDestinationPathLength().getOriginalValue() == null) { + if (getObject().getDestinationPathLength() == null + || getObject().getDestinationPathLength().getOriginalValue() == null) { getObject() .setDestinationPathLength(getObject().getDestinationPath().getValue().length()); } - if (getObject().getOverwriteDestination() == null || getObject().getOverwriteDestination().getOriginalValue() == null) { + if (getObject().getOverwriteDestination() == null + || getObject().getOverwriteDestination().getOriginalValue() == null) { getObject().setOverwriteDestination(true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java index ff2abd120..7d8296e60 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java @@ -24,7 +24,8 @@ public void prepareRequestExtendedSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("~/.config/passwd", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java index 0def50482..de264dfa9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java @@ -24,14 +24,17 @@ public void prepareRequestExtendedSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getNewPath() == null || getObject().getNewPath().getOriginalValue() == null) { + if (getObject().getNewPath() == null + || getObject().getNewPath().getOriginalValue() == null) { getObject().setNewPath("/etc/passwd-new", true); } - if (getObject().getNewPathLength() == null || getObject().getNewPathLength().getOriginalValue() == null) { + if (getObject().getNewPathLength() == null + || getObject().getNewPathLength().getOriginalValue() == null) { getObject().setNewPathLength(getObject().getNewPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java index 686aba217..4663067d7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java @@ -21,10 +21,12 @@ public SftpRequestHomeDirectoryMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getUsername() == null || getObject().getUsername().getOriginalValue() == null) { + if (getObject().getUsername() == null + || getObject().getUsername().getOriginalValue() == null) { getObject().setUsername("ssh-attacker", true); } - if (getObject().getUsernameLength() == null || getObject().getUsernameLength().getOriginalValue() == null) { + if (getObject().getUsernameLength() == null + || getObject().getUsernameLength().getOriginalValue() == null) { getObject().setUsernameLength(getObject().getUsername().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java index 95c43c312..36fff2722 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java @@ -26,10 +26,11 @@ public void prepareRequestExtendedSpecificContents() { getObject().setPath("/bin/python3", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getAttributes() == null || getObject().getAttributes().getOriginalValue() == null) { + if (getObject().getAttributes() == null) { getObject().setAttributes(new SftpFileAttributes()); } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java index 324063fd1..3cdc54186 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java @@ -24,14 +24,17 @@ public void prepareRequestExtendedSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getNewPath() == null || getObject().getNewPath().getOriginalValue() == null) { + if (getObject().getNewPath() == null + || getObject().getNewPath().getOriginalValue() == null) { getObject().setNewPath("/etc/passwd-new", true); } - if (getObject().getNewPathLength() == null || getObject().getNewPathLength().getOriginalValue() == null) { + if (getObject().getNewPathLength() == null + || getObject().getNewPathLength().getOriginalValue() == null) { getObject().setNewPathLength(getObject().getNewPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java index 48df5b884..b4a1f9c91 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java @@ -24,7 +24,8 @@ public void prepareRequestExtendedSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/tmp", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java index fbacfe3cc..c65bfe8a0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java @@ -23,7 +23,8 @@ public void prepareRequestExtendedSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java index 3100e4348..3f935b5bf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java @@ -23,7 +23,8 @@ public SftpRequestTextSeekMessagePreparator( public void prepareRequestExtendedSpecificContents() { getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); - if (getObject().getLineNumber() == null || getObject().getLineNumber().getOriginalValue() == null) { + if (getObject().getLineNumber() == null + || getObject().getLineNumber().getOriginalValue() == null) { getObject().setLineNumber(0); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java index b848ae786..a926b6197 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java @@ -19,16 +19,19 @@ public SftpRequestUnknownMessagePreparator(Chooser chooser, SftpRequestUnknownMe @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getExtendedRequestName() == null || getObject().getExtendedRequestName().getOriginalValue() == null) { + if (getObject().getExtendedRequestName() == null + || getObject().getExtendedRequestName().getOriginalValue() == null) { getObject().setExtendedRequestName("hello-from@ssh-attacker.de"); } - if (getObject().getExtendedRequestNameLength() == null || getObject().getExtendedRequestNameLength().getOriginalValue() == null) { + if (getObject().getExtendedRequestNameLength() == null + || getObject().getExtendedRequestNameLength().getOriginalValue() == null) { getObject() .setExtendedRequestNameLength( getObject().getExtendedRequestName().getValue().length()); } - if (getObject().getRequestSpecificData() == null || getObject().getRequestSpecificData().getOriginalValue() == null) { + if (getObject().getRequestSpecificData() == null + || getObject().getRequestSpecificData().getOriginalValue() == null) { getObject().setRequestSpecificData(new byte[100]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java index 68450385d..52362cb18 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java @@ -21,29 +21,36 @@ public SftpRequestVendorIdMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getVendorName() == null || getObject().getVendorName().getOriginalValue() == null) { + if (getObject().getVendorName() == null + || getObject().getVendorName().getOriginalValue() == null) { getObject().setVendorName("NDS RUB", true); } - if (getObject().getVendorNameLength() == null || getObject().getVendorNameLength().getOriginalValue() == null) { + if (getObject().getVendorNameLength() == null + || getObject().getVendorNameLength().getOriginalValue() == null) { getObject().setVendorNameLength(getObject().getVendorName().getValue().length()); } - if (getObject().getProductName() == null || getObject().getProductName().getOriginalValue() == null) { + if (getObject().getProductName() == null + || getObject().getProductName().getOriginalValue() == null) { getObject().setProductName("SSH-Attacker", true); } - if (getObject().getProductNameLength() == null || getObject().getProductNameLength().getOriginalValue() == null) { + if (getObject().getProductNameLength() == null + || getObject().getProductNameLength().getOriginalValue() == null) { getObject().setProductNameLength(getObject().getProductName().getValue().length()); } - if (getObject().getProductVersion() == null || getObject().getProductVersion().getOriginalValue() == null) { + if (getObject().getProductVersion() == null + || getObject().getProductVersion().getOriginalValue() == null) { getObject().setProductVersion("1.0", true); } - if (getObject().getProductVersionLength() == null || getObject().getProductVersionLength().getOriginalValue() == null) { + if (getObject().getProductVersionLength() == null + || getObject().getProductVersionLength().getOriginalValue() == null) { getObject() .setProductVersionLength(getObject().getProductVersion().getValue().length()); } - if (getObject().getProductBuildNumber() == null || getObject().getProductBuildNumber().getOriginalValue() == null) { + if (getObject().getProductBuildNumber() == null + || getObject().getProductBuildNumber().getOriginalValue() == null) { getObject().setProductBuildNumber(2024); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java index b2fd70365..1869a7459 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java @@ -21,10 +21,12 @@ public SftpResponseCheckFileMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getUsedHashAlgorithm() == null || getObject().getUsedHashAlgorithm().getOriginalValue() == null) { + if (getObject().getUsedHashAlgorithm() == null + || getObject().getUsedHashAlgorithm().getOriginalValue() == null) { getObject().setUsedHashAlgorithm(HashAlgorithm.MD5, true); } - if (getObject().getUsedHashAlgorithmLength() == null || getObject().getUsedHashAlgorithmLength().getOriginalValue() == null) { + if (getObject().getUsedHashAlgorithmLength() == null + || getObject().getUsedHashAlgorithmLength().getOriginalValue() == null) { getObject() .setUsedHashAlgorithmLength( getObject().getUsedHashAlgorithm().getValue().length()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java index c5c32d0f7..274495522 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java @@ -19,19 +19,23 @@ public SftpResponseLimitsMessagePreparator(Chooser chooser, SftpResponseLimitsMe @Override public void prepareResponseSpecificContents() { - if (getObject().getMaximumPacketLength() == null || getObject().getMaximumPacketLength().getOriginalValue() == null) { + if (getObject().getMaximumPacketLength() == null + || getObject().getMaximumPacketLength().getOriginalValue() == null) { getObject().setMaximumPacketLength(100000); } - if (getObject().getMaximumReadLength() == null || getObject().getMaximumReadLength().getOriginalValue() == null) { + if (getObject().getMaximumReadLength() == null + || getObject().getMaximumReadLength().getOriginalValue() == null) { getObject().setMaximumReadLength(0); } - if (getObject().getMaximumWriteLength() == null || getObject().getMaximumWriteLength().getOriginalValue() == null) { + if (getObject().getMaximumWriteLength() == null + || getObject().getMaximumWriteLength().getOriginalValue() == null) { getObject().setMaximumWriteLength(0); } - if (getObject().getMaximumOpenHandles() == null || getObject().getMaximumOpenHandles().getOriginalValue() == null) { + if (getObject().getMaximumOpenHandles() == null + || getObject().getMaximumOpenHandles().getOriginalValue() == null) { getObject().setMaximumOpenHandles(1); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java index 08f4f8625..ecef1f494 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java @@ -20,23 +20,28 @@ public SftpResponseSpaceAvailableMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getBytesOnDevice() == null || getObject().getBytesOnDevice().getOriginalValue() == null) { + if (getObject().getBytesOnDevice() == null + || getObject().getBytesOnDevice().getOriginalValue() == null) { getObject().setBytesOnDevice(10000000001L); } - if (getObject().getUnusedBytesOnDevice() == null || getObject().getUnusedBytesOnDevice().getOriginalValue() == null) { + if (getObject().getUnusedBytesOnDevice() == null + || getObject().getUnusedBytesOnDevice().getOriginalValue() == null) { getObject().setUnusedBytesOnDevice(10); } - if (getObject().getBytesAvailableToUser() == null || getObject().getBytesAvailableToUser().getOriginalValue() == null) { + if (getObject().getBytesAvailableToUser() == null + || getObject().getBytesAvailableToUser().getOriginalValue() == null) { getObject().setBytesAvailableToUser(100); } - if (getObject().getUnusedBytesAvailableToUser() == null || getObject().getUnusedBytesAvailableToUser().getOriginalValue() == null) { + if (getObject().getUnusedBytesAvailableToUser() == null + || getObject().getUnusedBytesAvailableToUser().getOriginalValue() == null) { getObject().setUnusedBytesAvailableToUser(10); } - if (getObject().getBytesPerAllocationUnit() == null || getObject().getBytesPerAllocationUnit().getOriginalValue() == null) { + if (getObject().getBytesPerAllocationUnit() == null + || getObject().getBytesPerAllocationUnit().getOriginalValue() == null) { getObject().setBytesPerAllocationUnit(0); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java index f48aa212d..6d7265452 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java @@ -21,37 +21,47 @@ public SftpResponseStatVfsMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getBlockSize() == null || getObject().getBlockSize().getOriginalValue() == null) { + if (getObject().getBlockSize() == null + || getObject().getBlockSize().getOriginalValue() == null) { getObject().setBlockSize(32); } - if (getObject().getFundamentalBlockSize() == null || getObject().getFundamentalBlockSize().getOriginalValue() == null) { + if (getObject().getFundamentalBlockSize() == null + || getObject().getFundamentalBlockSize().getOriginalValue() == null) { getObject().setFundamentalBlockSize(32); } - if (getObject().getCountBlocks() == null || getObject().getCountBlocks().getOriginalValue() == null) { + if (getObject().getCountBlocks() == null + || getObject().getCountBlocks().getOriginalValue() == null) { getObject().setCountBlocks(11608687979080L); } - if (getObject().getFreeBlocks() == null || getObject().getFreeBlocks().getOriginalValue() == null) { + if (getObject().getFreeBlocks() == null + || getObject().getFreeBlocks().getOriginalValue() == null) { getObject().setFreeBlocks(11608687979080L); } - if (getObject().getFreeBlocksNonRoot() == null || getObject().getFreeBlocksNonRoot().getOriginalValue() == null) { + if (getObject().getFreeBlocksNonRoot() == null + || getObject().getFreeBlocksNonRoot().getOriginalValue() == null) { getObject().setFreeBlocksNonRoot(11608687979080L); } - if (getObject().getFileInodes() == null || getObject().getFileInodes().getOriginalValue() == null) { + if (getObject().getFileInodes() == null + || getObject().getFileInodes().getOriginalValue() == null) { getObject().setFileInodes(0); } - if (getObject().getFreeInodes() == null || getObject().getFreeInodes().getOriginalValue() == null) { + if (getObject().getFreeInodes() == null + || getObject().getFreeInodes().getOriginalValue() == null) { getObject().setFreeInodes(11608687979080L); } - if (getObject().getFreeInodesNonRoot() == null || getObject().getFreeInodesNonRoot().getOriginalValue() == null) { + if (getObject().getFreeInodesNonRoot() == null + || getObject().getFreeInodesNonRoot().getOriginalValue() == null) { getObject().setFreeInodesNonRoot(11608687979080L); } - if (getObject().getSystemId() == null || getObject().getSystemId().getOriginalValue() == null) { + if (getObject().getSystemId() == null + || getObject().getSystemId().getOriginalValue() == null) { getObject().setSystemId(0); } if (getObject().getFlags() == null || getObject().getFlags().getOriginalValue() == null) { getObject().setFlags(SftpVfsFlag.SSH_FXE_STATVFS_ST_RDONLY); } - if (getObject().getMaximumFilenameLength() == null || getObject().getMaximumFilenameLength().getOriginalValue() == null) { + if (getObject().getMaximumFilenameLength() == null + || getObject().getMaximumFilenameLength().getOriginalValue() == null) { getObject().setMaximumFilenameLength(256); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java index a29159978..ab43b5c73 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java @@ -20,7 +20,8 @@ public SftpResponseUnknownMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getResponseSpecificData() == null || getObject().getResponseSpecificData().getOriginalValue() == null) { + if (getObject().getResponseSpecificData() == null + || getObject().getResponseSpecificData().getOriginalValue() == null) { getObject().setResponseSpecificData(new byte[100]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java index de8f01b89..f78ae8db3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java @@ -21,7 +21,8 @@ public SftpExtensionFileStatVfsPreparator( @Override public void prepareExtensionSpecificContents() { - if (getObject().getVersion() == null || getObject().getVersion().getOriginalValue() == null) { + if (getObject().getVersion() == null + || getObject().getVersion().getOriginalValue() == null) { getObject().setVersion("2", true); } super.prepareExtensionSpecificContents(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java index 64f7bb60f..354cf86e6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java @@ -20,10 +20,12 @@ public SftpExtensionNewlinePreparator(Chooser chooser, SftpExtensionNewline exte @Override public void prepareExtensionSpecificContents() { - if (getObject().getNewlineSeperator() == null || getObject().getNewlineSeperator().getOriginalValue() == null) { + if (getObject().getNewlineSeperator() == null + || getObject().getNewlineSeperator().getOriginalValue() == null) { getObject().setNewlineSeperator("\n", true); } - if (getObject().getNewlineSeperatorLength() == null || getObject().getNewlineSeperatorLength().getOriginalValue() == null) { + if (getObject().getNewlineSeperatorLength() == null + || getObject().getNewlineSeperatorLength().getOriginalValue() == null) { getObject() .setNewlineSeperatorLength( getObject().getNewlineSeperator().getValue().length()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java index fb3286eaf..c97711d30 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java @@ -21,7 +21,8 @@ public SftpExtensionStatVfsPreparator( @Override public void prepareExtensionSpecificContents() { - if (getObject().getVersion() == null || getObject().getVersion().getOriginalValue() == null) { + if (getObject().getVersion() == null + || getObject().getVersion().getOriginalValue() == null) { getObject().setVersion("2", true); } super.prepareExtensionSpecificContents(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java index 19a5bc94e..4f793e274 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java @@ -22,14 +22,16 @@ public void prepareExtensionSpecificContents() { if (getObject().getName() == null || getObject().getName().getOriginalValue() == null) { getObject().setName("hello-from@ssh-attacker.de", true); } - if (getObject().getNameLength() == null || getObject().getNameLength().getOriginalValue() == null) { + if (getObject().getNameLength() == null + || getObject().getNameLength().getOriginalValue() == null) { getObject().setNameLength(getObject().getName().getValue().length()); } if (getObject().getValue() == null || getObject().getValue().getOriginalValue() == null) { getObject().setValue(new byte[100], true); } - if (getObject().getValueLength() == null || getObject().getValueLength().getOriginalValue() == null) { + if (getObject().getValueLength() == null + || getObject().getValueLength().getOriginalValue() == null) { getObject().setValueLength(getObject().getValue().getValue().length); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java index f5381ffa3..4e5fdeff2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java @@ -23,33 +23,41 @@ public SftpExtensionVendorIdPreparator(Chooser chooser, SftpExtensionVendorId ex public void prepareExtensionSpecificContents() { getObject().setName(SftpExtension.VENDOR_ID, true); - if (getObject().getVendorName() == null || getObject().getVendorName().getOriginalValue() == null) { + if (getObject().getVendorName() == null + || getObject().getVendorName().getOriginalValue() == null) { getObject().setVendorName("NDS RUB", true); } - if (getObject().getVendorNameLength() == null || getObject().getVendorNameLength().getOriginalValue() == null) { + if (getObject().getVendorNameLength() == null + || getObject().getVendorNameLength().getOriginalValue() == null) { getObject().setVendorNameLength(getObject().getVendorName().getValue().length()); } - if (getObject().getProductName() == null || getObject().getProductName().getOriginalValue() == null) { + if (getObject().getProductName() == null + || getObject().getProductName().getOriginalValue() == null) { getObject().setProductName("SSH-Attacker", true); } - if (getObject().getProductNameLength() == null || getObject().getProductNameLength().getOriginalValue() == null) { + if (getObject().getProductNameLength() == null + || getObject().getProductNameLength().getOriginalValue() == null) { getObject().setProductNameLength(getObject().getProductName().getValue().length()); } - if (getObject().getProductVersion() == null || getObject().getProductVersion().getOriginalValue() == null) { + if (getObject().getProductVersion() == null + || getObject().getProductVersion().getOriginalValue() == null) { getObject().setProductVersion("1.0", true); } - if (getObject().getProductVersionLength() == null || getObject().getProductVersionLength().getOriginalValue() == null) { + if (getObject().getProductVersionLength() == null + || getObject().getProductVersionLength().getOriginalValue() == null) { getObject() .setProductVersionLength(getObject().getProductVersion().getValue().length()); } - if (getObject().getProductBuildNumber() == null || getObject().getProductBuildNumber().getOriginalValue() == null) { + if (getObject().getProductBuildNumber() == null + || getObject().getProductBuildNumber().getOriginalValue() == null) { getObject().setProductBuildNumber(2024); } - if (getObject().getVendorStructureLength() == null || getObject().getVendorStructureLength().getOriginalValue() == null) { + if (getObject().getVendorStructureLength() == null + || getObject().getVendorStructureLength().getOriginalValue() == null) { getObject() .setVendorStructureLength( getObject().getVendorNameLength().getValue() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java index 5ff27a12d..f77029de6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java @@ -26,10 +26,12 @@ public SftpExtensionWithVersionPreparator( public void prepareExtensionSpecificContents() { getObject().setName(extensionName, true); - if (getObject().getVersion() == null || getObject().getVersion().getOriginalValue() == null) { + if (getObject().getVersion() == null + || getObject().getVersion().getOriginalValue() == null) { getObject().setVersion("1", true); } - if (getObject().getVersionLength() == null || getObject().getVersionLength().getOriginalValue() == null) { + if (getObject().getVersionLength() == null + || getObject().getVersionLength().getOriginalValue() == null) { getObject().setVersionLength(getObject().getVersion().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java index 5c109d8ea..8203911a3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java @@ -35,7 +35,8 @@ public final void prepare() { if (getObject().getWho() == null || getObject().getWho().getOriginalValue() == null) { getObject().setWho(chooser.getConfig().getUsername(), true); } - if (getObject().getWhoLength() == null || getObject().getWhoLength().getOriginalValue() == null) { + if (getObject().getWhoLength() == null + || getObject().getWhoLength().getOriginalValue() == null) { getObject().setWhoLength(getObject().getWho().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java index 3ed6a3169..9b3ece04a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java @@ -56,17 +56,21 @@ public final void prepare() { if (chooser.getSftpNegotiatedVersion() > 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_OWNERGROUP)) { - if (getObject().getOwner() == null || getObject().getOwner().getOriginalValue() == null) { + if (getObject().getOwner() == null + || getObject().getOwner().getOriginalValue() == null) { getObject().setOwner("ssh-attacker", true); } - if (getObject().getOwnerLength() == null || getObject().getOwnerLength().getOriginalValue() == null) { + if (getObject().getOwnerLength() == null + || getObject().getOwnerLength().getOriginalValue() == null) { getObject().setOwnerLength(getObject().getOwner().getValue().length()); } - if (getObject().getGroup() == null || getObject().getGroup().getOriginalValue() == null) { + if (getObject().getGroup() == null + || getObject().getGroup().getOriginalValue() == null) { getObject().setGroup("nds", true); } - if (getObject().getGroupLength() == null || getObject().getGroupLength().getOriginalValue() == null) { + if (getObject().getGroupLength() == null + || getObject().getGroupLength().getOriginalValue() == null) { getObject().setGroupLength(getObject().getGroup().getValue().length()); } } else { @@ -77,10 +81,12 @@ public final void prepare() { getObject().clearGroupId(); } else { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID)) { - if (getObject().getUserId() == null || getObject().getUserId().getOriginalValue() == null) { + if (getObject().getUserId() == null + || getObject().getUserId().getOriginalValue() == null) { getObject().setUserId(0); } - if (getObject().getGroupId() == null || getObject().getGroupId().getOriginalValue() == null) { + if (getObject().getGroupId() == null + || getObject().getGroupId().getOriginalValue() == null) { getObject().setGroupId(0); } } else { @@ -92,7 +98,8 @@ public final void prepare() { } if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS)) { - if (getObject().getPermissions() == null || getObject().getPermissions().getOriginalValue() == null) { + if (getObject().getPermissions() == null + || getObject().getPermissions().getOriginalValue() == null) { getObject().setPermissions(0); } } else { @@ -102,14 +109,16 @@ public final void prepare() { if (chooser.getSftpNegotiatedVersion() > 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACCESSTIME)) { - if (getObject().getAccessTime() == null || getObject().getAccessTime().getOriginalValue() == null) { + if (getObject().getAccessTime() == null + || getObject().getAccessTime().getOriginalValue() == null) { getObject().setAccessTime(0); } } else { getObject().clearAccessTime(); } if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_CREATETIME)) { - if (getObject().getCreateTime() == null || getObject().getCreateTime().getOriginalValue() == null) { + if (getObject().getCreateTime() == null + || getObject().getCreateTime().getOriginalValue() == null) { getObject().setCreateTime(0); } } else { @@ -117,7 +126,8 @@ public final void prepare() { } if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_MODIFYTIME)) { - if (getObject().getModifyTime() == null || getObject().getModifyTime().getOriginalValue() == null) { + if (getObject().getModifyTime() == null + || getObject().getModifyTime().getOriginalValue() == null) { getObject().setModifyTime(0); } } else { @@ -125,10 +135,12 @@ public final void prepare() { } } else { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME)) { - if (getObject().getAccessTime() == null || getObject().getAccessTime().getOriginalValue() == null) { + if (getObject().getAccessTime() == null + || getObject().getAccessTime().getOriginalValue() == null) { getObject().setAccessTime(0); } - if (getObject().getModifyTime() == null || getObject().getModifyTime().getOriginalValue() == null) { + if (getObject().getModifyTime() == null + || getObject().getModifyTime().getOriginalValue() == null) { getObject().setModifyTime(0); } } else { @@ -144,7 +156,8 @@ public final void prepare() { if (getObject().getAclEntries().isEmpty()) { getObject().addAclEntry(new SftpAclEntry()); } - if (getObject().getAclEntriesCount() == null || getObject().getAclEntriesCount().getOriginalValue() == null) { + if (getObject().getAclEntriesCount() == null + || getObject().getAclEntriesCount().getOriginalValue() == null) { getObject().setAclEntriesCount(getObject().getAclEntries().size()); } getObject() @@ -175,7 +188,8 @@ public final void prepare() { if (getObject().getExtendedAttributes().isEmpty()) { getObject().addExtendedAttribute(new SftpFileExtendedAttribute()); } - if (getObject().getExtendedCount() == null || getObject().getExtendedCount().getOriginalValue() == null) { + if (getObject().getExtendedCount() == null + || getObject().getExtendedCount().getOriginalValue() == null) { getObject().setExtendedCount(getObject().getExtendedAttributes().size()); } getObject() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java index 7edf69c6a..9e56b8d9e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java @@ -23,14 +23,16 @@ public final void prepare() { if (getObject().getType() == null || getObject().getType().getOriginalValue() == null) { getObject().setType("hello-from@ssh-attacker.de", true); } - if (getObject().getTypeLength() == null || getObject().getTypeLength().getOriginalValue() == null) { + if (getObject().getTypeLength() == null + || getObject().getTypeLength().getOriginalValue() == null) { getObject().setTypeLength(getObject().getType().getValue().length()); } if (getObject().getData() == null || getObject().getData().getOriginalValue() == null) { getObject().setData(new byte[100], true); } - if (getObject().getDataLength() == null || getObject().getDataLength().getOriginalValue() == null) { + if (getObject().getDataLength() == null + || getObject().getDataLength().getOriginalValue() == null) { getObject().setDataLength(getObject().getData().getValue().length); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java index b6116c187..867e22b0e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java @@ -20,22 +20,26 @@ public SftpFileNameEntryPreparator(Chooser chooser, SftpFileNameEntry nameEntry) @Override public final void prepare() { - if (getObject().getFilename() == null || getObject().getFilename().getOriginalValue() == null) { + if (getObject().getFilename() == null + || getObject().getFilename().getOriginalValue() == null) { getObject().setFilename("/etc/passwd", true); } - if (getObject().getFilenameLength() == null || getObject().getFilenameLength().getOriginalValue() == null) { + if (getObject().getFilenameLength() == null + || getObject().getFilenameLength().getOriginalValue() == null) { getObject().setFilenameLength(getObject().getFilename().getValue().length()); } if (chooser.getSftpNegotiatedVersion() <= 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { - if (getObject().getLongName() == null || getObject().getLongName().getOriginalValue() == null) { + if (getObject().getLongName() == null + || getObject().getLongName().getOriginalValue() == null) { getObject() .setLongName( "-rwxr-xr-x 1 ssh attacker 348911 Mar 25 14:29 passwd", true); } - if (getObject().getLongNameLength() == null || getObject().getLongNameLength().getOriginalValue() == null) { + if (getObject().getLongNameLength() == null + || getObject().getLongNameLength().getOriginalValue() == null) { getObject().setLongNameLength(getObject().getLongName().getValue().length()); } } else { @@ -43,7 +47,7 @@ public final void prepare() { getObject().clearLongName(); } - if (getObject().getAttributes() == null || getObject().getAttributes().getOriginalValue() == null) { + if (getObject().getAttributes() == null) { getObject().setAttributes(new SftpFileAttributes()); } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java index 81c6a6d63..cd26d669f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java @@ -22,7 +22,8 @@ public final void prepare() { if (getObject().getName() == null || getObject().getName().getOriginalValue() == null) { getObject().setName("ssh-attacker", true); } - if (getObject().getNameLength() == null || getObject().getNameLength().getOriginalValue() == null) { + if (getObject().getNameLength() == null + || getObject().getNameLength().getOriginalValue() == null) { getObject().setNameLength(getObject().getName().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java index 2cca3e4de..175410769 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java @@ -25,7 +25,7 @@ public void prepareRequestSpecificContents() { getObject() .setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); - if (getObject().getAttributes() == null || getObject().getAttributes().getOriginalValue() == null) { + if (getObject().getAttributes() == null) { getObject().setAttributes(new SftpFileAttributes()); } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java index 88e6d99ee..b2ac88804 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java @@ -27,7 +27,8 @@ public void prepareRequestSpecificContents() { if (chooser.getSftpNegotiatedVersion() > 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { - if (getObject().getFlags() == null || getObject().getFlags().getOriginalValue() == null) { + if (getObject().getFlags() == null + || getObject().getFlags().getOriginalValue() == null) { getObject().setFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); } } else { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java index bf49cd2cc..b4cdda8cc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java @@ -24,7 +24,8 @@ public void prepareRequestSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/bin/python3", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java index 936bed755..71f7eb32f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java @@ -24,11 +24,12 @@ public void prepareRequestSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/tmp/ssh-attacker/", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getAttributes() == null || getObject().getAttributes().getOriginalValue() == null) { + if (getObject().getAttributes() == null) { getObject().setAttributes(new SftpFileAttributes()); } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java index 0cc7a2cc7..55797c668 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java @@ -23,7 +23,8 @@ public void prepareRequestSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/tmp/", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java index 799135216..ad72614f2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java @@ -25,14 +25,15 @@ public void prepareRequestSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } if (getObject().getPFlags() == null || getObject().getPFlags().getOriginalValue() == null) { getObject().setPFlags(SftpFileOpenFlag.SSH_FXF_READ); } - if (getObject().getAttributes() == null || getObject().getAttributes().getOriginalValue() == null) { + if (getObject().getAttributes() == null) { getObject().setAttributes(new SftpFileAttributes()); } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java index 845f63f06..d71779005 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java @@ -24,7 +24,8 @@ public void prepareRequestSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/bin/python3", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java index 883f79bc6..d3d37f281 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java @@ -24,7 +24,8 @@ public void prepareRequestSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/tmp/../etc/./passwd", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java index a3cd27711..3895663e3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java @@ -23,7 +23,8 @@ public void prepareMessageSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/tmp/ssh-attacker", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java index 68b8859c6..9cf273dac 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java @@ -23,7 +23,8 @@ public void prepareRequestSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java index eaf4403c9..eee62c133 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java @@ -23,14 +23,17 @@ public void prepareRequestSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getNewPath() == null || getObject().getNewPath().getOriginalValue() == null) { + if (getObject().getNewPath() == null + || getObject().getNewPath().getOriginalValue() == null) { getObject().setNewPath("/tmp/passwd-win", true); } - if (getObject().getNewPathLength() == null || getObject().getNewPathLength().getOriginalValue() == null) { + if (getObject().getNewPathLength() == null + || getObject().getNewPathLength().getOriginalValue() == null) { getObject().setNewPathLength(getObject().getNewPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java index e5c3f7e9b..e48f00661 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java @@ -24,11 +24,12 @@ public void prepareRequestSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/tmp/ssh-attacker", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getAttributes() == null || getObject().getAttributes().getOriginalValue() == null) { + if (getObject().getAttributes() == null) { getObject().setAttributes(new SftpFileAttributes()); } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java index dc89d1fc9..31955acaf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java @@ -24,13 +24,15 @@ public void prepareRequestSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/etc/passwd", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } if (chooser.getSftpNegotiatedVersion() > 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { - if (getObject().getFlags() == null || getObject().getFlags().getOriginalValue() == null) { + if (getObject().getFlags() == null + || getObject().getFlags().getOriginalValue() == null) { getObject().setFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); } } else { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java index 685bdf147..179b60287 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java @@ -24,14 +24,17 @@ public void prepareRequestSpecificContents() { if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { getObject().setPath("/bin/sh", true); } - if (getObject().getPathLength() == null || getObject().getPathLength().getOriginalValue() == null) { + if (getObject().getPathLength() == null + || getObject().getPathLength().getOriginalValue() == null) { getObject().setPathLength(getObject().getPath().getValue().length()); } - if (getObject().getTargetPath() == null || getObject().getTargetPath().getOriginalValue() == null) { + if (getObject().getTargetPath() == null + || getObject().getTargetPath().getOriginalValue() == null) { getObject().setTargetPath("/tmp/ssh-attacker-sh", true); } - if (getObject().getTargetPathLength() == null || getObject().getTargetPathLength().getOriginalValue() == null) { + if (getObject().getTargetPathLength() == null + || getObject().getTargetPathLength().getOriginalValue() == null) { getObject().setTargetPathLength(getObject().getTargetPath().getValue().length()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java index 10e15eeda..45fc4ebd2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java @@ -29,7 +29,8 @@ public void prepareRequestSpecificContents() { if (getObject().getData() == null || getObject().getData().getOriginalValue() == null) { getObject().setData(new byte[100], true); } - if (getObject().getDataLength() == null || getObject().getDataLength().getOriginalValue() == null) { + if (getObject().getDataLength() == null + || getObject().getDataLength().getOriginalValue() == null) { getObject().setDataLength(getObject().getData().getValue().length); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java index 4c125ae13..ba6601e8f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java @@ -22,7 +22,7 @@ public SftpResponseAttributesMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getAttributes() == null || getObject().getAttributes().getOriginalValue() == null) { + if (getObject().getAttributes() == null) { getObject().setAttributes(new SftpFileAttributes()); } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java index b50f49c93..eb06e66bf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java @@ -23,7 +23,8 @@ public void prepareResponseSpecificContents() { if (getObject().getData() == null || getObject().getData().getOriginalValue() == null) { getObject().setData(new byte[100], true); } - if (getObject().getDataLength() == null || getObject().getDataLength().getOriginalValue() == null) { + if (getObject().getDataLength() == null + || getObject().getDataLength().getOriginalValue() == null) { getObject().setDataLength(getObject().getData().getValue().length); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java index 2f9a0b2bf..eba9eb085 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java @@ -24,7 +24,8 @@ public void prepareResponseSpecificContents() { // Should be set in SftpManager handleRequestMessage() getObject().setHandle(new byte[100], true); } - if (getObject().getHandleLength() == null || getObject().getHandleLength().getOriginalValue() == null) { + if (getObject().getHandleLength() == null + || getObject().getHandleLength().getOriginalValue() == null) { getObject().setHandleLength(getObject().getHandle().getValue().length); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java index c9a214cf9..eaef8c237 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java @@ -22,7 +22,8 @@ protected SftpResponseMessagePreparator( public void prepareMessageSpecificContents() { // Request identifier should be set by SftpManager in handleRequestMessage() - if (getObject().getRequestId() == null || getObject().getRequestId().getOriginalValue() == null) { + if (getObject().getRequestId() == null + || getObject().getRequestId().getOriginalValue() == null) { getObject().setRequestId(chooser.getContext().getSftpManager().getNextRequestId()); } prepareResponseSpecificContents(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java index 6acd21dec..74bc46ef7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java @@ -20,7 +20,8 @@ public SftpResponseNameMessagePreparator(Chooser chooser, SftpResponseNameMessag @Override public void prepareResponseSpecificContents() { - if (getObject().getCountNameEntries() == null || getObject().getCountNameEntries().getOriginalValue() == null) { + if (getObject().getCountNameEntries() == null + || getObject().getCountNameEntries().getOriginalValue() == null) { getObject().setCountNameEntries(0); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java index fa6914e40..763574f10 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java @@ -21,21 +21,26 @@ public SftpResponseStatusMessagePreparator(Chooser chooser, SftpResponseStatusMe @Override public void prepareResponseSpecificContents() { - if (getObject().getStatusCode() == null || getObject().getStatusCode().getOriginalValue() == null) { + if (getObject().getStatusCode() == null + || getObject().getStatusCode().getOriginalValue() == null) { getObject().setStatusCode(SftpStatusCode.SSH_FX_OK); } - if (getObject().getErrorMessage() == null || getObject().getErrorMessage().getOriginalValue() == null) { + if (getObject().getErrorMessage() == null + || getObject().getErrorMessage().getOriginalValue() == null) { getObject().setErrorMessage("SSH-Attacker sagt NEIN!", true); } - if (getObject().getErrorMessageLength() == null || getObject().getErrorMessageLength().getOriginalValue() == null) { + if (getObject().getErrorMessageLength() == null + || getObject().getErrorMessageLength().getOriginalValue() == null) { getObject().setErrorMessageLength(getObject().getErrorMessage().getValue().length()); } - if (getObject().getLanguageTag() == null || getObject().getLanguageTag().getOriginalValue() == null) { + if (getObject().getLanguageTag() == null + || getObject().getLanguageTag().getOriginalValue() == null) { getObject().setLanguageTag("de", true); } - if (getObject().getLanguageTagLength() == null || getObject().getLanguageTagLength().getOriginalValue() == null) { + if (getObject().getLanguageTagLength() == null + || getObject().getLanguageTagLength().getOriginalValue() == null) { getObject().setLanguageTagLength(getObject().getLanguageTag().getValue().length()); } } From cc4b26fe61ec0af7300140fc215474d9f5f051b7 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 28 Nov 2024 11:41:52 +0100 Subject: [PATCH 052/203] fix respectSftpAttributesFlags, before it did the opposite. --- .../sftp/preperator/holder/SftpFileAttributesPreparator.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java index 9b3ece04a..4c9b5940f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java @@ -206,7 +206,6 @@ public final void prepare() { } private boolean isFlagSet(int attributes, SftpFileAttributeFlag attribute) { - return chooser.getConfig().getRespectSftpAttributesFlags() - || (attributes & attribute.getValue()) != 0; + return (attributes & attribute.getValue()) != 0 || !chooser.getConfig().getRespectSftpAttributesFlags(); } } From b13eb51796bf0abd19fdbf1cf3863d137a39d06d Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 28 Nov 2024 18:32:51 +0100 Subject: [PATCH 053/203] Add setSoftly methods to nearly all messages Set Attributes in Message instead of in the preparator. --- .../nds/sshattacker/core/config/Config.java | 57 ++++- .../core/data/sftp/SftpMessage.java | 10 + .../sftp/message/SftpHandshakeMessage.java | 6 + .../data/sftp/message/SftpUnknownMessage.java | 6 + .../SftpRequestCheckFileHandleMessage.java | 45 ++++ .../SftpRequestCheckFileNameMessage.java | 45 ++++ .../SftpRequestCopyDataMessage.java | 39 +++ .../SftpRequestCopyFileMessage.java | 37 ++- .../SftpRequestExtendedMessage.java | 30 ++- .../SftpRequestExtendedWithHandleMessage.java | 16 ++ .../SftpRequestExtendedWithPathMessage.java | 18 +- .../SftpRequestHardlinkMessage.java | 18 +- .../SftpRequestHomeDirectoryMessage.java | 18 +- .../SftpRequestLinkSetStatMessage.java | 2 +- .../SftpRequestPosixRenameMessage.java | 18 +- .../SftpRequestTextSeekMessage.java | 6 + .../SftpRequestUnknownMessage.java | 9 + .../SftpRequestUsersGroupsByIdMessage.java | 19 ++ .../SftpRequestVendorIdMessage.java | 70 +++++- .../SftpResponseCheckFileMessage.java | 40 ++- .../SftpResponseLimitsMessage.java | 33 +++ .../SftpResponseSpaceAvailableMessage.java | 43 ++++ .../SftpResponseStatVfsMessage.java | 81 ++++++ .../SftpResponseUnknownMessage.java | 9 + .../SftpResponseUsersGroupsByIdMessage.java | 20 ++ .../extension/SftpAbstractExtension.java | 18 +- .../extension/SftpExtensionNewline.java | 25 +- .../extension/SftpExtensionUnknown.java | 18 +- .../extension/SftpExtensionVendorId.java | 81 +++++- .../extension/SftpExtensionWithVersion.java | 19 +- .../sftp/message/holder/SftpAclEntry.java | 52 +++- .../message/holder/SftpFileAttributes.java | 126 +++++++++- .../holder/SftpFileExtendedAttribute.java | 31 ++- .../message/holder/SftpFileNameEntry.java | 37 ++- .../data/sftp/message/holder/SftpIdEntry.java | 6 + .../sftp/message/holder/SftpNameEntry.java | 18 +- .../SftpRequestFileSetStatMessage.java | 2 +- .../request/SftpRequestFileStatMessage.java | 10 + .../request/SftpRequestMakeDirMessage.java | 2 +- .../message/request/SftpRequestMessage.java | 6 + .../request/SftpRequestOpenMessage.java | 12 +- .../request/SftpRequestReadMessage.java | 12 + .../request/SftpRequestRenameMessage.java | 18 +- .../request/SftpRequestSetStatMessage.java | 2 +- .../request/SftpRequestStatMessage.java | 10 + .../SftpRequestSymbolicLinkMessage.java | 19 +- .../request/SftpRequestWithHandleMessage.java | 16 ++ .../request/SftpRequestWithPathMessage.java | 18 +- .../request/SftpRequestWriteMessage.java | 20 ++ .../SftpResponseAttributesMessage.java | 2 +- .../response/SftpResponseDataMessage.java | 14 ++ .../response/SftpResponseHandleMessage.java | 25 ++ .../message/response/SftpResponseMessage.java | 6 + .../response/SftpResponseNameMessage.java | 31 ++- .../response/SftpResponseStatusMessage.java | 54 +++- .../SftpResponseNameMessageParser.java | 4 +- .../preperator/SftpInitMessagePreparator.java | 5 +- .../SftpUnknownMessagePreparator.java | 5 +- .../SftpVersionMessagePreparator.java | 8 +- ...questCheckFileHandleMessagePreparator.java | 40 ++- ...RequestCheckFileNameMessagePreparator.java | 35 +-- .../SftpRequestCopyDataMessagePreparator.java | 27 +- .../SftpRequestCopyFileMessagePreparator.java | 23 +- ...ftpRequestExpandPathMessagePreparator.java | 8 +- ...tpRequestFileStatVfsMessagePreparator.java | 5 +- .../SftpRequestFileSyncMessagePreparator.java | 6 +- .../SftpRequestHardlinkMessagePreparator.java | 17 +- ...RequestHomeDirectoryMessagePreparator.java | 9 +- ...tpRequestLinkSetStatMessagePreparator.java | 13 +- ...tpRequestPosixRenameMessagePreparator.java | 17 +- ...equestSpaceAvailableMessagePreparator.java | 8 +- .../SftpRequestStatVfsMessagePreparator.java | 8 +- .../SftpRequestTextSeekMessagePreparator.java | 11 +- .../SftpRequestUnknownMessagePreparator.java | 18 +- ...questUsersGroupsByIdMessagePreparator.java | 12 +- .../SftpRequestVendorIdMessagePreparator.java | 33 +-- ...ftpResponseCheckFileMessagePreparator.java | 15 +- .../SftpResponseLimitsMessagePreparator.java | 20 +- ...sponseSpaceAvailableMessagePreparator.java | 33 +-- .../SftpResponseStatVfsMessagePreparator.java | 54 +--- .../SftpResponseUnknownMessagePreparator.java | 5 +- ...ponseUsersGroupsByIdMessagePreparator.java | 11 +- .../SftpExtensionFileStatVfsPreparator.java | 5 +- .../SftpExtensionNewlinePreparator.java | 11 +- .../SftpExtensionStatVfsPreparator.java | 5 +- .../SftpExtensionUnknownPreparator.java | 16 +- .../SftpExtensionVendorIdPreparator.java | 49 +--- .../SftpExtensionWithVersionPreparator.java | 9 +- .../holder/SftpAclEntryPreparator.java | 20 +- .../holder/SftpFileAttributesPreparator.java | 106 +++----- .../SftpFileExtendedAttributePreparator.java | 16 +- .../holder/SftpFileNameEntryPreparator.java | 29 +-- .../holder/SftpIdEntryPreparator.java | 4 +- .../holder/SftpNameEntryPreparator.java | 8 +- .../SftpRequestCloseMessagePreparator.java | 5 +- ...tpRequestFileSetStatMessagePreparator.java | 9 +- .../SftpRequestFileStatMessagePreparator.java | 10 +- .../SftpRequestLinkStatMessagePreparator.java | 8 +- .../SftpRequestMakeDirMessagePreparator.java | 12 +- .../SftpRequestOpenDirMessagePreparator.java | 8 +- .../SftpRequestOpenMessagePreparator.java | 17 +- .../SftpRequestReadDirMessagePreparator.java | 6 +- .../SftpRequestReadLinkMessagePreparator.java | 8 +- .../SftpRequestReadMessagePreparator.java | 14 +- .../SftpRequestRealPathMessagePreparator.java | 8 +- ...SftpRequestRemoveDirMessagePreparator.java | 8 +- .../SftpRequestRemoveMessagePreparator.java | 8 +- .../SftpRequestRenameMessagePreparator.java | 17 +- .../SftpRequestSetStatMessagePreparator.java | 12 +- .../SftpRequestStatMessagePreparator.java | 13 +- ...pRequestSymbolicLinkMessagePreparator.java | 17 +- .../SftpRequestWriteMessagePreparator.java | 18 +- ...tpResponseAttributesMessagePreparator.java | 4 - .../SftpResponseDataMessagePreparator.java | 8 +- .../SftpResponseHandleMessagePreparator.java | 8 +- .../SftpResponseMessagePreparator.java | 5 +- .../SftpResponseNameMessagePreparator.java | 7 +- .../SftpResponseStatusMessagePreparator.java | 23 +- .../SftpResponseNameMessageSerializer.java | 2 +- .../sshattacker/core/packet/BinaryPacket.java | 14 ++ .../authentication/AuthenticationPrompt.java | 26 +- .../AuthenticationResponse.java | 19 +- .../message/UserAuthBannerMessage.java | 29 +++ .../message/UserAuthFailureMessage.java | 29 +++ .../message/UserAuthHostbasedMessage.java | 74 ++++++ .../message/UserAuthInfoRequestMessage.java | 44 ++++ .../UserAuthKeyboardInteractiveMessage.java | 30 +++ .../message/UserAuthPasswordMessage.java | 36 +++ .../message/UserAuthPkOkMessage.java | 30 +++ .../message/UserAuthPubkeyMessage.java | 50 ++++ .../message/UserAuthRequestMessage.java | 43 ++++ .../core/protocol/common/SshMessage.java | 10 + .../message/ChannelDataMessage.java | 14 ++ .../message/ChannelExtendedDataMessage.java | 21 ++ .../ChannelOpenConfirmationMessage.java | 12 + .../message/ChannelOpenFailureMessage.java | 35 +++ .../message/ChannelOpenMessage.java | 33 +++ .../message/ChannelRequestEnvMessage.java | 33 +++ .../message/ChannelRequestExecMessage.java | 14 ++ .../ChannelRequestExitSignalMessage.java | 52 ++++ .../ChannelRequestExitStatusMessage.java | 6 + .../message/ChannelRequestMessage.java | 22 ++ .../message/ChannelRequestPtyMessage.java | 61 +++++ .../message/ChannelRequestSignalMessage.java | 15 ++ .../ChannelRequestSubsystemMessage.java | 17 ++ .../ChannelRequestWindowChangeMessage.java | 27 ++ .../message/ChannelRequestX11Message.java | 58 +++++ .../message/ChannelRequestXonXoffMessage.java | 8 + .../message/ChannelWindowAdjustMessage.java | 6 + ...lobalRequestCancelTcpIpForwardMessage.java | 17 ++ .../message/GlobalRequestMessage.java | 22 ++ .../GlobalRequestTcpIpForwardMessage.java | 17 ++ .../transport/message/DebugMessage.java | 36 +++ .../DhGexKeyExchangeOldRequestMessage.java | 8 + .../message/DhGexKeyExchangeReplyMessage.java | 29 +++ .../DhGexKeyExchangeRequestMessage.java | 24 ++ .../message/DhKeyExchangeReplyMessage.java | 29 +++ .../transport/message/DisconnectMessage.java | 37 +++ .../message/EcdhKeyExchangeInitMessage.java | 17 ++ .../message/EcdhKeyExchangeReplyMessage.java | 45 ++++ .../message/HybridKeyExchangeInitMessage.java | 72 +++++- .../HybridKeyExchangeReplyMessage.java | 73 +++++- .../transport/message/IgnoreMessage.java | 14 ++ .../message/KeyExchangeInitMessage.java | 230 ++++++++++++++++++ .../transport/message/PingMessage.java | 14 ++ .../transport/message/PongMessage.java | 14 ++ .../message/RsaKeyExchangeDoneMessage.java | 14 ++ .../message/RsaKeyExchangePubkeyMessage.java | 33 +++ .../message/RsaKeyExchangeSecretMessage.java | 16 ++ .../message/ServiceAcceptMessage.java | 16 ++ .../message/ServiceRequestMessage.java | 16 ++ .../message/UnimplementedMessage.java | 7 + .../message/extension/AbstractExtension.java | 18 +- .../extension/DelayCompressionExtension.java | 73 +++++- .../message/extension/PingExtension.java | 19 +- .../extension/ServerSigAlgsExtension.java | 36 ++- .../message/extension/UnknownExtension.java | 18 +- .../HybridKeyExchangeReplyMessageParser.java | 4 +- ...bridKeyExchangeReplyMessagePreparator.java | 2 +- .../DelayCompressionExtensionPreparator.java | 4 + 180 files changed, 3354 insertions(+), 876 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 946279158..061ad5b58 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -429,6 +429,15 @@ public class Config implements Serializable { // endregion + // region general SFTP settings + /** + * Whether the length fields in the messages should be consistent with their corresponding + * fields. + */ + private Boolean alwaysPrepareLengthFields; + + // endregion + // region SFTP Version Exchange /** SFTP Client protocol version */ private Integer sftpClientVersion; @@ -508,7 +517,16 @@ public class Config implements Serializable { // endregion - // region SSH Attributes Settings + // region general SFTP settings + /** + * Whether the length fields in the messages should be consistent with their corresponding + * fields. + */ + private Boolean alwaysPrepareSftpLengthFields; + + /** Whether the handle fields in the messages should always be prepared. */ + private Boolean alwaysPrepareSftpHandle; + /** Whether the attributes in messages should be consistent with the attributes flags. */ private Boolean respectSftpAttributesFlags; @@ -1173,6 +1191,10 @@ public Config() { defaultBreakLength = 600; // endregion + // region general SSH Settings + alwaysPrepareLengthFields = true; + // endregion + // region Workflow settings initialization workflowTraceType = null; outputFilters = new ArrayList<>(); @@ -1194,7 +1216,9 @@ public Config() { addAllSftpExtensions(sftpServerSupportedExtensions); // endregion - // region SSH Attributes Settings + // region general SFTP settings + alwaysPrepareSftpLengthFields = true; + alwaysPrepareSftpHandle = true; respectSftpAttributesFlags = true; // endregion @@ -1952,6 +1976,17 @@ public void setDefaultBreakLength(int defaultBreakLength) { // endregion + // region general SSH settings + public void setAlwaysPrepareLengthFields(Boolean alwaysPrepareLengthFields) { + this.alwaysPrepareLengthFields = alwaysPrepareLengthFields; + } + + public Boolean getAlwaysPrepareLengthFields() { + return alwaysPrepareLengthFields; + } + + // endregion + // region Getters for Workflow settings public Boolean isFiltersKeepUserSettings() { return filtersKeepUserSettings; @@ -2189,11 +2224,27 @@ public void setSftpServerSupportedExtensions( // endregion - // region SSH Attributes Settings + // region general SFTP settings + public void setAlwaysPrepareSftpLengthFields(Boolean alwaysPrepareSftpLengthFields) { + this.alwaysPrepareSftpLengthFields = alwaysPrepareSftpLengthFields; + } + + public void setAlwaysPrepareSftpHandle(Boolean alwaysPrepareSftpHandle) { + this.alwaysPrepareSftpHandle = alwaysPrepareSftpHandle; + } + public void setRespectSftpAttributesFlags(Boolean respectSftpAttributesFlags) { this.respectSftpAttributesFlags = respectSftpAttributesFlags; } + public Boolean getAlwaysPrepareSftpLengthFields() { + return alwaysPrepareSftpLengthFields; + } + + public Boolean getAlwaysPrepareSftpHandle() { + return alwaysPrepareSftpHandle; + } + public Boolean getRespectSftpAttributesFlags() { return respectSftpAttributesFlags; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessage.java index 5edecafd7..2eedb1586 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessage.java @@ -28,10 +28,20 @@ public void setPacketType(byte packetType) { this.packetType = ModifiableVariableFactory.safelySetValue(this.packetType, packetType); } + public void setSoftlyPacketType(byte packetType) { + if (this.packetType == null || this.packetType.getOriginalValue() == null) { + this.packetType = ModifiableVariableFactory.safelySetValue(this.packetType, packetType); + } + } + public void setPacketType(SftpPacketTypeConstant packetType) { setPacketType(packetType.getId()); } + public void setSoftlyPacketType(SftpPacketTypeConstant packetType) { + setSoftlyPacketType(packetType.getId()); + } + @Override public String toCompactString() { return getClass().getSimpleName(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java index da9179b43..65c62d9ff 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java @@ -65,6 +65,12 @@ public void setVersion(Integer version) { this.version = ModifiableVariableFactory.safelySetValue(this.version, version); } + public void setSoftlyVersion(Integer version) { + if (this.version == null || this.version.getOriginalValue() == null) { + this.version = ModifiableVariableFactory.safelySetValue(this.version, version); + } + } + public List> getExtensions() { return extensions; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java index 46e0d36f3..20c1fe260 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java @@ -30,6 +30,12 @@ public void setPayload(byte[] payload) { this.payload = ModifiableVariableFactory.safelySetValue(this.payload, payload); } + public void setSoftlyPayload(byte[] payload) { + if (this.payload == null || this.payload.getOriginalValue() == null) { + this.payload = ModifiableVariableFactory.safelySetValue(this.payload, payload); + } + } + @Override public String toCompactString() { if (packetType != null && packetType.getValue() != null) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java index be08fc5b6..20b853f37 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.CharConstants; import de.rub.nds.sshattacker.core.constants.HashAlgorithm; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCheckFileHandleMessageHandler; @@ -79,6 +80,22 @@ public void setHashAlgorithms(String hashAlgorithms, boolean adjustLengthField) } } + public void setSoftlyHashAlgorithms( + String hashAlgorithms, boolean adjustLengthField, Config config) { + if (this.hashAlgorithms == null || this.hashAlgorithms.getOriginalValue() == null) { + this.hashAlgorithms = + ModifiableVariableFactory.safelySetValue(this.hashAlgorithms, hashAlgorithms); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || hashAlgorithmsLength == null + || hashAlgorithmsLength.getOriginalValue() == null) { + setHashAlgorithmsLength( + this.hashAlgorithms.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public void setHashAlgorithms(String[] hashAlgorithms, boolean adjustLengthField) { String nameList = String.join("" + CharConstants.ALGORITHM_SEPARATOR, hashAlgorithms); setHashAlgorithms(nameList, adjustLengthField); @@ -92,6 +109,15 @@ public void setHashAlgorithms(List hashAlgorithms, boolean adjust setHashAlgorithms(nameList, adjustLengthField); } + public void setSoftlyHashAlgorithms( + List hashAlgorithms, boolean adjustLengthField, Config config) { + String nameList = + hashAlgorithms.stream() + .map(HashAlgorithm::toString) + .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); + setSoftlyHashAlgorithms(nameList, adjustLengthField, config); + } + public ModifiableLong getStartOffset() { return startOffset; } @@ -104,6 +130,13 @@ public void setStartOffset(long startOffset) { this.startOffset = ModifiableVariableFactory.safelySetValue(this.startOffset, startOffset); } + public void setSoftlyStartOffset(long startOffset) { + if (this.startOffset == null || this.startOffset.getOriginalValue() == null) { + this.startOffset = + ModifiableVariableFactory.safelySetValue(this.startOffset, startOffset); + } + } + public ModifiableLong getLength() { return length; } @@ -116,6 +149,12 @@ public void setLength(long length) { this.length = ModifiableVariableFactory.safelySetValue(this.length, length); } + public void setSoftlyLength(long length) { + if (this.length == null || this.length.getOriginalValue() == null) { + this.length = ModifiableVariableFactory.safelySetValue(this.length, length); + } + } + public ModifiableInteger getBlockSize() { return blockSize; } @@ -128,6 +167,12 @@ public void setBlockSize(int blockSize) { this.blockSize = ModifiableVariableFactory.safelySetValue(this.blockSize, blockSize); } + public void setSoftlyBlockSize(int blockSize) { + if (this.blockSize == null || this.blockSize.getOriginalValue() == null) { + this.blockSize = ModifiableVariableFactory.safelySetValue(this.blockSize, blockSize); + } + } + @Override public SftpRequestCheckFileHandleMessageHandler getHandler(SshContext context) { return new SftpRequestCheckFileHandleMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java index 5ac9743f2..03f9582dd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.CharConstants; import de.rub.nds.sshattacker.core.constants.HashAlgorithm; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCheckFileNameMessageHandler; @@ -79,6 +80,22 @@ public void setHashAlgorithms(String hashAlgorithms, boolean adjustLengthField) } } + public void setSoftlyHashAlgorithms( + String hashAlgorithms, boolean adjustLengthField, Config config) { + if (this.hashAlgorithms == null || this.hashAlgorithms.getOriginalValue() == null) { + this.hashAlgorithms = + ModifiableVariableFactory.safelySetValue(this.hashAlgorithms, hashAlgorithms); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || hashAlgorithmsLength == null + || hashAlgorithmsLength.getOriginalValue() == null) { + setHashAlgorithmsLength( + this.hashAlgorithms.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public void setHashAlgorithms(String[] hashAlgorithms, boolean adjustLengthField) { String nameList = String.join("" + CharConstants.ALGORITHM_SEPARATOR, hashAlgorithms); setHashAlgorithms(nameList, adjustLengthField); @@ -92,6 +109,15 @@ public void setHashAlgorithms(List hashAlgorithms, boolean adjust setHashAlgorithms(nameList, adjustLengthField); } + public void setSoftlyHashAlgorithms( + List hashAlgorithms, boolean adjustLengthField, Config config) { + String nameList = + hashAlgorithms.stream() + .map(HashAlgorithm::toString) + .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); + setSoftlyHashAlgorithms(nameList, adjustLengthField, config); + } + public ModifiableLong getStartOffset() { return startOffset; } @@ -104,6 +130,13 @@ public void setStartOffset(long startOffset) { this.startOffset = ModifiableVariableFactory.safelySetValue(this.startOffset, startOffset); } + public void setSoftlyStartOffset(long startOffset) { + if (this.startOffset == null || this.startOffset.getOriginalValue() == null) { + this.startOffset = + ModifiableVariableFactory.safelySetValue(this.startOffset, startOffset); + } + } + public ModifiableLong getLength() { return length; } @@ -116,6 +149,12 @@ public void setLength(long length) { this.length = ModifiableVariableFactory.safelySetValue(this.length, length); } + public void setSoftlyLength(long length) { + if (this.length == null || this.length.getOriginalValue() == null) { + this.length = ModifiableVariableFactory.safelySetValue(this.length, length); + } + } + public ModifiableInteger getBlockSize() { return blockSize; } @@ -128,6 +167,12 @@ public void setBlockSize(int blockSize) { this.blockSize = ModifiableVariableFactory.safelySetValue(this.blockSize, blockSize); } + public void setSoftlyBlockSize(int blockSize) { + if (this.blockSize == null || this.blockSize.getOriginalValue() == null) { + this.blockSize = ModifiableVariableFactory.safelySetValue(this.blockSize, blockSize); + } + } + @Override public SftpRequestCheckFileNameMessageHandler getHandler(SshContext context) { return new SftpRequestCheckFileNameMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java index 5d8750866..73b853f1a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCopyDataMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -38,6 +39,13 @@ public void setReadFromOffset(long readFromOffset) { ModifiableVariableFactory.safelySetValue(this.readFromOffset, readFromOffset); } + public void setSoftlyReadFromOffset(long readFromOffset) { + if (this.readFromOffset == null || this.readFromOffset.getOriginalValue() == null) { + this.readFromOffset = + ModifiableVariableFactory.safelySetValue(this.readFromOffset, readFromOffset); + } + } + public ModifiableLong getReadDataLength() { return readDataLength; } @@ -51,6 +59,13 @@ public void setReadDataLength(long readDataLength) { ModifiableVariableFactory.safelySetValue(this.readDataLength, readDataLength); } + public void setSoftlyReadDataLength(long readDataLength) { + if (this.readDataLength == null || this.readDataLength.getOriginalValue() == null) { + this.readDataLength = + ModifiableVariableFactory.safelySetValue(this.readDataLength, readDataLength); + } + } + public ModifiableInteger getWriteToHandleLength() { return writeToHandleLength; } @@ -92,6 +107,23 @@ public void setWriteToHandle(byte[] writeToHandle, boolean adjustLengthField) { } } + public void setSoftlyWriteToHandle( + byte[] writeToHandle, boolean adjustLengthField, Config config) { + if (config.getAlwaysPrepareSftpHandle() + || this.writeToHandle == null + || this.writeToHandle.getOriginalValue() == null) { + this.writeToHandle = + ModifiableVariableFactory.safelySetValue(this.writeToHandle, writeToHandle); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || writeToHandleLength == null + || writeToHandleLength.getOriginalValue() == null) { + setWriteToHandleLength(this.writeToHandle.getValue().length); + } + } + } + public ModifiableLong getWriteToOffset() { return writeToOffset; } @@ -105,6 +137,13 @@ public void setWriteToOffset(long writeToOffset) { ModifiableVariableFactory.safelySetValue(this.writeToOffset, writeToOffset); } + public void setSoftlyWriteToOffset(long writeToOffset) { + if (this.writeToOffset == null || this.writeToOffset.getOriginalValue() == null) { + this.writeToOffset = + ModifiableVariableFactory.safelySetValue(this.writeToOffset, writeToOffset); + } + } + @Override public SftpRequestCopyDataMessageHandler getHandler(SshContext context) { return new SftpRequestCopyDataMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java index 1ea7c9186..0116526fd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCopyFileMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; @@ -39,10 +40,23 @@ public void setOverwriteDestination(byte overwriteDestination) { this.overwriteDestination, overwriteDestination); } + public void setSoftlyOverwriteDestination(byte overwriteDestination) { + if (this.overwriteDestination == null + || this.overwriteDestination.getOriginalValue() == null) { + this.overwriteDestination = + ModifiableVariableFactory.safelySetValue( + this.overwriteDestination, overwriteDestination); + } + } + public void setOverwriteDestination(boolean overwriteDestination) { setOverwriteDestination(Converter.booleanToByte(overwriteDestination)); } + public void setSoftlyOverwriteDestination(boolean overwriteDestination) { + setSoftlyOverwriteDestination(Converter.booleanToByte(overwriteDestination)); + } + public ModifiableInteger getDestinationPathLength() { return destinationPathLength; } @@ -78,11 +92,28 @@ public void setDestinationPath(ModifiableString destinationPath, boolean adjustL } public void setDestinationPath(String destinationPath, boolean adjustLengthField) { - if (adjustLengthField) { - setDestinationPathLength(destinationPath.getBytes(StandardCharsets.UTF_8).length); - } this.destinationPath = ModifiableVariableFactory.safelySetValue(this.destinationPath, destinationPath); + if (adjustLengthField) { + setDestinationPathLength( + this.destinationPath.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyDestinationPath( + String destinationPath, boolean adjustLengthField, Config config) { + if (this.destinationPath == null || this.destinationPath.getOriginalValue() == null) { + this.destinationPath = + ModifiableVariableFactory.safelySetValue(this.destinationPath, destinationPath); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || destinationPathLength == null + || destinationPathLength.getOriginalValue() == null) { + setDestinationPathLength( + this.destinationPath.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedMessage.java index 595d0be24..89d7a83fa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMessage; import java.nio.charset.StandardCharsets; @@ -60,13 +61,34 @@ public void setExtendedRequestName( } public void setExtendedRequestName(String extendedRequestName, boolean adjustLengthField) { - if (adjustLengthField) { - setExtendedRequestNameLength( - extendedRequestName.getBytes(StandardCharsets.US_ASCII).length); - } this.extendedRequestName = ModifiableVariableFactory.safelySetValue( this.extendedRequestName, extendedRequestName); + if (adjustLengthField) { + setExtendedRequestNameLength( + this.extendedRequestName.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + + public void setSoftlyExtendedRequestName( + String extendedRequestName, boolean adjustLengthField, Config config) { + if (this.extendedRequestName == null + || this.extendedRequestName.getOriginalValue() == null) { + this.extendedRequestName = + ModifiableVariableFactory.safelySetValue( + this.extendedRequestName, extendedRequestName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || extendedRequestNameLength == null + || extendedRequestNameLength.getOriginalValue() == null) { + setExtendedRequestNameLength( + this.extendedRequestName + .getValue() + .getBytes(StandardCharsets.US_ASCII) + .length); + } + } } public void setExtendedRequestName(SftpExtension extension, boolean adjustLengthField) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithHandleMessage.java index 4646b7818..10a2c8217 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithHandleMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; public abstract class SftpRequestExtendedWithHandleMessage< T extends SftpRequestExtendedWithHandleMessage> @@ -56,4 +57,19 @@ public void setHandle(byte[] handle, boolean adjustLengthField) { setHandleLength(this.handle.getValue().length); } } + + public void setSoftlyHandle(byte[] handle, boolean adjustLengthField, Config config) { + if (config.getAlwaysPrepareSftpHandle() + || this.handle == null + || this.handle.getOriginalValue() == null) { + this.handle = ModifiableVariableFactory.safelySetValue(this.handle, handle); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || handleLength == null + || handleLength.getOriginalValue() == null) { + setHandleLength(this.handle.getValue().length); + } + } + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java index a4288557d..03519a526 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import java.nio.charset.StandardCharsets; public abstract class SftpRequestExtendedWithPathMessage< @@ -51,9 +52,22 @@ public void setPath(ModifiableString path, boolean adjustLengthField) { } public void setPath(String path, boolean adjustLengthField) { + this.path = ModifiableVariableFactory.safelySetValue(this.path, path); if (adjustLengthField) { - setPathLength(path.getBytes(StandardCharsets.UTF_8).length); + setPathLength(this.path.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyPath(String path, boolean adjustLengthField, Config config) { + if (this.path == null || this.path.getOriginalValue() == null) { + this.path = ModifiableVariableFactory.safelySetValue(this.path, path); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || pathLength == null + || pathLength.getOriginalValue() == null) { + setPathLength(this.path.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.path = ModifiableVariableFactory.safelySetValue(this.path, path); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java index caf34daf8..f44cafa41 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestHardlinkMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -55,10 +56,23 @@ public void setNewPath(ModifiableString newPath, boolean adjustLengthField) { } public void setNewPath(String newPath, boolean adjustLengthField) { + this.newPath = ModifiableVariableFactory.safelySetValue(this.newPath, newPath); if (adjustLengthField) { - setNewPathLength(newPath.getBytes(StandardCharsets.UTF_8).length); + setNewPathLength(this.newPath.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyNewPath(String newPath, boolean adjustLengthField, Config config) { + if (this.newPath == null || this.newPath.getOriginalValue() == null) { + this.newPath = ModifiableVariableFactory.safelySetValue(this.newPath, newPath); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || newPathLength == null + || newPathLength.getOriginalValue() == null) { + setNewPathLength(this.newPath.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.newPath = ModifiableVariableFactory.safelySetValue(this.newPath, newPath); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java index 31161601a..7ad6fb730 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestHomeDirectoryMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -53,10 +54,23 @@ public void setUsername(ModifiableString username, boolean adjustLengthField) { } public void setUsername(String username, boolean adjustLengthField) { + this.username = ModifiableVariableFactory.safelySetValue(this.username, username); if (adjustLengthField) { - setUsernameLength(username.getBytes(StandardCharsets.UTF_8).length); + setUsernameLength(this.username.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyUsername(String username, boolean adjustLengthField, Config config) { + if (this.username == null || this.username.getOriginalValue() == null) { + this.username = ModifiableVariableFactory.safelySetValue(this.username, username); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || usernameLength == null + || usernameLength.getOriginalValue() == null) { + setUsernameLength(this.username.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.username = ModifiableVariableFactory.safelySetValue(this.username, username); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java index 7ae36eaa3..c4bf58a0e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java @@ -17,7 +17,7 @@ public class SftpRequestLinkSetStatMessage extends SftpRequestExtendedWithPathMessage { - @HoldsModifiableVariable private SftpFileAttributes attributes; + @HoldsModifiableVariable private SftpFileAttributes attributes = new SftpFileAttributes(); public SftpFileAttributes getAttributes() { return attributes; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java index 4db79aebe..b4c1c3287 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestPosixRenameMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -55,10 +56,23 @@ public void setNewPath(ModifiableString newPath, boolean adjustLengthField) { } public void setNewPath(String newPath, boolean adjustLengthField) { + this.newPath = ModifiableVariableFactory.safelySetValue(this.newPath, newPath); if (adjustLengthField) { - setNewPathLength(newPath.getBytes(StandardCharsets.UTF_8).length); + setNewPathLength(this.newPath.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyNewPath(String newPath, boolean adjustLengthField, Config config) { + if (this.newPath == null || this.newPath.getOriginalValue() == null) { + this.newPath = ModifiableVariableFactory.safelySetValue(this.newPath, newPath); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || newPathLength == null + || newPathLength.getOriginalValue() == null) { + setNewPathLength(this.newPath.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.newPath = ModifiableVariableFactory.safelySetValue(this.newPath, newPath); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java index 8ae0beedc..147a39a84 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java @@ -29,6 +29,12 @@ public void setLineNumber(long lineNumber) { this.lineNumber = ModifiableVariableFactory.safelySetValue(this.lineNumber, lineNumber); } + public void setSoftlyLineNumber(long lineNumber) { + if (this.lineNumber == null || this.lineNumber.getOriginalValue() == null) { + this.lineNumber = ModifiableVariableFactory.safelySetValue(this.lineNumber, lineNumber); + } + } + @Override public SftpRequestTextSeekMessageHandler getHandler(SshContext context) { return new SftpRequestTextSeekMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java index 6ab0a4df4..dc24a3310 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java @@ -31,6 +31,15 @@ public void setRequestSpecificData(byte[] requestSpecificData) { this.requestSpecificData, requestSpecificData); } + public void setSoftlyRequestSpecificData(byte[] requestSpecificData) { + if (this.requestSpecificData == null + || this.requestSpecificData.getOriginalValue() == null) { + this.requestSpecificData = + ModifiableVariableFactory.safelySetValue( + this.requestSpecificData, requestSpecificData); + } + } + @Override public SftpRequestUnknownMessageHandler getHandler(SshContext context) { return new SftpRequestUnknownMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java index 6729f2c12..b4896eaca 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestUsersGroupsByIdMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpIdEntry; import de.rub.nds.sshattacker.core.state.SshContext; @@ -50,6 +51,15 @@ public void setUserIdsLength(int userIdsLength) { ModifiableVariableFactory.safelySetValue(this.userIdsLength, userIdsLength); } + public void setSoftlyUserIdsLength(int userIdsLength, Config config) { + if (config.getAlwaysPrepareSftpLengthFields() + || this.userIdsLength == null + || this.userIdsLength.getOriginalValue() == null) { + this.userIdsLength = + ModifiableVariableFactory.safelySetValue(this.userIdsLength, userIdsLength); + } + } + public List getUserIds() { return userIds; } @@ -91,6 +101,15 @@ public void setGroupIdsLength(int groupIdsLength) { ModifiableVariableFactory.safelySetValue(this.groupIdsLength, groupIdsLength); } + public void setSoftlyGroupIdsLength(int groupIdsLength, Config config) { + if (config.getAlwaysPrepareSftpLengthFields() + || this.groupIdsLength == null + || this.groupIdsLength.getOriginalValue() == null) { + this.groupIdsLength = + ModifiableVariableFactory.safelySetValue(this.groupIdsLength, groupIdsLength); + } + } + public List getGroupIds() { return groupIds; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestVendorIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestVendorIdMessage.java index 9e63990ba..f7840619c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestVendorIdMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestVendorIdMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestVendorIdMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -59,10 +60,24 @@ public void setVendorName(ModifiableString vendorName, boolean adjustLengthField } public void setVendorName(String vendorName, boolean adjustLengthField) { + this.vendorName = ModifiableVariableFactory.safelySetValue(this.vendorName, vendorName); if (adjustLengthField) { - setVendorNameLength(vendorName.getBytes(StandardCharsets.UTF_8).length); + setVendorNameLength(this.vendorName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyVendorName(String vendorName, boolean adjustLengthField, Config config) { + if (this.vendorName == null || this.vendorName.getOriginalValue() == null) { + this.vendorName = ModifiableVariableFactory.safelySetValue(this.vendorName, vendorName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || vendorNameLength == null + || vendorNameLength.getOriginalValue() == null) { + setVendorNameLength( + this.vendorName.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.vendorName = ModifiableVariableFactory.safelySetValue(this.vendorName, vendorName); } public ModifiableInteger getProductNameLength() { @@ -98,10 +113,26 @@ public void setProductName(ModifiableString productName, boolean adjustLengthFie } public void setProductName(String productName, boolean adjustLengthField) { + this.productName = ModifiableVariableFactory.safelySetValue(this.productName, productName); if (adjustLengthField) { - setProductNameLength(productName.getBytes(StandardCharsets.UTF_8).length); + setProductNameLength( + this.productName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyProductName(String productName, boolean adjustLengthField, Config config) { + if (this.productName == null || this.productName.getOriginalValue() == null) { + this.productName = + ModifiableVariableFactory.safelySetValue(this.productName, productName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || productNameLength == null + || productNameLength.getOriginalValue() == null) { + setProductNameLength( + this.productName.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.productName = ModifiableVariableFactory.safelySetValue(this.productName, productName); } public ModifiableInteger getProductVersionLength() { @@ -139,11 +170,28 @@ public void setProductVersion(ModifiableString productVersion, boolean adjustLen } public void setProductVersion(String productVersion, boolean adjustLengthField) { - if (adjustLengthField) { - setProductVersionLength(productVersion.getBytes(StandardCharsets.UTF_8).length); - } this.productVersion = ModifiableVariableFactory.safelySetValue(this.productVersion, productVersion); + if (adjustLengthField) { + setProductVersionLength( + this.productVersion.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyProductVersion( + String productVersion, boolean adjustLengthField, Config config) { + if (this.productVersion == null || this.productVersion.getOriginalValue() == null) { + this.productVersion = + ModifiableVariableFactory.safelySetValue(this.productVersion, productVersion); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || productVersionLength == null + || productVersionLength.getOriginalValue() == null) { + setProductVersionLength( + this.productVersion.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } } public ModifiableLong getProductBuildNumber() { @@ -160,6 +208,14 @@ public void setProductBuildNumber(long productBuildNumber) { this.productBuildNumber, productBuildNumber); } + public void setSoftlyProductBuildNumber(long productBuildNumber) { + if (this.productBuildNumber == null || this.productBuildNumber.getOriginalValue() == null) { + this.productBuildNumber = + ModifiableVariableFactory.safelySetValue( + this.productBuildNumber, productBuildNumber); + } + } + @Override public SftpRequestVendorIdMessageHandler getHandler(SshContext context) { return new SftpRequestVendorIdMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java index 19db15867..3f5d9d871 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.HashAlgorithm; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseCheckFileMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; @@ -63,16 +64,41 @@ public void setUsedHashAlgorithm( } public void setUsedHashAlgorithm(String usedHashAlgorithm, boolean adjustLengthField) { + this.usedHashAlgorithm = + ModifiableVariableFactory.safelySetValue(this.usedHashAlgorithm, usedHashAlgorithm); if (adjustLengthField) { setUsedHashAlgorithmLength( - usedHashAlgorithm.getBytes(StandardCharsets.US_ASCII).length); + this.usedHashAlgorithm.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + + public void setSoftlyUsedHashAlgorithm( + String usedHashAlgorithm, boolean adjustLengthField, Config config) { + if (this.usedHashAlgorithm == null || this.usedHashAlgorithm.getOriginalValue() == null) { + this.usedHashAlgorithm = + ModifiableVariableFactory.safelySetValue( + this.usedHashAlgorithm, usedHashAlgorithm); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || usedHashAlgorithmLength == null + || usedHashAlgorithmLength.getOriginalValue() == null) { + setUsedHashAlgorithmLength( + this.usedHashAlgorithm + .getValue() + .getBytes(StandardCharsets.US_ASCII) + .length); + } } - this.usedHashAlgorithm = - ModifiableVariableFactory.safelySetValue(this.usedHashAlgorithm, usedHashAlgorithm); } public void setUsedHashAlgorithm(HashAlgorithm usedHashAlgorithm, boolean adjustLengthField) { - setUsedHashAlgorithm(usedHashAlgorithm.getName()); + setUsedHashAlgorithm(usedHashAlgorithm.getName(), adjustLengthField); + } + + public void setSoftlyUsedHashAlgorithm( + HashAlgorithm usedHashAlgorithm, boolean adjustLengthField, Config config) { + setSoftlyUsedHashAlgorithm(usedHashAlgorithm.getName(), adjustLengthField, config); } public ModifiableByteArray getHash() { @@ -87,6 +113,12 @@ public void setHash(byte[] hash) { this.hash = ModifiableVariableFactory.safelySetValue(this.hash, hash); } + public void setSoftlyHash(byte[] hash) { + if (this.hash == null || this.hash.getOriginalValue() == null) { + this.hash = ModifiableVariableFactory.safelySetValue(this.hash, hash); + } + } + @Override public SftpResponseCheckFileMessageHandler getHandler(SshContext context) { return new SftpResponseCheckFileMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java index 77c66cdbd..af2b89982 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java @@ -34,6 +34,15 @@ public void setMaximumPacketLength(long maximumPacketLength) { this.maximumPacketLength, maximumPacketLength); } + public void setSoftlyMaximumPacketLength(long maximumPacketLength) { + if (this.maximumPacketLength == null + || this.maximumPacketLength.getOriginalValue() == null) { + this.maximumPacketLength = + ModifiableVariableFactory.safelySetValue( + this.maximumPacketLength, maximumPacketLength); + } + } + public ModifiableLong getMaximumReadLength() { return maximumReadLength; } @@ -47,6 +56,14 @@ public void setMaximumReadLength(long maximumReadLength) { ModifiableVariableFactory.safelySetValue(this.maximumReadLength, maximumReadLength); } + public void setSoftlyMaximumReadLength(long maximumReadLength) { + if (this.maximumReadLength == null || this.maximumReadLength.getOriginalValue() == null) { + this.maximumReadLength = + ModifiableVariableFactory.safelySetValue( + this.maximumReadLength, maximumReadLength); + } + } + public ModifiableLong getMaximumWriteLength() { return maximumWriteLength; } @@ -61,6 +78,14 @@ public void setMaximumWriteLength(long maximumWriteLength) { this.maximumWriteLength, maximumWriteLength); } + public void setSoftlyMaximumWriteLength(long maximumWriteLength) { + if (this.maximumWriteLength == null || this.maximumWriteLength.getOriginalValue() == null) { + this.maximumWriteLength = + ModifiableVariableFactory.safelySetValue( + this.maximumWriteLength, maximumWriteLength); + } + } + public ModifiableLong getMaximumOpenHandles() { return maximumOpenHandles; } @@ -75,6 +100,14 @@ public void setMaximumOpenHandles(long maximumOpenHandles) { this.maximumOpenHandles, maximumOpenHandles); } + public void setSoftlyMaximumOpenHandles(long maximumOpenHandles) { + if (this.maximumOpenHandles == null || this.maximumOpenHandles.getOriginalValue() == null) { + this.maximumOpenHandles = + ModifiableVariableFactory.safelySetValue( + this.maximumOpenHandles, maximumOpenHandles); + } + } + @Override public SftpResponseLimitsMessageHandler getHandler(SshContext context) { return new SftpResponseLimitsMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseSpaceAvailableMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseSpaceAvailableMessage.java index 7b16e30a6..99639d98f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseSpaceAvailableMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseSpaceAvailableMessage.java @@ -36,6 +36,13 @@ public void setBytesOnDevice(long bytesOnDevice) { ModifiableVariableFactory.safelySetValue(this.bytesOnDevice, bytesOnDevice); } + public void setSoftlyBytesOnDevice(long bytesOnDevice) { + if (this.bytesOnDevice == null || this.bytesOnDevice.getOriginalValue() == null) { + this.bytesOnDevice = + ModifiableVariableFactory.safelySetValue(this.bytesOnDevice, bytesOnDevice); + } + } + public ModifiableLong getUnusedBytesOnDevice() { return unusedBytesOnDevice; } @@ -50,6 +57,15 @@ public void setUnusedBytesOnDevice(long unusedBytesOnDevice) { this.unusedBytesOnDevice, unusedBytesOnDevice); } + public void setSoftlyUnusedBytesOnDevice(long unusedBytesOnDevice) { + if (this.unusedBytesOnDevice == null + || this.unusedBytesOnDevice.getOriginalValue() == null) { + this.unusedBytesOnDevice = + ModifiableVariableFactory.safelySetValue( + this.unusedBytesOnDevice, unusedBytesOnDevice); + } + } + public ModifiableLong getBytesAvailableToUser() { return bytesAvailableToUser; } @@ -64,6 +80,15 @@ public void setBytesAvailableToUser(long bytesAvailableToUser) { this.bytesAvailableToUser, bytesAvailableToUser); } + public void setSoftlyBytesAvailableToUser(long bytesAvailableToUser) { + if (this.bytesAvailableToUser == null + || this.bytesAvailableToUser.getOriginalValue() == null) { + this.bytesAvailableToUser = + ModifiableVariableFactory.safelySetValue( + this.bytesAvailableToUser, bytesAvailableToUser); + } + } + public ModifiableLong getUnusedBytesAvailableToUser() { return unusedBytesAvailableToUser; } @@ -78,6 +103,15 @@ public void setUnusedBytesAvailableToUser(long unusedBytesAvailableToUser) { this.unusedBytesAvailableToUser, unusedBytesAvailableToUser); } + public void setSoftlyUnusedBytesAvailableToUser(long unusedBytesAvailableToUser) { + if (this.unusedBytesAvailableToUser == null + || this.unusedBytesAvailableToUser.getOriginalValue() == null) { + this.unusedBytesAvailableToUser = + ModifiableVariableFactory.safelySetValue( + this.unusedBytesAvailableToUser, unusedBytesAvailableToUser); + } + } + public ModifiableInteger getBytesPerAllocationUnit() { return bytesPerAllocationUnit; } @@ -92,6 +126,15 @@ public void setBytesPerAllocationUnit(int bytesPerAllocationUnit) { this.bytesPerAllocationUnit, bytesPerAllocationUnit); } + public void setSoftlyBytesPerAllocationUnit(int bytesPerAllocationUnit) { + if (this.bytesPerAllocationUnit == null + || this.bytesPerAllocationUnit.getOriginalValue() == null) { + this.bytesPerAllocationUnit = + ModifiableVariableFactory.safelySetValue( + this.bytesPerAllocationUnit, bytesPerAllocationUnit); + } + } + @Override public SftpResponseSpaceAvailableMessageHandler getHandler(SshContext context) { return new SftpResponseSpaceAvailableMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseStatVfsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseStatVfsMessage.java index 768573f05..1073243bf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseStatVfsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseStatVfsMessage.java @@ -40,6 +40,12 @@ public void setBlockSize(long blockSize) { this.blockSize = ModifiableVariableFactory.safelySetValue(this.blockSize, blockSize); } + public void setSoftlyBlockSize(long blockSize) { + if (this.blockSize == null || this.blockSize.getOriginalValue() == null) { + this.blockSize = ModifiableVariableFactory.safelySetValue(this.blockSize, blockSize); + } + } + public ModifiableLong getFundamentalBlockSize() { return fundamentalBlockSize; } @@ -54,6 +60,15 @@ public void setFundamentalBlockSize(long fundamentalBlockSize) { this.fundamentalBlockSize, fundamentalBlockSize); } + public void setSoftlyFundamentalBlockSize(long fundamentalBlockSize) { + if (this.fundamentalBlockSize == null + || this.fundamentalBlockSize.getOriginalValue() == null) { + this.fundamentalBlockSize = + ModifiableVariableFactory.safelySetValue( + this.fundamentalBlockSize, fundamentalBlockSize); + } + } + public ModifiableLong getCountBlocks() { return countBlocks; } @@ -66,6 +81,13 @@ public void setCountBlocks(long countBlocks) { this.countBlocks = ModifiableVariableFactory.safelySetValue(this.countBlocks, countBlocks); } + public void setSoftlyCountBlocks(long countBlocks) { + if (this.countBlocks == null || this.countBlocks.getOriginalValue() == null) { + this.countBlocks = + ModifiableVariableFactory.safelySetValue(this.countBlocks, countBlocks); + } + } + public ModifiableLong getFreeBlocks() { return freeBlocks; } @@ -78,6 +100,12 @@ public void setFreeBlocks(long freeBlocks) { this.freeBlocks = ModifiableVariableFactory.safelySetValue(this.freeBlocks, freeBlocks); } + public void setSoftlyFreeBlocks(long freeBlocks) { + if (this.freeBlocks == null || this.freeBlocks.getOriginalValue() == null) { + this.freeBlocks = ModifiableVariableFactory.safelySetValue(this.freeBlocks, freeBlocks); + } + } + public ModifiableLong getFreeBlocksNonRoot() { return freeBlocksNonRoot; } @@ -91,6 +119,14 @@ public void setFreeBlocksNonRoot(long freeBlocksNonRoot) { ModifiableVariableFactory.safelySetValue(this.freeBlocksNonRoot, freeBlocksNonRoot); } + public void setSoftlyFreeBlocksNonRoot(long freeBlocksNonRoot) { + if (this.freeBlocksNonRoot == null || this.freeBlocksNonRoot.getOriginalValue() == null) { + this.freeBlocksNonRoot = + ModifiableVariableFactory.safelySetValue( + this.freeBlocksNonRoot, freeBlocksNonRoot); + } + } + public ModifiableLong getFileInodes() { return fileInodes; } @@ -103,6 +139,12 @@ public void setFileInodes(long fileInodes) { this.fileInodes = ModifiableVariableFactory.safelySetValue(this.fileInodes, fileInodes); } + public void setSoftlyFileInodes(long fileInodes) { + if (this.fileInodes == null || this.fileInodes.getOriginalValue() == null) { + this.fileInodes = ModifiableVariableFactory.safelySetValue(this.fileInodes, fileInodes); + } + } + public ModifiableLong getFreeInodes() { return freeInodes; } @@ -115,6 +157,12 @@ public void setFreeInodes(long freeInodes) { this.freeInodes = ModifiableVariableFactory.safelySetValue(this.freeInodes, freeInodes); } + public void setSoftlyFreeInodes(long freeInodes) { + if (this.freeInodes == null || this.freeInodes.getOriginalValue() == null) { + this.freeInodes = ModifiableVariableFactory.safelySetValue(this.freeInodes, freeInodes); + } + } + public ModifiableLong getFreeInodesNonRoot() { return freeInodesNonRoot; } @@ -128,6 +176,14 @@ public void setFreeInodesNonRoot(long freeInodesNonRoot) { ModifiableVariableFactory.safelySetValue(this.freeInodesNonRoot, freeInodesNonRoot); } + public void setSoftlyFreeInodesNonRoot(long freeInodesNonRoot) { + if (this.freeInodesNonRoot == null || this.freeInodesNonRoot.getOriginalValue() == null) { + this.freeInodesNonRoot = + ModifiableVariableFactory.safelySetValue( + this.freeInodesNonRoot, freeInodesNonRoot); + } + } + public ModifiableLong getSystemId() { return systemId; } @@ -140,6 +196,12 @@ public void setSystemId(long systemId) { this.systemId = ModifiableVariableFactory.safelySetValue(this.systemId, systemId); } + public void setSoftlySystemId(long systemId) { + if (this.systemId == null || this.systemId.getOriginalValue() == null) { + this.systemId = ModifiableVariableFactory.safelySetValue(this.systemId, systemId); + } + } + public ModifiableLong getFlags() { return flags; } @@ -152,10 +214,20 @@ public void setFlags(long flags) { this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); } + public void setSoftlyFlags(long flags) { + if (this.flags == null || this.flags.getOriginalValue() == null) { + this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); + } + } + public void setFlags(SftpVfsFlag... vfsFlags) { setFlags(SftpVfsFlag.flagsToLong(vfsFlags)); } + public void setSoftlyFlags(SftpVfsFlag... vfsFlags) { + setSoftlyFlags(SftpVfsFlag.flagsToLong(vfsFlags)); + } + public ModifiableLong getMaximumFilenameLength() { return maximumFilenameLength; } @@ -170,6 +242,15 @@ public void setMaximumFilenameLength(long maximumFilenameLength) { this.maximumFilenameLength, maximumFilenameLength); } + public void setSoftlyMaximumFilenameLength(long maximumFilenameLength) { + if (this.maximumFilenameLength == null + || this.maximumFilenameLength.getOriginalValue() == null) { + this.maximumFilenameLength = + ModifiableVariableFactory.safelySetValue( + this.maximumFilenameLength, maximumFilenameLength); + } + } + @Override public SftpResponseStatVfsMessageHandler getHandler(SshContext context) { return new SftpResponseStatVfsMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUnknownMessage.java index 8e9259ea4..f3fbc9412 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUnknownMessage.java @@ -30,6 +30,15 @@ public void setResponseSpecificData(byte[] responseSpecificData) { this.responseSpecificData, responseSpecificData); } + public void setSoftlyResponseSpecificData(byte[] responseSpecificData) { + if (this.responseSpecificData == null + || this.responseSpecificData.getOriginalValue() == null) { + this.responseSpecificData = + ModifiableVariableFactory.safelySetValue( + this.responseSpecificData, responseSpecificData); + } + } + @Override public SftpResponseUnknownMessageHandler getHandler(SshContext context) { return new SftpResponseUnknownMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java index 009444c06..8346b1f4c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseUsersGroupsByIdMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpNameEntry; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; @@ -52,6 +53,15 @@ public void setUserNamesLength(int userNamesLength) { ModifiableVariableFactory.safelySetValue(this.userNamesLength, userNamesLength); } + public void setSoftlyUserNamesLength(int userNamesLength, Config config) { + if (config.getAlwaysPrepareSftpLengthFields() + || this.userNamesLength == null + || this.userNamesLength.getOriginalValue() == null) { + this.userNamesLength = + ModifiableVariableFactory.safelySetValue(this.userNamesLength, userNamesLength); + } + } + public List getUserNames() { return userNames; } @@ -94,6 +104,16 @@ public void setGroupNamesLength(int groupNamesLength) { ModifiableVariableFactory.safelySetValue(this.groupNamesLength, groupNamesLength); } + public void setSoftlyGroupNamesLength(int groupNamesLength, Config config) { + if (config.getAlwaysPrepareSftpLengthFields() + || this.groupNamesLength == null + || this.groupNamesLength.getOriginalValue() == null) { + this.groupNamesLength = + ModifiableVariableFactory.safelySetValue( + this.groupNamesLength, groupNamesLength); + } + } + public List getGroupNames() { return groupNames; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java index 03b02305b..b10a3d183 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpAbstractExtensionHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; @@ -62,10 +63,23 @@ public void setName(ModifiableString name, boolean adjustLengthField) { } public void setName(String name, boolean adjustLengthField) { + this.name = ModifiableVariableFactory.safelySetValue(this.name, name); if (adjustLengthField) { - setNameLength(name.getBytes(StandardCharsets.US_ASCII).length); + setNameLength(this.name.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + + public void setSoftlyName(String name, boolean adjustLengthField, Config config) { + if (this.name == null || this.name.getOriginalValue() == null) { + this.name = ModifiableVariableFactory.safelySetValue(this.name, name); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || nameLength == null + || nameLength.getOriginalValue() == null) { + setNameLength(this.name.getValue().getBytes(StandardCharsets.US_ASCII).length); + } } - this.name = ModifiableVariableFactory.safelySetValue(this.name, name); } public void setName(SftpExtension extension, boolean adjustLengthField) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java index 640012fee..c5b4a334f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionNewlineHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -54,11 +55,29 @@ public void setNewlineSeperator(ModifiableString newlineSeperator, boolean adjus } public void setNewlineSeperator(String newlineSeperator, boolean adjustLengthField) { - if (adjustLengthField) { - setNewlineSeperatorLength(newlineSeperator.getBytes(StandardCharsets.UTF_8).length); - } this.newlineSeperator = ModifiableVariableFactory.safelySetValue(this.newlineSeperator, newlineSeperator); + if (adjustLengthField) { + setNewlineSeperatorLength( + this.newlineSeperator.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyNewlineSeperator( + String newlineSeperator, boolean adjustLengthField, Config config) { + if (this.newlineSeperator == null || this.newlineSeperator.getOriginalValue() == null) { + this.newlineSeperator = + ModifiableVariableFactory.safelySetValue( + this.newlineSeperator, newlineSeperator); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || newlineSeperatorLength == null + || newlineSeperatorLength.getOriginalValue() == null) { + setNewlineSeperatorLength( + this.newlineSeperator.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUnknown.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUnknown.java index 3b46f2c61..779a36427 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUnknown.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUnknown.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionUnknownHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -51,10 +52,23 @@ public void setValue(ModifiableByteArray value, boolean adjustLengthField) { } public void setValue(byte[] value, boolean adjustLengthField) { + this.value = ModifiableVariableFactory.safelySetValue(this.value, value); if (adjustLengthField) { - setValueLength(value.length); + setValueLength(this.value.getValue().length); + } + } + + public void setSoftlyValue(byte[] value, boolean adjustLengthField, Config config) { + if (this.value == null || this.value.getOriginalValue() == null) { + this.value = ModifiableVariableFactory.safelySetValue(this.value, value); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || valueLength == null + || valueLength.getOriginalValue() == null) { + setValueLength(this.value.getValue().length); + } } - this.value = ModifiableVariableFactory.safelySetValue(this.value, value); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java index 65cb7944e..7edeaa47c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionVendorIdHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -40,6 +41,17 @@ public void setVendorStructureLength(int vendorStructureLength) { this.vendorStructureLength, vendorStructureLength); } + public void setSoftlyVendorStructureLength(int vendorStructureLength, Config config) { + if (config.getAlwaysPrepareSftpLengthFields() + || this.vendorStructureLength == null + || this.vendorStructureLength.getOriginalValue() == null) { + + this.vendorStructureLength = + ModifiableVariableFactory.safelySetValue( + this.vendorStructureLength, vendorStructureLength); + } + } + public ModifiableInteger getVendorNameLength() { return vendorNameLength; } @@ -73,10 +85,24 @@ public void setVendorName(ModifiableString vendorName, boolean adjustLengthField } public void setVendorName(String vendorName, boolean adjustLengthField) { + this.vendorName = ModifiableVariableFactory.safelySetValue(this.vendorName, vendorName); if (adjustLengthField) { - setVendorNameLength(vendorName.getBytes(StandardCharsets.UTF_8).length); + setVendorNameLength(this.vendorName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyVendorName(String vendorName, boolean adjustLengthField, Config config) { + if (this.vendorName == null || this.vendorName.getOriginalValue() == null) { + this.vendorName = ModifiableVariableFactory.safelySetValue(this.vendorName, vendorName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || vendorNameLength == null + || vendorNameLength.getOriginalValue() == null) { + setVendorNameLength( + this.vendorName.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.vendorName = ModifiableVariableFactory.safelySetValue(this.vendorName, vendorName); } public ModifiableInteger getProductNameLength() { @@ -112,10 +138,26 @@ public void setProductName(ModifiableString productName, boolean adjustLengthFie } public void setProductName(String productName, boolean adjustLengthField) { + this.productName = ModifiableVariableFactory.safelySetValue(this.productName, productName); if (adjustLengthField) { - setProductNameLength(productName.getBytes(StandardCharsets.UTF_8).length); + setProductNameLength( + this.productName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyProductName(String productName, boolean adjustLengthField, Config config) { + if (this.productName == null || this.productName.getOriginalValue() == null) { + this.productName = + ModifiableVariableFactory.safelySetValue(this.productName, productName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || productNameLength == null + || productNameLength.getOriginalValue() == null) { + setProductNameLength( + this.productName.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.productName = ModifiableVariableFactory.safelySetValue(this.productName, productName); } public ModifiableInteger getProductVersionLength() { @@ -153,11 +195,28 @@ public void setProductVersion(ModifiableString productVersion, boolean adjustLen } public void setProductVersion(String productVersion, boolean adjustLengthField) { - if (adjustLengthField) { - setProductVersionLength(productVersion.getBytes(StandardCharsets.UTF_8).length); - } this.productVersion = ModifiableVariableFactory.safelySetValue(this.productVersion, productVersion); + if (adjustLengthField) { + setProductVersionLength( + this.productVersion.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyProductVersion( + String productVersion, boolean adjustLengthField, Config config) { + if (this.productVersion == null || this.productVersion.getOriginalValue() == null) { + this.productVersion = + ModifiableVariableFactory.safelySetValue(this.productVersion, productVersion); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || productVersionLength == null + || productVersionLength.getOriginalValue() == null) { + setProductVersionLength( + this.productVersion.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } } public ModifiableLong getProductBuildNumber() { @@ -174,6 +233,14 @@ public void setProductBuildNumber(long productBuildNumber) { this.productBuildNumber, productBuildNumber); } + public void setSoftlyProductBuildNumber(long productBuildNumber) { + if (this.productBuildNumber == null || this.productBuildNumber.getOriginalValue() == null) { + this.productBuildNumber = + ModifiableVariableFactory.safelySetValue( + this.productBuildNumber, productBuildNumber); + } + } + @Override public SftpExtensionVendorIdHandler getHandler(SshContext context) { return new SftpExtensionVendorIdHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionWithVersion.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionWithVersion.java index f1256b626..db6e33b33 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionWithVersion.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionWithVersion.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import java.nio.charset.StandardCharsets; public abstract class SftpExtensionWithVersion> @@ -50,9 +51,23 @@ public void setVersion(ModifiableString version, boolean adjustLengthField) { } public void setVersion(String version, boolean adjustLengthField) { + this.version = ModifiableVariableFactory.safelySetValue(this.version, version); if (adjustLengthField) { - setVersionLength(version.getBytes(StandardCharsets.US_ASCII).length); + setVersionLength(this.version.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + + public void setSoftlyVersion(String version, boolean adjustLengthField, Config config) { + if (this.version == null || this.version.getOriginalValue() == null) { + this.version = ModifiableVariableFactory.safelySetValue(this.version, version); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || versionLength == null + || versionLength.getOriginalValue() == null) { + setVersionLength( + this.version.getValue().getBytes(StandardCharsets.US_ASCII).length); + } } - this.version = ModifiableVariableFactory.safelySetValue(this.version, version); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpAclEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpAclEntry.java index 7760db0c0..a2b7370fa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpAclEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpAclEntry.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.SftpAceFlag; import de.rub.nds.sshattacker.core.constants.SftpAceMask; import de.rub.nds.sshattacker.core.constants.SftpAceType; @@ -41,10 +42,22 @@ public void setType(int type) { this.type = ModifiableVariableFactory.safelySetValue(this.type, type); } + public void setSoftlyType(int type) { + if (this.type == null || this.type.getOriginalValue() == null) { + this.type = ModifiableVariableFactory.safelySetValue(this.type, type); + } + } + public void setType(SftpAceType type) { setType(type.getType()); } + public void setSoftlyType(SftpAceType type) { + if (this.type == null || this.type.getOriginalValue() == null) { + setType(type.getType()); + } + } + public ModifiableInteger getFlags() { return flags; } @@ -57,10 +70,22 @@ public void setFlags(int flags) { this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); } + public void setSoftlyFlags(int flags) { + if (this.flags == null || this.flags.getOriginalValue() == null) { + this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); + } + } + public void setFlags(SftpAceFlag... flags) { setFlags(SftpAceFlag.flagsToInt(flags)); } + public void setSoftlyFlags(SftpAceFlag... flags) { + if (this.flags == null || this.flags.getOriginalValue() == null) { + setFlags(SftpAceFlag.flagsToInt(flags)); + } + } + public ModifiableInteger getMask() { return mask; } @@ -73,10 +98,20 @@ public void setMask(int mask) { this.mask = ModifiableVariableFactory.safelySetValue(this.mask, mask); } + public void setSoftlyMask(int mask) { + if (this.mask == null || this.mask.getOriginalValue() == null) { + this.mask = ModifiableVariableFactory.safelySetValue(this.mask, mask); + } + } + public void setMask(SftpAceMask... flags) { setMask(SftpAceMask.flagsToInt(flags)); } + public void setSoftlyMask(SftpAceMask... flags) { + setSoftlyMask(SftpAceMask.flagsToInt(flags)); + } + public ModifiableInteger getWhoLength() { return whoLength; } @@ -109,10 +144,23 @@ public void setWho(ModifiableString who, boolean adjustLengthField) { } public void setWho(String who, boolean adjustLengthField) { + this.who = ModifiableVariableFactory.safelySetValue(this.who, who); if (adjustLengthField) { - setWhoLength(who.getBytes(StandardCharsets.UTF_8).length); + setWhoLength(this.who.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyWho(String who, boolean adjustLengthField, Config config) { + if (this.who == null || this.who.getOriginalValue() == null) { + this.who = ModifiableVariableFactory.safelySetValue(this.who, who); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || whoLength == null + || whoLength.getOriginalValue() == null) { + setWhoLength(this.who.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.who = ModifiableVariableFactory.safelySetValue(this.who, who); } public SftpAclEntryHandler getHandler(SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java index 02da94b3f..9cb081bfc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java @@ -13,6 +13,7 @@ import de.rub.nds.modifiablevariable.longint.ModifiableLong; import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.constants.SftpFileType; import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpFileAttributesHandler; @@ -72,10 +73,22 @@ public void setFlags(int flags) { this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); } + public void setSoftlyFlags(int flags) { + if (this.flags == null || this.flags.getOriginalValue() == null) { + this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); + } + } + public void setFlags(SftpFileAttributeFlag... attributeFlags) { setFlags(SftpFileAttributeFlag.flagsToInt(attributeFlags)); } + public void setSoftlyFlags(SftpFileAttributeFlag... attributeFlags) { + if (flags == null || flags.getOriginalValue() == null) { + setFlags(SftpFileAttributeFlag.flagsToInt(attributeFlags)); + } + } + public ModifiableLong getSize() { return size; } @@ -88,6 +101,12 @@ public void setSize(long size) { this.size = ModifiableVariableFactory.safelySetValue(this.size, size); } + public void setSoftlySize(long size) { + if (this.size == null || this.size.getOriginalValue() == null) { + this.size = ModifiableVariableFactory.safelySetValue(this.size, size); + } + } + public void clearSize() { size = null; } @@ -104,6 +123,12 @@ public void setUserId(int userId) { this.userId = ModifiableVariableFactory.safelySetValue(this.userId, userId); } + public void setSoftlyUserId(int userId) { + if (this.userId == null || this.userId.getOriginalValue() == null) { + this.userId = ModifiableVariableFactory.safelySetValue(this.userId, userId); + } + } + public void clearUserId() { userId = null; } @@ -120,6 +145,12 @@ public void setGroupId(int groupId) { this.groupId = ModifiableVariableFactory.safelySetValue(this.groupId, groupId); } + public void setSoftlyGroupId(int groupId) { + if (this.groupId == null || this.groupId.getOriginalValue() == null) { + this.groupId = ModifiableVariableFactory.safelySetValue(this.groupId, groupId); + } + } + public void clearGroupId() { groupId = null; } @@ -136,6 +167,13 @@ public void setPermissions(int permissions) { this.permissions = ModifiableVariableFactory.safelySetValue(this.permissions, permissions); } + public void setSoftlyPermissions(int permissions) { + if (this.permissions == null || this.permissions.getOriginalValue() == null) { + this.permissions = + ModifiableVariableFactory.safelySetValue(this.permissions, permissions); + } + } + public void clearPermissions() { permissions = null; } @@ -152,6 +190,12 @@ public void setAccessTime(int accessTime) { this.accessTime = ModifiableVariableFactory.safelySetValue(this.accessTime, accessTime); } + public void setSoftlyAccessTime(int accessTime) { + if (this.accessTime == null || this.accessTime.getOriginalValue() == null) { + this.accessTime = ModifiableVariableFactory.safelySetValue(this.accessTime, accessTime); + } + } + public void clearAccessTime() { accessTime = null; } @@ -168,6 +212,12 @@ public void setModifyTime(int modifyTime) { this.modifyTime = ModifiableVariableFactory.safelySetValue(this.modifyTime, modifyTime); } + public void setSoftlyModifyTime(int modifyTime) { + if (this.modifyTime == null || this.modifyTime.getOriginalValue() == null) { + this.modifyTime = ModifiableVariableFactory.safelySetValue(this.modifyTime, modifyTime); + } + } + public void clearModifyTime() { modifyTime = null; } @@ -185,6 +235,15 @@ public void setExtendedCount(int extendedCount) { ModifiableVariableFactory.safelySetValue(this.extendedCount, extendedCount); } + public void setSoftlyExtendedCount(int extendedCount, Config config) { + if (config.getAlwaysPrepareSftpLengthFields() + || this.extendedCount == null + || this.extendedCount.getOriginalValue() == null) { + this.extendedCount = + ModifiableVariableFactory.safelySetValue(this.extendedCount, extendedCount); + } + } + public void clearExtendedAttributes() { extendedCount = null; extendedAttributes = new ArrayList<>(); @@ -236,10 +295,20 @@ public void setType(byte type) { this.type = ModifiableVariableFactory.safelySetValue(this.type, type); } + public void setSoftlyType(byte type) { + if (this.type == null || this.type.getOriginalValue() == null) { + this.type = ModifiableVariableFactory.safelySetValue(this.type, type); + } + } + public void setType(SftpFileType type) { setType(type.getType()); } + public void setSoftlyType(SftpFileType type) { + setSoftlyType(type.getType()); + } + public void clearType() { type = null; } @@ -276,10 +345,23 @@ public void setOwner(ModifiableString owner, boolean adjustLengthField) { } public void setOwner(String owner, boolean adjustLengthField) { + this.owner = ModifiableVariableFactory.safelySetValue(this.owner, owner); if (adjustLengthField) { - setOwnerLength(owner.getBytes(StandardCharsets.UTF_8).length); + setOwnerLength(this.owner.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyOwner(String owner, boolean adjustLengthField, Config config) { + if (this.owner == null || this.owner.getOriginalValue() == null) { + this.owner = ModifiableVariableFactory.safelySetValue(this.owner, owner); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || ownerLength == null + || ownerLength.getOriginalValue() == null) { + setOwnerLength(this.owner.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.owner = ModifiableVariableFactory.safelySetValue(this.owner, owner); } public void clearOwner() { @@ -319,10 +401,23 @@ public void setGroup(ModifiableString group, boolean adjustLengthField) { } public void setGroup(String group, boolean adjustLengthField) { + this.group = ModifiableVariableFactory.safelySetValue(this.group, group); if (adjustLengthField) { - setGroupLength(group.getBytes(StandardCharsets.UTF_8).length); + setGroupLength(this.group.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyGroup(String group, boolean adjustLengthField, Config config) { + if (this.group == null || this.group.getOriginalValue() == null) { + this.group = ModifiableVariableFactory.safelySetValue(this.group, group); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || groupLength == null + || groupLength.getOriginalValue() == null) { + setGroupLength(this.group.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.group = ModifiableVariableFactory.safelySetValue(this.group, group); } public void clearGroup() { @@ -342,6 +437,12 @@ public void setCreateTime(int createTime) { this.createTime = ModifiableVariableFactory.safelySetValue(this.createTime, createTime); } + public void setSoftlyCreateTime(int createTime) { + if (this.createTime == null || this.createTime.getOriginalValue() == null) { + this.createTime = ModifiableVariableFactory.safelySetValue(this.createTime, createTime); + } + } + public void clearCreateTime() { createTime = null; } @@ -364,6 +465,14 @@ public void setAclLength(int aclLength) { this.aclLength = ModifiableVariableFactory.safelySetValue(this.aclLength, aclLength); } + public void setSoftlyAclLength(int aclLength, Config config) { + if (config.getAlwaysPrepareSftpLengthFields() + || this.aclLength == null + || this.aclLength.getOriginalValue() == null) { + this.aclLength = ModifiableVariableFactory.safelySetValue(this.aclLength, aclLength); + } + } + public ModifiableInteger getAclEntriesCount() { return aclEntriesCount; } @@ -377,6 +486,15 @@ public void setAclEntriesCount(int aclEntriesCount) { ModifiableVariableFactory.safelySetValue(this.aclEntriesCount, aclEntriesCount); } + public void setSoftlyAclEntriesCount(int aclEntriesCount, Config config) { + if (config.getAlwaysPrepareSftpLengthFields() + || this.aclEntriesCount == null + || this.aclEntriesCount.getOriginalValue() == null) { + this.aclEntriesCount = + ModifiableVariableFactory.safelySetValue(this.aclEntriesCount, aclEntriesCount); + } + } + public List getAclEntries() { return aclEntries; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileExtendedAttribute.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileExtendedAttribute.java index 9c934b7c9..78a285d4c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileExtendedAttribute.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileExtendedAttribute.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpFileExtendedAttributeHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; @@ -58,10 +59,23 @@ public void setType(ModifiableString type, boolean adjustLengthField) { } public void setType(String type, boolean adjustLengthField) { + this.type = ModifiableVariableFactory.safelySetValue(this.type, type); if (adjustLengthField) { - setTypeLength(type.getBytes(StandardCharsets.US_ASCII).length); + setTypeLength(this.type.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + + public void setSoftlyType(String type, boolean adjustLengthField, Config config) { + if (this.type == null || this.type.getOriginalValue() == null) { + this.type = ModifiableVariableFactory.safelySetValue(this.type, type); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || typeLength == null + || typeLength.getOriginalValue() == null) { + setTypeLength(this.type.getValue().getBytes(StandardCharsets.US_ASCII).length); + } } - this.type = ModifiableVariableFactory.safelySetValue(this.type, type); } public ModifiableInteger getDataLength() { @@ -102,6 +116,19 @@ public void setData(byte[] data, boolean adjustLengthField) { } } + public void setSoftlyData(byte[] data, boolean adjustLengthField, Config config) { + if (this.data == null || this.data.getOriginalValue() == null) { + this.data = ModifiableVariableFactory.safelySetValue(this.data, data); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || dataLength == null + || dataLength.getOriginalValue() == null) { + setDataLength(this.data.getValue().length); + } + } + } + public SftpFileExtendedAttributeHandler getHandler(SshContext context) { return new SftpFileExtendedAttributeHandler(context, this); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java index e77f6c8ba..8fe2a6fdf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpFileNameEntryHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; @@ -27,7 +28,7 @@ public class SftpFileNameEntry extends ModifiableVariableHolder { private ModifiableInteger longNameLength; private ModifiableString longName; - @HoldsModifiableVariable private SftpFileAttributes attributes; + @HoldsModifiableVariable private SftpFileAttributes attributes = new SftpFileAttributes(); public ModifiableInteger getFilenameLength() { return filenameLength; @@ -62,10 +63,23 @@ public void setFilename(ModifiableString filename, boolean adjustLengthField) { } public void setFilename(String filename, boolean adjustLengthField) { + this.filename = ModifiableVariableFactory.safelySetValue(this.filename, filename); if (adjustLengthField) { - setFilenameLength(filename.getBytes(StandardCharsets.UTF_8).length); + setFilenameLength(this.filename.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyFilename(String filename, boolean adjustLengthField, Config config) { + if (this.filename == null || this.filename.getOriginalValue() == null) { + this.filename = ModifiableVariableFactory.safelySetValue(this.filename, filename); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || filenameLength == null + || filenameLength.getOriginalValue() == null) { + setFilenameLength(this.filename.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.filename = ModifiableVariableFactory.safelySetValue(this.filename, filename); } public ModifiableInteger getLongNameLength() { @@ -101,10 +115,23 @@ public void setLongName(ModifiableString longName, boolean adjustLengthField) { } public void setLongName(String longName, boolean adjustLengthField) { + this.longName = ModifiableVariableFactory.safelySetValue(this.longName, longName); if (adjustLengthField) { - setLongNameLength(longName.getBytes(StandardCharsets.UTF_8).length); + setLongNameLength(this.longName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyLongName(String longName, boolean adjustLengthField, Config config) { + if (this.longName == null || this.longName.getOriginalValue() == null) { + this.longName = ModifiableVariableFactory.safelySetValue(this.longName, longName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || longNameLength == null + || longNameLength.getOriginalValue() == null) { + setLongNameLength(this.longName.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.longName = ModifiableVariableFactory.safelySetValue(this.longName, longName); } public void clearLongName() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java index 6422a3a04..ab68a7b76 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java @@ -41,6 +41,12 @@ public void setId(int id) { this.id = ModifiableVariableFactory.safelySetValue(this.id, id); } + public void setSoftlyId(int id) { + if (this.id == null || this.id.getOriginalValue() == null) { + this.id = ModifiableVariableFactory.safelySetValue(this.id, id); + } + } + public SftpIdEntryHandler getHandler(SshContext context) { return new SftpIdEntryHandler(context, this); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java index 35aa93c1c..5c61871d7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpNameEntryHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; @@ -64,10 +65,23 @@ public void setName(ModifiableString name, boolean adjustLengthField) { } public void setName(String name, boolean adjustLengthField) { + this.name = ModifiableVariableFactory.safelySetValue(this.name, name); if (adjustLengthField) { - setNameLength(name.getBytes(StandardCharsets.UTF_8).length); + setNameLength(this.name.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyName(String name, boolean adjustLengthField, Config config) { + if (this.name == null || this.name.getOriginalValue() == null) { + this.name = ModifiableVariableFactory.safelySetValue(this.name, name); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || nameLength == null + || nameLength.getOriginalValue() == null) { + setNameLength(this.name.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.name = ModifiableVariableFactory.safelySetValue(this.name, name); } public SftpNameEntryHandler getHandler(SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java index d612c240c..247ca7e11 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java @@ -17,7 +17,7 @@ public class SftpRequestFileSetStatMessage extends SftpRequestWithHandleMessage { - @HoldsModifiableVariable private SftpFileAttributes attributes; + @HoldsModifiableVariable private SftpFileAttributes attributes = new SftpFileAttributes(); public SftpFileAttributes getAttributes() { return attributes; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java index 3aca510eb..32330b1be 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java @@ -30,10 +30,20 @@ public void setFlags(int flags) { this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); } + public void setSoftlyFlags(int flags) { + if (this.flags == null || this.flags.getOriginalValue() == null) { + this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); + } + } + public void setFlags(SftpFileAttributeFlag... flags) { setFlags(SftpFileAttributeFlag.flagsToInt(flags)); } + public void setSoftlyFlags(SftpFileAttributeFlag... flags) { + setSoftlyFlags(SftpFileAttributeFlag.flagsToInt(flags)); + } + public void clearFlags() { flags = null; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java index 8199408d3..7365984fc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java @@ -17,7 +17,7 @@ public class SftpRequestMakeDirMessage extends SftpRequestWithPathMessage { - @HoldsModifiableVariable private SftpFileAttributes attributes; + @HoldsModifiableVariable private SftpFileAttributes attributes = new SftpFileAttributes(); public SftpFileAttributes getAttributes() { return attributes; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMessage.java index 1b09ca2d7..a12c0ebcc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMessage.java @@ -26,4 +26,10 @@ public void setRequestId(ModifiableInteger requestId) { public void setRequestId(int requestId) { this.requestId = ModifiableVariableFactory.safelySetValue(this.requestId, requestId); } + + public void setSoftlyRequestId(int requestId) { + if (this.requestId == null || this.requestId.getOriginalValue() == null) { + this.requestId = ModifiableVariableFactory.safelySetValue(this.requestId, requestId); + } + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java index 837775d5f..b27f29995 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java @@ -23,7 +23,7 @@ public class SftpRequestOpenMessage extends SftpRequestWithPathMessage { - @HoldsModifiableVariable private SftpFileAttributes attributes; + @HoldsModifiableVariable private SftpFileAttributes attributes = new SftpFileAttributes(); public SftpFileAttributes getAttributes() { return attributes; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java index 8ed57f2c2..41e1cc957 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java @@ -29,10 +29,20 @@ public void setFlags(int flags) { this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); } + public void setSoftlyFlags(int flags) { + if (this.flags == null || this.flags.getOriginalValue() == null) { + this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); + } + } + public void setFlags(SftpFileAttributeFlag... flags) { setFlags(SftpFileAttributeFlag.flagsToInt(flags)); } + public void setSoftlyFlags(SftpFileAttributeFlag... flags) { + setSoftlyFlags(SftpFileAttributeFlag.flagsToInt(flags)); + } + public void clearFlags() { flags = null; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSymbolicLinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSymbolicLinkMessage.java index f365e7244..c8fafa4c1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSymbolicLinkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSymbolicLinkMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestSymbolicLinkMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -58,10 +59,24 @@ public void setTargetPath(ModifiableString targetPath, boolean adjustLengthField } public void setTargetPath(String targetPath, boolean adjustLengthField) { + this.targetPath = ModifiableVariableFactory.safelySetValue(this.targetPath, targetPath); if (adjustLengthField) { - setTargetPathLength(targetPath.getBytes(StandardCharsets.UTF_8).length); + setTargetPathLength(this.targetPath.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyTargetPath(String targetPath, boolean adjustLengthField, Config config) { + if (this.targetPath == null || this.targetPath.getOriginalValue() == null) { + this.targetPath = ModifiableVariableFactory.safelySetValue(this.targetPath, targetPath); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || targetPathLength == null + || targetPathLength.getOriginalValue() == null) { + setTargetPathLength( + this.targetPath.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.targetPath = ModifiableVariableFactory.safelySetValue(this.targetPath, targetPath); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithHandleMessage.java index 823e9105e..0dc2e71ad 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithHandleMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; public abstract class SftpRequestWithHandleMessage> extends SftpRequestMessage { @@ -55,4 +56,19 @@ public void setHandle(byte[] handle, boolean adjustLengthField) { setHandleLength(this.handle.getValue().length); } } + + public void setSoftlyHandle(byte[] handle, boolean adjustLengthField, Config config) { + if (config.getAlwaysPrepareSftpHandle() + || this.handle == null + || this.handle.getOriginalValue() == null) { + this.handle = ModifiableVariableFactory.safelySetValue(this.handle, handle); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || handleLength == null + || handleLength.getOriginalValue() == null) { + setHandleLength(this.handle.getValue().length); + } + } + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java index 3cb6441cf..4da55b964 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import java.nio.charset.StandardCharsets; public abstract class SftpRequestWithPathMessage> @@ -50,9 +51,22 @@ public void setPath(ModifiableString path, boolean adjustLengthField) { } public void setPath(String path, boolean adjustLengthField) { + this.path = ModifiableVariableFactory.safelySetValue(this.path, path); if (adjustLengthField) { - setPathLength(path.getBytes(StandardCharsets.UTF_8).length); + setPathLength(this.path.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyPath(String path, boolean adjustLengthField, Config config) { + if (this.path == null || this.path.getOriginalValue() == null) { + this.path = ModifiableVariableFactory.safelySetValue(this.path, path); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || pathLength == null + || pathLength.getOriginalValue() == null) { + setPathLength(this.path.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.path = ModifiableVariableFactory.safelySetValue(this.path, path); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWriteMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWriteMessage.java index 5dad19151..90599f97d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWriteMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWriteMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestWriteMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -32,6 +33,12 @@ public void setOffset(long offset) { this.offset = ModifiableVariableFactory.safelySetValue(this.offset, offset); } + public void setSoftlyOffset(long offset) { + if (this.offset == null || this.offset.getOriginalValue() == null) { + this.offset = ModifiableVariableFactory.safelySetValue(this.offset, offset); + } + } + public ModifiableInteger getDataLength() { return dataLength; } @@ -70,6 +77,19 @@ public void setData(byte[] data, boolean adjustLengthField) { } } + public void setSoftlyData(byte[] data, boolean adjustLengthField, Config config) { + if (this.data == null || this.data.getOriginalValue() == null) { + this.data = ModifiableVariableFactory.safelySetValue(this.data, data); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || dataLength == null + || dataLength.getOriginalValue() == null) { + setDataLength(this.data.getValue().length); + } + } + } + @Override public SftpRequestWriteMessageHandler getHandler(SshContext context) { return new SftpRequestWriteMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java index 654c4f3d0..13aaf0f2e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java @@ -17,7 +17,7 @@ public class SftpResponseAttributesMessage extends SftpResponseMessage { - @HoldsModifiableVariable private SftpFileAttributes attributes; + @HoldsModifiableVariable private SftpFileAttributes attributes = new SftpFileAttributes(); public SftpFileAttributes getAttributes() { return attributes; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseDataMessage.java index 949f75b6f..2917a6185 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseDataMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseDataMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -56,6 +57,19 @@ public void setData(byte[] data, boolean adjustLengthField) { } } + public void setSoftlyData(byte[] data, boolean adjustLengthField, Config config) { + if (this.data == null || this.data.getOriginalValue() == null) { + this.data = ModifiableVariableFactory.safelySetValue(this.data, data); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || dataLength == null + || dataLength.getOriginalValue() == null) { + setDataLength(this.data.getValue().length); + } + } + } + @Override public SftpResponseDataMessageHandler getHandler(SshContext context) { return new SftpResponseDataMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseHandleMessage.java index 70ae8768d..06654fdbc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseHandleMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseHandleMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -31,6 +32,15 @@ public void setHandleLength(int handleLength) { ModifiableVariableFactory.safelySetValue(this.handleLength, handleLength); } + public void setSoftlyHandleLength(int handleLength, Config config) { + if (config.getAlwaysPrepareSftpLengthFields() + || this.handleLength == null + || this.handleLength.getOriginalValue() == null) { + this.handleLength = + ModifiableVariableFactory.safelySetValue(this.handleLength, handleLength); + } + } + public ModifiableByteArray getHandle() { return handle; } @@ -57,6 +67,21 @@ public void setHandle(byte[] handle, boolean adjustLengthField) { } } + public void setSoftlyHandle(byte[] handle, boolean adjustLengthField, Config config) { + if (config.getAlwaysPrepareSftpHandle() + || this.handle == null + || this.handle.getOriginalValue() == null) { + this.handle = ModifiableVariableFactory.safelySetValue(this.handle, handle); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || handleLength == null + || handleLength.getOriginalValue() == null) { + setHandleLength(this.handle.getValue().length); + } + } + } + @Override public SftpResponseHandleMessageHandler getHandler(SshContext context) { return new SftpResponseHandleMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseMessage.java index 49c8989ea..4605338fb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseMessage.java @@ -26,4 +26,10 @@ public void setRequestId(ModifiableInteger requestId) { public void setRequestId(int requestId) { this.requestId = ModifiableVariableFactory.safelySetValue(this.requestId, requestId); } + + public void setSoftlyRequestId(int requestId) { + if (this.requestId == null || this.requestId.getOriginalValue() == null) { + this.requestId = ModifiableVariableFactory.safelySetValue(this.requestId, requestId); + } + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java index a4837548d..33e9a4a2e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseNameMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileNameEntry; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; @@ -22,24 +23,34 @@ public class SftpResponseNameMessage extends SftpResponseMessage { - private ModifiableInteger countNameEntries; + private ModifiableInteger nameEntriesCount; @HoldsModifiableVariable @XmlElementWrapper @XmlElements({@XmlElement(type = SftpFileNameEntry.class, name = "SftpResponseNameEntry")}) private List nameEntries = new ArrayList<>(); - public ModifiableInteger getCountNameEntries() { - return countNameEntries; + public ModifiableInteger getNameEntriesCount() { + return nameEntriesCount; } - public void setCountNameEntries(ModifiableInteger countNameEntries) { - this.countNameEntries = countNameEntries; + public void setNameEntriesCount(ModifiableInteger nameEntriesCount) { + this.nameEntriesCount = nameEntriesCount; } - public void setCountNameEntries(int countNameEntries) { - this.countNameEntries = - ModifiableVariableFactory.safelySetValue(this.countNameEntries, countNameEntries); + public void setNameEntriesCount(int nameEntriesCount) { + this.nameEntriesCount = + ModifiableVariableFactory.safelySetValue(this.nameEntriesCount, nameEntriesCount); + } + + public void setSoftlyNameEntriesCount(int nameEntriesCount, Config config) { + if (config.getAlwaysPrepareSftpLengthFields() + || this.nameEntriesCount == null + || this.nameEntriesCount.getOriginalValue() == null) { + this.nameEntriesCount = + ModifiableVariableFactory.safelySetValue( + this.nameEntriesCount, nameEntriesCount); + } } public List getNameEntries() { @@ -52,7 +63,7 @@ public void setNameEntries(List nameEntries) { public void setNameEntries(List nameEntries, boolean adjustLengthField) { if (adjustLengthField) { - setCountNameEntries(nameEntries.size()); + setNameEntriesCount(nameEntries.size()); } this.nameEntries = nameEntries; } @@ -64,7 +75,7 @@ public void addNameEntry(SftpFileNameEntry nameEntry) { public void addNameEntry(SftpFileNameEntry nameEntry, boolean adjustLengthField) { nameEntries.add(nameEntry); if (adjustLengthField) { - setCountNameEntries(nameEntries.size()); + setNameEntriesCount(nameEntries.size()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseStatusMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseStatusMessage.java index 2ff50f5aa..e4ddcf45d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseStatusMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseStatusMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.SftpStatusCode; import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseStatusMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -35,10 +36,20 @@ public void setStatusCode(int statusCode) { this.statusCode = ModifiableVariableFactory.safelySetValue(this.statusCode, statusCode); } + public void setSoftlyStatusCode(int statusCode) { + if (this.statusCode == null || this.statusCode.getOriginalValue() == null) { + this.statusCode = ModifiableVariableFactory.safelySetValue(this.statusCode, statusCode); + } + } + public void setStatusCode(SftpStatusCode statusCode) { setStatusCode(statusCode.getCode()); } + public void setSoftlyStatusCode(SftpStatusCode statusCode) { + setSoftlyStatusCode(statusCode.getCode()); + } + public ModifiableInteger getErrorMessageLength() { return errorMessageLength; } @@ -73,11 +84,28 @@ public void setErrorMessage(ModifiableString errorMessage, boolean adjustLengthF } public void setErrorMessage(String errorMessage, boolean adjustLengthField) { - if (adjustLengthField) { - setErrorMessageLength(errorMessage.getBytes(StandardCharsets.UTF_8).length); - } this.errorMessage = ModifiableVariableFactory.safelySetValue(this.errorMessage, errorMessage); + if (adjustLengthField) { + setErrorMessageLength( + this.errorMessage.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyErrorMessage( + String errorMessage, boolean adjustLengthField, Config config) { + if (this.errorMessage == null || this.errorMessage.getOriginalValue() == null) { + this.errorMessage = + ModifiableVariableFactory.safelySetValue(this.errorMessage, errorMessage); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || errorMessageLength == null + || errorMessageLength.getOriginalValue() == null) { + setErrorMessageLength( + this.errorMessage.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } } public ModifiableInteger getLanguageTagLength() { @@ -113,10 +141,26 @@ public void setLanguageTag(ModifiableString languageTag, boolean adjustLengthFie } public void setLanguageTag(String languageTag, boolean adjustLengthField) { + this.languageTag = ModifiableVariableFactory.safelySetValue(this.languageTag, languageTag); if (adjustLengthField) { - setLanguageTagLength(languageTag.getBytes(StandardCharsets.US_ASCII).length); + setLanguageTagLength( + this.languageTag.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + + public void setSoftlyLanguageTag(String languageTag, boolean adjustLengthField, Config config) { + if (this.languageTag == null || this.languageTag.getOriginalValue() == null) { + this.languageTag = + ModifiableVariableFactory.safelySetValue(this.languageTag, languageTag); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareSftpLengthFields() + || languageTagLength == null + || languageTagLength.getOriginalValue() == null) { + setLanguageTagLength( + this.languageTag.getValue().getBytes(StandardCharsets.US_ASCII).length); + } } - this.languageTag = ModifiableVariableFactory.safelySetValue(this.languageTag, languageTag); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java index b09da0a3d..916f4745f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java @@ -37,11 +37,11 @@ public SftpResponseNameMessage createMessage() { private void parseNameEntries() { int countNameEntries = parseIntField(DataFormatConstants.UINT32_SIZE); - message.setCountNameEntries(countNameEntries); + message.setNameEntriesCount(countNameEntries); LOGGER.debug("CountNameEntries: {}", countNameEntries); for (int nameEntryIndex = 0, nameEntryStartPointer = getPointer(); - nameEntryIndex < message.getCountNameEntries().getValue(); + nameEntryIndex < message.getNameEntriesCount().getValue(); nameEntryIndex++, nameEntryStartPointer = getPointer()) { SftpFileNameEntryParser nameEntryParser = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java index 49d6b3b62..bb348f897 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java @@ -19,10 +19,7 @@ public SftpInitMessagePreparator(Chooser chooser, SftpInitMessage message) { } public void prepareMessageSpecificContents() { - if (getObject().getVersion() == null - || getObject().getVersion().getOriginalValue() == null) { - getObject().setVersion(chooser.getSftpClientVersion()); - } + getObject().setSoftlyVersion(chooser.getSftpClientVersion()); if (getObject().getExtensions().isEmpty()) { if (chooser.getSftpClientVersion() == 3) { // Only Clients with protocol version 3 should send supported extensions, diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java index 70ff7ca3a..14d405d01 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java @@ -20,9 +20,6 @@ public SftpUnknownMessagePreparator(Chooser chooser, SftpUnknownMessage message) @Override public void prepareMessageSpecificContents() { - if (getObject().getPayload() == null - || getObject().getPayload().getOriginalValue() == null) { - getObject().setPayload(new byte[0]); - } + getObject().setSoftlyPayload(new byte[0]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java index faac7e96c..02b22bcd7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java @@ -19,11 +19,9 @@ public SftpVersionMessagePreparator(Chooser chooser, SftpVersionMessage message) } public void prepareMessageSpecificContents() { - if (getObject().getVersion() == null - || getObject().getVersion().getOriginalValue() == null) { - // Send own server version, but negotiate the version that is the lower if the two - getObject().setVersion(chooser.getSftpServerVersion()); - } + + // Send own server version, but negotiate the version that is the lower if the two + getObject().setSoftlyVersion(chooser.getSftpServerVersion()); if (getObject().getExtensions().isEmpty()) { getObject().setExtensions(chooser.getSftpServerSupportedExtensions()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java index cd83c6ffa..1d47c8083 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java @@ -23,30 +23,20 @@ public SftpRequestCheckFileHandleMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); - - if (getObject().getHashAlgorithms() == null - || getObject().getHashAlgorithms().getOriginalValue() == null) { - getObject().setHashAlgorithms(List.of(HashAlgorithm.MD5, HashAlgorithm.SHA_1), true); - } - if (getObject().getHashAlgorithmsLength() == null - || getObject().getHashAlgorithmsLength().getOriginalValue() == null) { - getObject() - .setHashAlgorithmsLength(getObject().getHashAlgorithms().getValue().length()); - } - - if (getObject().getStartOffset() == null - || getObject().getStartOffset().getOriginalValue() == null) { - getObject().setStartOffset(0); - } - - if (getObject().getLength() == null || getObject().getLength().getOriginalValue() == null) { - getObject().setLength(100000); // 0 for all data - } - - if (getObject().getBlockSize() == null - || getObject().getBlockSize().getOriginalValue() == null) { - getObject().setBlockSize(512); // Should be >= 256 - } + getObject() + .setSoftlyHandle( + chooser.getContext().getSftpManager().getFileHandle(), + true, + chooser.getConfig()); + + getObject() + .setSoftlyHashAlgorithms( + List.of(HashAlgorithm.MD5, HashAlgorithm.SHA_1), true, chooser.getConfig()); + + getObject().setSoftlyStartOffset(0); + + getObject().setSoftlyLength(100000); // 0 for all data + + getObject().setSoftlyBlockSize(512); // Should be >= 256 } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java index 7aeb54d0f..edcc4a2be 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java @@ -23,36 +23,15 @@ public SftpRequestCheckFileNameMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/etc/passwd", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/etc/passwd", true, chooser.getConfig()); - if (getObject().getHashAlgorithms() == null - || getObject().getHashAlgorithms().getOriginalValue() == null) { - getObject().setHashAlgorithms(List.of(HashAlgorithm.MD5, HashAlgorithm.SHA_1), true); - } - if (getObject().getHashAlgorithmsLength() == null - || getObject().getHashAlgorithmsLength().getOriginalValue() == null) { - getObject() - .setHashAlgorithmsLength(getObject().getHashAlgorithms().getValue().length()); - } + getObject() + .setSoftlyHashAlgorithms( + List.of(HashAlgorithm.MD5, HashAlgorithm.SHA_1), true, chooser.getConfig()); - if (getObject().getStartOffset() == null - || getObject().getStartOffset().getOriginalValue() == null) { - getObject().setStartOffset(0); - } + getObject().setSoftlyStartOffset(0); - if (getObject().getLength() == null || getObject().getLength().getOriginalValue() == null) { - getObject().setLength(100000); // 0 for all data - } - - if (getObject().getBlockSize() == null - || getObject().getBlockSize().getOriginalValue() == null) { - getObject().setBlockSize(512); // Should be >= 256 - } + getObject().setSoftlyLength(100000); // 0 for all data + getObject().setSoftlyBlockSize(512); // Should be >= 256 } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java index cea9c6065..052ce2242 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java @@ -21,23 +21,22 @@ public SftpRequestCopyDataMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); + getObject() + .setSoftlyHandle( + chooser.getContext().getSftpManager().getFileHandle(), + true, + chooser.getConfig()); - if (getObject().getReadFromOffset() == null - || getObject().getReadFromOffset().getOriginalValue() == null) { - getObject().setReadFromOffset(0); - } + getObject().setSoftlyReadFromOffset(0); - if (getObject().getReadDataLength() == null - || getObject().getReadDataLength().getOriginalValue() == null) { - getObject().setReadDataLength(1000000); - } + getObject().setSoftlyReadDataLength(1000000); - getObject().setWriteToHandle(chooser.getContext().getSftpManager().getFileHandle(), true); + getObject() + .setSoftlyWriteToHandle( + chooser.getContext().getSftpManager().getFileHandle(), + true, + chooser.getConfig()); - if (getObject().getWriteToOffset() == null - || getObject().getWriteToOffset().getOriginalValue() == null) { - getObject().setWriteToOffset(0); - } + getObject().setSoftlyWriteToOffset(0); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java index 5a950fee3..fa10aa9db 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java @@ -21,27 +21,10 @@ public SftpRequestCopyFileMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/etc/passwd", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/etc/passwd", true, chooser.getConfig()); - if (getObject().getDestinationPath() == null - || getObject().getDestinationPath().getOriginalValue() == null) { - getObject().setDestinationPath("/tmp/passwd", true); - } - if (getObject().getDestinationPathLength() == null - || getObject().getDestinationPathLength().getOriginalValue() == null) { - getObject() - .setDestinationPathLength(getObject().getDestinationPath().getValue().length()); - } + getObject().setSoftlyDestinationPath("/tmp/passwd", true, chooser.getConfig()); - if (getObject().getOverwriteDestination() == null - || getObject().getOverwriteDestination().getOriginalValue() == null) { - getObject().setOverwriteDestination(true); - } + getObject().setSoftlyOverwriteDestination(true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java index 7d8296e60..6330a5e3e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java @@ -21,12 +21,6 @@ public SftpRequestExpandPathMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("~/.config/passwd", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("~/.config/passwd", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java index 5dfcd23bb..f0ad9e7b7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java @@ -22,6 +22,9 @@ public SftpRequestFileStatVfsMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { getObject() - .setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); + .setSoftlyHandle( + chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), + true, + chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java index 7102c381b..d9f4c45e6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java @@ -21,6 +21,10 @@ public SftpRequestFileSyncMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); + getObject() + .setSoftlyHandle( + chooser.getContext().getSftpManager().getFileHandle(), + true, + chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java index de264dfa9..a55335fc0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java @@ -21,21 +21,8 @@ public SftpRequestHardlinkMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/etc/passwd", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/etc/passwd", true, chooser.getConfig()); - if (getObject().getNewPath() == null - || getObject().getNewPath().getOriginalValue() == null) { - getObject().setNewPath("/etc/passwd-new", true); - } - if (getObject().getNewPathLength() == null - || getObject().getNewPathLength().getOriginalValue() == null) { - getObject().setNewPathLength(getObject().getNewPath().getValue().length()); - } + getObject().setSoftlyNewPath("/etc/passwd-new", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java index 4663067d7..5f54a6090 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java @@ -21,13 +21,6 @@ public SftpRequestHomeDirectoryMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getUsername() == null - || getObject().getUsername().getOriginalValue() == null) { - getObject().setUsername("ssh-attacker", true); - } - if (getObject().getUsernameLength() == null - || getObject().getUsernameLength().getOriginalValue() == null) { - getObject().setUsernameLength(getObject().getUsername().getValue().length()); - } + getObject().setSoftlyUsername("ssh-attacker", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java index 36fff2722..2962eca3f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java @@ -9,7 +9,6 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLinkSetStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestLinkSetStatMessagePreparator @@ -22,17 +21,7 @@ public SftpRequestLinkSetStatMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/bin/python3", true); - } - - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } - if (getObject().getAttributes() == null) { - getObject().setAttributes(new SftpFileAttributes()); - } + getObject().setSoftlyPath("/bin/python3", true, chooser.getConfig()); getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java index 3cdc54186..ac455b72f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java @@ -21,21 +21,8 @@ public SftpRequestPosixRenameMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/etc/passwd", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/etc/passwd", true, chooser.getConfig()); - if (getObject().getNewPath() == null - || getObject().getNewPath().getOriginalValue() == null) { - getObject().setNewPath("/etc/passwd-new", true); - } - if (getObject().getNewPathLength() == null - || getObject().getNewPathLength().getOriginalValue() == null) { - getObject().setNewPathLength(getObject().getNewPath().getValue().length()); - } + getObject().setSoftlyNewPath("/etc/passwd-new", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java index b4a1f9c91..31de0ee45 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java @@ -21,12 +21,6 @@ public SftpRequestSpaceAvailableMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/tmp", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/tmp", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java index c65bfe8a0..8e1cadf13 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java @@ -20,12 +20,6 @@ public SftpRequestStatVfsMessagePreparator(Chooser chooser, SftpRequestStatVfsMe @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/etc/", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/etc/", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java index 3f935b5bf..365644016 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java @@ -21,11 +21,12 @@ public SftpRequestTextSeekMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); + getObject() + .setSoftlyHandle( + chooser.getContext().getSftpManager().getFileHandle(), + true, + chooser.getConfig()); - if (getObject().getLineNumber() == null - || getObject().getLineNumber().getOriginalValue() == null) { - getObject().setLineNumber(0); - } + getObject().setSoftlyLineNumber(0); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java index a926b6197..af28c495a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java @@ -19,20 +19,10 @@ public SftpRequestUnknownMessagePreparator(Chooser chooser, SftpRequestUnknownMe @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getExtendedRequestName() == null - || getObject().getExtendedRequestName().getOriginalValue() == null) { - getObject().setExtendedRequestName("hello-from@ssh-attacker.de"); - } - if (getObject().getExtendedRequestNameLength() == null - || getObject().getExtendedRequestNameLength().getOriginalValue() == null) { - getObject() - .setExtendedRequestNameLength( - getObject().getExtendedRequestName().getValue().length()); - } + getObject() + .setSoftlyExtendedRequestName( + "hello-from@ssh-attacker.de", true, chooser.getConfig()); - if (getObject().getRequestSpecificData() == null - || getObject().getRequestSpecificData().getOriginalValue() == null) { - getObject().setRequestSpecificData(new byte[100]); - } + getObject().setSoftlyRequestSpecificData(new byte[100]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java index d14e95578..aee8ad6ca 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java @@ -29,11 +29,15 @@ public void prepareRequestExtendedSpecificContents() { if (getObject().getGroupIds().isEmpty()) { getObject().addGroupId(0); } + getObject() - .setUserIdsLength( - getObject().getUserIds().size() * DataFormatConstants.UINT32_SIZE); + .setSoftlyUserIdsLength( + getObject().getUserIds().size() * DataFormatConstants.UINT32_SIZE, + chooser.getConfig()); + getObject() - .setGroupIdsLength( - getObject().getGroupIds().size() * DataFormatConstants.UINT32_SIZE); + .setSoftlyGroupIdsLength( + getObject().getGroupIds().size() * DataFormatConstants.UINT32_SIZE, + chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java index 52362cb18..d508af04b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java @@ -21,37 +21,12 @@ public SftpRequestVendorIdMessagePreparator( @Override public void prepareRequestExtendedSpecificContents() { - if (getObject().getVendorName() == null - || getObject().getVendorName().getOriginalValue() == null) { - getObject().setVendorName("NDS RUB", true); - } - if (getObject().getVendorNameLength() == null - || getObject().getVendorNameLength().getOriginalValue() == null) { - getObject().setVendorNameLength(getObject().getVendorName().getValue().length()); - } + getObject().setSoftlyVendorName("NDS RUB", true, chooser.getConfig()); - if (getObject().getProductName() == null - || getObject().getProductName().getOriginalValue() == null) { - getObject().setProductName("SSH-Attacker", true); - } - if (getObject().getProductNameLength() == null - || getObject().getProductNameLength().getOriginalValue() == null) { - getObject().setProductNameLength(getObject().getProductName().getValue().length()); - } + getObject().setSoftlyProductName("SSH-Attacker", true, chooser.getConfig()); - if (getObject().getProductVersion() == null - || getObject().getProductVersion().getOriginalValue() == null) { - getObject().setProductVersion("1.0", true); - } - if (getObject().getProductVersionLength() == null - || getObject().getProductVersionLength().getOriginalValue() == null) { - getObject() - .setProductVersionLength(getObject().getProductVersion().getValue().length()); - } + getObject().setSoftlyProductVersion("1.0", true, chooser.getConfig()); - if (getObject().getProductBuildNumber() == null - || getObject().getProductBuildNumber().getOriginalValue() == null) { - getObject().setProductBuildNumber(2024); - } + getObject().setSoftlyProductBuildNumber(2024); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java index 1869a7459..d8f903847 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java @@ -21,19 +21,8 @@ public SftpResponseCheckFileMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getUsedHashAlgorithm() == null - || getObject().getUsedHashAlgorithm().getOriginalValue() == null) { - getObject().setUsedHashAlgorithm(HashAlgorithm.MD5, true); - } - if (getObject().getUsedHashAlgorithmLength() == null - || getObject().getUsedHashAlgorithmLength().getOriginalValue() == null) { - getObject() - .setUsedHashAlgorithmLength( - getObject().getUsedHashAlgorithm().getValue().length()); - } + getObject().setSoftlyUsedHashAlgorithm(HashAlgorithm.MD5, true, chooser.getConfig()); - if (getObject().getHash() == null || getObject().getHash().getOriginalValue() == null) { - getObject().setHash(new byte[100]); - } + getObject().setSoftlyHash(new byte[100]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java index 274495522..e0bef09f2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java @@ -19,24 +19,12 @@ public SftpResponseLimitsMessagePreparator(Chooser chooser, SftpResponseLimitsMe @Override public void prepareResponseSpecificContents() { - if (getObject().getMaximumPacketLength() == null - || getObject().getMaximumPacketLength().getOriginalValue() == null) { - getObject().setMaximumPacketLength(100000); - } + getObject().setSoftlyMaximumPacketLength(100000); - if (getObject().getMaximumReadLength() == null - || getObject().getMaximumReadLength().getOriginalValue() == null) { - getObject().setMaximumReadLength(0); - } + getObject().setSoftlyMaximumReadLength(0); - if (getObject().getMaximumWriteLength() == null - || getObject().getMaximumWriteLength().getOriginalValue() == null) { - getObject().setMaximumWriteLength(0); - } + getObject().setSoftlyMaximumWriteLength(0); - if (getObject().getMaximumOpenHandles() == null - || getObject().getMaximumOpenHandles().getOriginalValue() == null) { - getObject().setMaximumOpenHandles(1); - } + getObject().setSoftlyMaximumOpenHandles(1); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java index ecef1f494..7f52a6bf9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java @@ -20,29 +20,14 @@ public SftpResponseSpaceAvailableMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getBytesOnDevice() == null - || getObject().getBytesOnDevice().getOriginalValue() == null) { - getObject().setBytesOnDevice(10000000001L); - } - - if (getObject().getUnusedBytesOnDevice() == null - || getObject().getUnusedBytesOnDevice().getOriginalValue() == null) { - getObject().setUnusedBytesOnDevice(10); - } - - if (getObject().getBytesAvailableToUser() == null - || getObject().getBytesAvailableToUser().getOriginalValue() == null) { - getObject().setBytesAvailableToUser(100); - } - - if (getObject().getUnusedBytesAvailableToUser() == null - || getObject().getUnusedBytesAvailableToUser().getOriginalValue() == null) { - getObject().setUnusedBytesAvailableToUser(10); - } - - if (getObject().getBytesPerAllocationUnit() == null - || getObject().getBytesPerAllocationUnit().getOriginalValue() == null) { - getObject().setBytesPerAllocationUnit(0); - } + getObject().setSoftlyBytesOnDevice(10000000001L); + + getObject().setSoftlyUnusedBytesOnDevice(10); + + getObject().setSoftlyBytesAvailableToUser(100); + + getObject().setSoftlyUnusedBytesAvailableToUser(10); + + getObject().setSoftlyBytesPerAllocationUnit(0); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java index 6d7265452..36f4b0afa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java @@ -21,48 +21,16 @@ public SftpResponseStatVfsMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getBlockSize() == null - || getObject().getBlockSize().getOriginalValue() == null) { - getObject().setBlockSize(32); - } - if (getObject().getFundamentalBlockSize() == null - || getObject().getFundamentalBlockSize().getOriginalValue() == null) { - getObject().setFundamentalBlockSize(32); - } - if (getObject().getCountBlocks() == null - || getObject().getCountBlocks().getOriginalValue() == null) { - getObject().setCountBlocks(11608687979080L); - } - if (getObject().getFreeBlocks() == null - || getObject().getFreeBlocks().getOriginalValue() == null) { - getObject().setFreeBlocks(11608687979080L); - } - if (getObject().getFreeBlocksNonRoot() == null - || getObject().getFreeBlocksNonRoot().getOriginalValue() == null) { - getObject().setFreeBlocksNonRoot(11608687979080L); - } - if (getObject().getFileInodes() == null - || getObject().getFileInodes().getOriginalValue() == null) { - getObject().setFileInodes(0); - } - if (getObject().getFreeInodes() == null - || getObject().getFreeInodes().getOriginalValue() == null) { - getObject().setFreeInodes(11608687979080L); - } - if (getObject().getFreeInodesNonRoot() == null - || getObject().getFreeInodesNonRoot().getOriginalValue() == null) { - getObject().setFreeInodesNonRoot(11608687979080L); - } - if (getObject().getSystemId() == null - || getObject().getSystemId().getOriginalValue() == null) { - getObject().setSystemId(0); - } - if (getObject().getFlags() == null || getObject().getFlags().getOriginalValue() == null) { - getObject().setFlags(SftpVfsFlag.SSH_FXE_STATVFS_ST_RDONLY); - } - if (getObject().getMaximumFilenameLength() == null - || getObject().getMaximumFilenameLength().getOriginalValue() == null) { - getObject().setMaximumFilenameLength(256); - } + getObject().setSoftlyBlockSize(32); + getObject().setSoftlyFundamentalBlockSize(32); + getObject().setSoftlyCountBlocks(11608687979080L); + getObject().setSoftlyFreeBlocks(11608687979080L); + getObject().setSoftlyFreeBlocksNonRoot(11608687979080L); + getObject().setSoftlyFileInodes(0); + getObject().setSoftlyFreeInodes(11608687979080L); + getObject().setSoftlyFreeInodesNonRoot(11608687979080L); + getObject().setSoftlySystemId(0); + getObject().setSoftlyFlags(SftpVfsFlag.SSH_FXE_STATVFS_ST_RDONLY); + getObject().setSoftlyMaximumFilenameLength(256); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java index ab43b5c73..e78735801 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java @@ -20,9 +20,6 @@ public SftpResponseUnknownMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getResponseSpecificData() == null - || getObject().getResponseSpecificData().getOriginalValue() == null) { - getObject().setResponseSpecificData(new byte[100]); - } + getObject().setSoftlyResponseSpecificData(new byte[100]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java index d32283126..7f47ec6e8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java @@ -32,18 +32,21 @@ public void prepareResponseSpecificContents() { } getObject() - .setUserNamesLength( + .setSoftlyUserNamesLength( getObject().getUserNames().size() * DataFormatConstants.UINT32_SIZE + getObject().getUserNames().stream() .map(SftpNameEntry::getNameLength) .mapToInt(ModifiableVariable::getValue) - .sum()); + .sum(), + chooser.getConfig()); + getObject() - .setGroupNamesLength( + .setSoftlyGroupNamesLength( getObject().getGroupNames().size() * DataFormatConstants.UINT32_SIZE + getObject().getGroupNames().stream() .map(SftpNameEntry::getNameLength) .mapToInt(ModifiableVariable::getValue) - .sum()); + .sum(), + chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java index f78ae8db3..f1050605c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java @@ -21,10 +21,7 @@ public SftpExtensionFileStatVfsPreparator( @Override public void prepareExtensionSpecificContents() { - if (getObject().getVersion() == null - || getObject().getVersion().getOriginalValue() == null) { - getObject().setVersion("2", true); - } + getObject().setSoftlyVersion("2", true, chooser.getConfig()); super.prepareExtensionSpecificContents(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java index 354cf86e6..74a27c03a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java @@ -20,15 +20,6 @@ public SftpExtensionNewlinePreparator(Chooser chooser, SftpExtensionNewline exte @Override public void prepareExtensionSpecificContents() { - if (getObject().getNewlineSeperator() == null - || getObject().getNewlineSeperator().getOriginalValue() == null) { - getObject().setNewlineSeperator("\n", true); - } - if (getObject().getNewlineSeperatorLength() == null - || getObject().getNewlineSeperatorLength().getOriginalValue() == null) { - getObject() - .setNewlineSeperatorLength( - getObject().getNewlineSeperator().getValue().length()); - } + getObject().setSoftlyNewlineSeperator("\n", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java index c97711d30..00890419d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java @@ -21,10 +21,7 @@ public SftpExtensionStatVfsPreparator( @Override public void prepareExtensionSpecificContents() { - if (getObject().getVersion() == null - || getObject().getVersion().getOriginalValue() == null) { - getObject().setVersion("2", true); - } + getObject().setSoftlyVersion("2", true, chooser.getConfig()); super.prepareExtensionSpecificContents(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java index 4f793e274..c6908db66 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java @@ -19,20 +19,8 @@ public SftpExtensionUnknownPreparator(Chooser chooser, SftpExtensionUnknown exte @Override public void prepareExtensionSpecificContents() { - if (getObject().getName() == null || getObject().getName().getOriginalValue() == null) { - getObject().setName("hello-from@ssh-attacker.de", true); - } - if (getObject().getNameLength() == null - || getObject().getNameLength().getOriginalValue() == null) { - getObject().setNameLength(getObject().getName().getValue().length()); - } + getObject().setSoftlyName("hello-from@ssh-attacker.de", true, chooser.getConfig()); - if (getObject().getValue() == null || getObject().getValue().getOriginalValue() == null) { - getObject().setValue(new byte[100], true); - } - if (getObject().getValueLength() == null - || getObject().getValueLength().getOriginalValue() == null) { - getObject().setValueLength(getObject().getValue().getValue().length); - } + getObject().setSoftlyValue(new byte[100], true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java index 4e5fdeff2..4162c0083 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java @@ -23,47 +23,20 @@ public SftpExtensionVendorIdPreparator(Chooser chooser, SftpExtensionVendorId ex public void prepareExtensionSpecificContents() { getObject().setName(SftpExtension.VENDOR_ID, true); - if (getObject().getVendorName() == null - || getObject().getVendorName().getOriginalValue() == null) { - getObject().setVendorName("NDS RUB", true); - } - if (getObject().getVendorNameLength() == null - || getObject().getVendorNameLength().getOriginalValue() == null) { - getObject().setVendorNameLength(getObject().getVendorName().getValue().length()); - } + getObject().setSoftlyVendorName("NDS RUB", true, chooser.getConfig()); - if (getObject().getProductName() == null - || getObject().getProductName().getOriginalValue() == null) { - getObject().setProductName("SSH-Attacker", true); - } - if (getObject().getProductNameLength() == null - || getObject().getProductNameLength().getOriginalValue() == null) { - getObject().setProductNameLength(getObject().getProductName().getValue().length()); - } + getObject().setSoftlyProductName("SSH-Attacker", true, chooser.getConfig()); - if (getObject().getProductVersion() == null - || getObject().getProductVersion().getOriginalValue() == null) { - getObject().setProductVersion("1.0", true); - } - if (getObject().getProductVersionLength() == null - || getObject().getProductVersionLength().getOriginalValue() == null) { - getObject() - .setProductVersionLength(getObject().getProductVersion().getValue().length()); - } + getObject().setSoftlyProductVersion("1.0", true, chooser.getConfig()); - if (getObject().getProductBuildNumber() == null - || getObject().getProductBuildNumber().getOriginalValue() == null) { - getObject().setProductBuildNumber(2024); - } + getObject().setSoftlyProductBuildNumber(2024); - if (getObject().getVendorStructureLength() == null - || getObject().getVendorStructureLength().getOriginalValue() == null) { - getObject() - .setVendorStructureLength( - getObject().getVendorNameLength().getValue() - + getObject().getProductNameLength().getValue() - + getObject().getProductVersionLength().getValue() - + DataFormatConstants.UINT64_SIZE); - } + getObject() + .setSoftlyVendorStructureLength( + getObject().getVendorNameLength().getValue() + + getObject().getProductNameLength().getValue() + + getObject().getProductVersionLength().getValue() + + DataFormatConstants.UINT64_SIZE, + chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java index f77029de6..954111696 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java @@ -26,13 +26,6 @@ public SftpExtensionWithVersionPreparator( public void prepareExtensionSpecificContents() { getObject().setName(extensionName, true); - if (getObject().getVersion() == null - || getObject().getVersion().getOriginalValue() == null) { - getObject().setVersion("1", true); - } - if (getObject().getVersionLength() == null - || getObject().getVersionLength().getOriginalValue() == null) { - getObject().setVersionLength(getObject().getVersion().getValue().length()); - } + getObject().setSoftlyVersion("1", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java index 8203911a3..d280628ee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java @@ -22,22 +22,10 @@ public SftpAclEntryPreparator(Chooser chooser, SftpAclEntry aclEntry) { @Override public final void prepare() { - if (getObject().getType() == null || getObject().getType().getOriginalValue() == null) { - getObject().setType(SftpAceType.ACE4_ACCESS_ALLOWED_ACE_TYPE); - } - if (getObject().getFlags() == null || getObject().getFlags().getOriginalValue() == null) { - getObject().setFlags(SftpAceFlag.ACE4_FILE_INHERIT_ACE); - } - if (getObject().getMask() == null || getObject().getMask().getOriginalValue() == null) { - getObject().setMask(SftpAceMask.ACE4_ADD_FILE); - } + getObject().setSoftlyType(SftpAceType.ACE4_ACCESS_ALLOWED_ACE_TYPE); + getObject().setSoftlyFlags(SftpAceFlag.ACE4_FILE_INHERIT_ACE); + getObject().setSoftlyMask(SftpAceMask.ACE4_ADD_FILE); - if (getObject().getWho() == null || getObject().getWho().getOriginalValue() == null) { - getObject().setWho(chooser.getConfig().getUsername(), true); - } - if (getObject().getWhoLength() == null - || getObject().getWhoLength().getOriginalValue() == null) { - getObject().setWhoLength(getObject().getWho().getValue().length()); - } + getObject().setSoftlyWho(chooser.getConfig().getUsername(), true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java index 4c9b5940f..d4f6a99c0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java @@ -25,30 +25,24 @@ public SftpFileAttributesPreparator(Chooser chooser, SftpFileAttributes attribut @Override public final void prepare() { - if (getObject().getFlags() == null || getObject().getFlags().getOriginalValue() == null) { - getObject() - .setFlags( - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE, - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID, - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS, - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME, - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED); - } + getObject() + .setSoftlyFlags( + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED); if (chooser.getSftpNegotiatedVersion() > 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { - if (getObject().getType() == null || getObject().getType().getOriginalValue() == null) { - getObject().setType(SftpFileType.SSH_FILEXFER_TYPE_REGULAR); - } + getObject().setSoftlyType(SftpFileType.SSH_FILEXFER_TYPE_REGULAR); } else { getObject().clearType(); } int flags = getObject().getFlags().getValue(); if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE)) { - if (getObject().getSize() == null || getObject().getSize().getOriginalValue() == null) { - getObject().setSize(0); - } + getObject().setSoftlySize(0); } else { getObject().clearSize(); } @@ -56,23 +50,9 @@ public final void prepare() { if (chooser.getSftpNegotiatedVersion() > 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_OWNERGROUP)) { - if (getObject().getOwner() == null - || getObject().getOwner().getOriginalValue() == null) { - getObject().setOwner("ssh-attacker", true); - } - if (getObject().getOwnerLength() == null - || getObject().getOwnerLength().getOriginalValue() == null) { - getObject().setOwnerLength(getObject().getOwner().getValue().length()); - } + getObject().setSoftlyOwner("ssh-attacker", true, chooser.getConfig()); - if (getObject().getGroup() == null - || getObject().getGroup().getOriginalValue() == null) { - getObject().setGroup("nds", true); - } - if (getObject().getGroupLength() == null - || getObject().getGroupLength().getOriginalValue() == null) { - getObject().setGroupLength(getObject().getGroup().getValue().length()); - } + getObject().setSoftlyGroup("nds", true, chooser.getConfig()); } else { getObject().clearOwner(); getObject().clearGroup(); @@ -81,14 +61,8 @@ public final void prepare() { getObject().clearGroupId(); } else { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID)) { - if (getObject().getUserId() == null - || getObject().getUserId().getOriginalValue() == null) { - getObject().setUserId(0); - } - if (getObject().getGroupId() == null - || getObject().getGroupId().getOriginalValue() == null) { - getObject().setGroupId(0); - } + getObject().setSoftlyUserId(0); + getObject().setSoftlyGroupId(0); } else { getObject().clearUserId(); getObject().clearGroupId(); @@ -98,10 +72,7 @@ public final void prepare() { } if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS)) { - if (getObject().getPermissions() == null - || getObject().getPermissions().getOriginalValue() == null) { - getObject().setPermissions(0); - } + getObject().setSoftlyPermissions(0); } else { getObject().clearPermissions(); } @@ -109,40 +80,25 @@ public final void prepare() { if (chooser.getSftpNegotiatedVersion() > 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACCESSTIME)) { - if (getObject().getAccessTime() == null - || getObject().getAccessTime().getOriginalValue() == null) { - getObject().setAccessTime(0); - } + getObject().setSoftlyAccessTime(0); } else { getObject().clearAccessTime(); } if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_CREATETIME)) { - if (getObject().getCreateTime() == null - || getObject().getCreateTime().getOriginalValue() == null) { - getObject().setCreateTime(0); - } + getObject().setSoftlyCreateTime(0); } else { getObject().clearCreateTime(); } if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_MODIFYTIME)) { - if (getObject().getModifyTime() == null - || getObject().getModifyTime().getOriginalValue() == null) { - getObject().setModifyTime(0); - } + getObject().setSoftlyModifyTime(0); } else { getObject().clearModifyTime(); } } else { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME)) { - if (getObject().getAccessTime() == null - || getObject().getAccessTime().getOriginalValue() == null) { - getObject().setAccessTime(0); - } - if (getObject().getModifyTime() == null - || getObject().getModifyTime().getOriginalValue() == null) { - getObject().setModifyTime(0); - } + getObject().setSoftlyAccessTime(0); + getObject().setSoftlyModifyTime(0); } else { getObject().clearAccessTime(); getObject().clearModifyTime(); @@ -156,10 +112,9 @@ public final void prepare() { if (getObject().getAclEntries().isEmpty()) { getObject().addAclEntry(new SftpAclEntry()); } - if (getObject().getAclEntriesCount() == null - || getObject().getAclEntriesCount().getOriginalValue() == null) { - getObject().setAclEntriesCount(getObject().getAclEntries().size()); - } + getObject() + .setSoftlyAclEntriesCount( + getObject().getAclEntries().size(), chooser.getConfig()); getObject() .getAclEntries() .forEach( @@ -168,7 +123,7 @@ public final void prepare() { .getPreparator() .prepare()); getObject() - .setAclLength( + .setSoftlyAclLength( DataFormatConstants.UINT32_SIZE + getObject().getAclEntries().size() * (DataFormatConstants.UINT32_SIZE * 3 @@ -176,7 +131,9 @@ public final void prepare() { + getObject().getAclEntries().stream() .map(SftpAclEntry::getWhoLength) .mapToInt(ModifiableVariable::getValue) - .sum()); + .sum(), + chooser.getConfig()); + } else { getObject().clearAcl(); } @@ -188,10 +145,10 @@ public final void prepare() { if (getObject().getExtendedAttributes().isEmpty()) { getObject().addExtendedAttribute(new SftpFileExtendedAttribute()); } - if (getObject().getExtendedCount() == null - || getObject().getExtendedCount().getOriginalValue() == null) { - getObject().setExtendedCount(getObject().getExtendedAttributes().size()); - } + getObject() + .setSoftlyExtendedCount( + getObject().getExtendedAttributes().size(), chooser.getConfig()); + getObject() .getExtendedAttributes() .forEach( @@ -206,6 +163,7 @@ public final void prepare() { } private boolean isFlagSet(int attributes, SftpFileAttributeFlag attribute) { - return (attributes & attribute.getValue()) != 0 || !chooser.getConfig().getRespectSftpAttributesFlags(); + return (attributes & attribute.getValue()) != 0 + || !chooser.getConfig().getRespectSftpAttributesFlags(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java index 9e56b8d9e..53282c5af 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java @@ -20,20 +20,8 @@ public SftpFileExtendedAttributePreparator( @Override public final void prepare() { - if (getObject().getType() == null || getObject().getType().getOriginalValue() == null) { - getObject().setType("hello-from@ssh-attacker.de", true); - } - if (getObject().getTypeLength() == null - || getObject().getTypeLength().getOriginalValue() == null) { - getObject().setTypeLength(getObject().getType().getValue().length()); - } + getObject().setSoftlyType("hello-from@ssh-attacker.de", true, chooser.getConfig()); - if (getObject().getData() == null || getObject().getData().getOriginalValue() == null) { - getObject().setData(new byte[100], true); - } - if (getObject().getDataLength() == null - || getObject().getDataLength().getOriginalValue() == null) { - getObject().setDataLength(getObject().getData().getValue().length); - } + getObject().setSoftlyData(new byte[100], true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java index 867e22b0e..15bb72a35 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.preperator.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -20,36 +19,20 @@ public SftpFileNameEntryPreparator(Chooser chooser, SftpFileNameEntry nameEntry) @Override public final void prepare() { - if (getObject().getFilename() == null - || getObject().getFilename().getOriginalValue() == null) { - getObject().setFilename("/etc/passwd", true); - } - if (getObject().getFilenameLength() == null - || getObject().getFilenameLength().getOriginalValue() == null) { - getObject().setFilenameLength(getObject().getFilename().getValue().length()); - } + getObject().setSoftlyFilename("/etc/passwd", true, chooser.getConfig()); if (chooser.getSftpNegotiatedVersion() <= 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { - if (getObject().getLongName() == null - || getObject().getLongName().getOriginalValue() == null) { - getObject() - .setLongName( - "-rwxr-xr-x 1 ssh attacker 348911 Mar 25 14:29 passwd", - true); - } - if (getObject().getLongNameLength() == null - || getObject().getLongNameLength().getOriginalValue() == null) { - getObject().setLongNameLength(getObject().getLongName().getValue().length()); - } + getObject() + .setSoftlyLongName( + "-rwxr-xr-x 1 ssh attacker 348911 Mar 25 14:29 passwd", + true, + chooser.getConfig()); } else { // As of version 4 there is no longer a longName field getObject().clearLongName(); } - if (getObject().getAttributes() == null) { - getObject().setAttributes(new SftpFileAttributes()); - } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java index d66b2f872..6b3a4462d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java @@ -19,8 +19,6 @@ public SftpIdEntryPreparator(Chooser chooser, SftpIdEntry idEntry) { @Override public final void prepare() { - if (getObject().getId() == null || getObject().getId().getOriginalValue() == null) { - getObject().setId(1000); - } + getObject().setSoftlyId(1000); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java index cd26d669f..2b5a2c1a2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java @@ -19,12 +19,6 @@ public SftpNameEntryPreparator(Chooser chooser, SftpNameEntry nameEntry) { @Override public final void prepare() { - if (getObject().getName() == null || getObject().getName().getOriginalValue() == null) { - getObject().setName("ssh-attacker", true); - } - if (getObject().getNameLength() == null - || getObject().getNameLength().getOriginalValue() == null) { - getObject().setNameLength(getObject().getName().getValue().length()); - } + getObject().setSoftlyName("ssh-attacker", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestCloseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestCloseMessagePreparator.java index 80f0e4c3b..638ba9ace 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestCloseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestCloseMessagePreparator.java @@ -21,6 +21,9 @@ public SftpRequestCloseMessagePreparator(Chooser chooser, SftpRequestCloseMessag @Override public void prepareRequestSpecificContents() { getObject() - .setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); + .setSoftlyHandle( + chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), + true, + chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java index 175410769..ad5ce6759 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java @@ -8,7 +8,6 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileSetStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -23,11 +22,11 @@ public SftpRequestFileSetStatMessagePreparator( @Override public void prepareRequestSpecificContents() { getObject() - .setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); + .setSoftlyHandle( + chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), + true, + chooser.getConfig()); - if (getObject().getAttributes() == null) { - getObject().setAttributes(new SftpFileAttributes()); - } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java index b2ac88804..c316c0eaf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java @@ -23,14 +23,14 @@ public SftpRequestFileStatMessagePreparator( @Override public void prepareRequestSpecificContents() { getObject() - .setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); + .setSoftlyHandle( + chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), + true, + chooser.getConfig()); if (chooser.getSftpNegotiatedVersion() > 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { - if (getObject().getFlags() == null - || getObject().getFlags().getOriginalValue() == null) { - getObject().setFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); - } + getObject().setSoftlyFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); } else { getObject().clearFlags(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java index b4cdda8cc..e1f8ff2ef 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java @@ -21,12 +21,6 @@ public SftpRequestLinkStatMessagePreparator( @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/bin/python3", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/bin/python3", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java index 71f7eb32f..fb13b6351 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java @@ -8,7 +8,6 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMakeDirMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -21,17 +20,8 @@ public SftpRequestMakeDirMessagePreparator(Chooser chooser, SftpRequestMakeDirMe @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/tmp/ssh-attacker/", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/tmp/ssh-attacker/", true, chooser.getConfig()); - if (getObject().getAttributes() == null) { - getObject().setAttributes(new SftpFileAttributes()); - } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java index 55797c668..694b3af0c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java @@ -20,12 +20,6 @@ public SftpRequestOpenDirMessagePreparator(Chooser chooser, SftpRequestOpenDirMe @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/tmp/", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/tmp/", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java index ad72614f2..075620686 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java @@ -9,7 +9,6 @@ import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -22,20 +21,10 @@ public SftpRequestOpenMessagePreparator(Chooser chooser, SftpRequestOpenMessage @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/etc/passwd", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/etc/passwd", true, chooser.getConfig()); + + getObject().setSoftlyPFlags(SftpFileOpenFlag.SSH_FXF_READ); - if (getObject().getPFlags() == null || getObject().getPFlags().getOriginalValue() == null) { - getObject().setPFlags(SftpFileOpenFlag.SSH_FXF_READ); - } - if (getObject().getAttributes() == null) { - getObject().setAttributes(new SftpFileAttributes()); - } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadDirMessagePreparator.java index e5338945c..da63230a7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadDirMessagePreparator.java @@ -20,6 +20,10 @@ public SftpRequestReadDirMessagePreparator(Chooser chooser, SftpRequestReadDirMe @Override public void prepareRequestSpecificContents() { - getObject().setHandle(chooser.getContext().getSftpManager().getDirectoryHandle(), true); + getObject() + .setSoftlyHandle( + chooser.getContext().getSftpManager().getDirectoryHandle(), + true, + chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java index d71779005..6a1fd07e3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java @@ -21,12 +21,6 @@ public SftpRequestReadLinkMessagePreparator( @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/bin/python3", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/bin/python3", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java index c16a437d8..7d58632a0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java @@ -20,14 +20,14 @@ public SftpRequestReadMessagePreparator(Chooser chooser, SftpRequestReadMessage @Override public void prepareRequestSpecificContents() { - getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); + getObject() + .setSoftlyHandle( + chooser.getContext().getSftpManager().getFileHandle(), + true, + chooser.getConfig()); - if (getObject().getOffset() == null || getObject().getOffset().getOriginalValue() == null) { - getObject().setOffset(0); - } + getObject().setSoftlyOffset(0); - if (getObject().getLength() == null || getObject().getLength().getOriginalValue() == null) { - getObject().setLength(100000000); - } + getObject().setSoftlyLength(100000000); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java index d3d37f281..68a9361bf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java @@ -21,12 +21,6 @@ public SftpRequestRealPathMessagePreparator( @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/tmp/../etc/./passwd", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/tmp/../etc/./passwd", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java index 3895663e3..851aafcdd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java @@ -20,12 +20,6 @@ public SftpRequestRemoveDirMessagePreparator(Chooser chooser, SftpRequestRmdirMe } public void prepareMessageSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/tmp/ssh-attacker", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/tmp/ssh-attacker", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java index 9cf273dac..41777dc8f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java @@ -20,12 +20,6 @@ public SftpRequestRemoveMessagePreparator(Chooser chooser, SftpRequestRemoveMess @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/etc/passwd", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/etc/passwd", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java index eee62c133..81bcad9a7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java @@ -20,21 +20,8 @@ public SftpRequestRenameMessagePreparator(Chooser chooser, SftpRequestRenameMess @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/etc/passwd", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/etc/passwd", true, chooser.getConfig()); - if (getObject().getNewPath() == null - || getObject().getNewPath().getOriginalValue() == null) { - getObject().setNewPath("/tmp/passwd-win", true); - } - if (getObject().getNewPathLength() == null - || getObject().getNewPathLength().getOriginalValue() == null) { - getObject().setNewPathLength(getObject().getNewPath().getValue().length()); - } + getObject().setSoftlyNewPath("/tmp/passwd-win", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java index e48f00661..89f8c55c5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java @@ -8,7 +8,6 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSetStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -21,17 +20,8 @@ public SftpRequestSetStatMessagePreparator(Chooser chooser, SftpRequestSetStatMe @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/tmp/ssh-attacker", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/tmp/ssh-attacker", true, chooser.getConfig()); - if (getObject().getAttributes() == null) { - getObject().setAttributes(new SftpFileAttributes()); - } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java index 31955acaf..319672f49 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java @@ -21,20 +21,11 @@ public SftpRequestStatMessagePreparator(Chooser chooser, SftpRequestStatMessage @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/etc/passwd", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/etc/passwd", true, chooser.getConfig()); if (chooser.getSftpNegotiatedVersion() > 3 || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { - if (getObject().getFlags() == null - || getObject().getFlags().getOriginalValue() == null) { - getObject().setFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); - } + getObject().setSoftlyFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); } else { getObject().clearFlags(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java index 179b60287..78a3b6136 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java @@ -21,21 +21,8 @@ public SftpRequestSymbolicLinkMessagePreparator( @Override public void prepareRequestSpecificContents() { - if (getObject().getPath() == null || getObject().getPath().getOriginalValue() == null) { - getObject().setPath("/bin/sh", true); - } - if (getObject().getPathLength() == null - || getObject().getPathLength().getOriginalValue() == null) { - getObject().setPathLength(getObject().getPath().getValue().length()); - } + getObject().setSoftlyPath("/bin/sh", true, chooser.getConfig()); - if (getObject().getTargetPath() == null - || getObject().getTargetPath().getOriginalValue() == null) { - getObject().setTargetPath("/tmp/ssh-attacker-sh", true); - } - if (getObject().getTargetPathLength() == null - || getObject().getTargetPathLength().getOriginalValue() == null) { - getObject().setTargetPathLength(getObject().getTargetPath().getValue().length()); - } + getObject().setSoftlyTargetPath("/tmp/ssh-attacker-sh", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java index 45fc4ebd2..2bea1e8f6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java @@ -20,18 +20,14 @@ public SftpRequestWriteMessagePreparator(Chooser chooser, SftpRequestWriteMessag @Override public void prepareRequestSpecificContents() { - getObject().setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); + getObject() + .setSoftlyHandle( + chooser.getContext().getSftpManager().getFileHandle(), + true, + chooser.getConfig()); - if (getObject().getOffset() == null || getObject().getOffset().getOriginalValue() == null) { - getObject().setOffset(0); - } + getObject().setSoftlyOffset(0); - if (getObject().getData() == null || getObject().getData().getOriginalValue() == null) { - getObject().setData(new byte[100], true); - } - if (getObject().getDataLength() == null - || getObject().getDataLength().getOriginalValue() == null) { - getObject().setDataLength(getObject().getData().getValue().length); - } + getObject().setSoftlyData(new byte[100], true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java index ba6601e8f..cd12a289b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java @@ -8,7 +8,6 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -22,9 +21,6 @@ public SftpResponseAttributesMessagePreparator( @Override public void prepareResponseSpecificContents() { - if (getObject().getAttributes() == null) { - getObject().setAttributes(new SftpFileAttributes()); - } getObject().getAttributes().getHandler(chooser.getContext()).getPreparator().prepare(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java index eb06e66bf..ccdab44ec 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java @@ -20,12 +20,6 @@ public SftpResponseDataMessagePreparator(Chooser chooser, SftpResponseDataMessag @Override public void prepareResponseSpecificContents() { - if (getObject().getData() == null || getObject().getData().getOriginalValue() == null) { - getObject().setData(new byte[100], true); - } - if (getObject().getDataLength() == null - || getObject().getDataLength().getOriginalValue() == null) { - getObject().setDataLength(getObject().getData().getValue().length); - } + getObject().setSoftlyData(new byte[100], true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java index eba9eb085..1ecf7abdd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java @@ -24,9 +24,9 @@ public void prepareResponseSpecificContents() { // Should be set in SftpManager handleRequestMessage() getObject().setHandle(new byte[100], true); } - if (getObject().getHandleLength() == null - || getObject().getHandleLength().getOriginalValue() == null) { - getObject().setHandleLength(getObject().getHandle().getValue().length); - } + // This should not be necessary: + getObject() + .setSoftlyHandleLength( + getObject().getHandle().getValue().length, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java index eaef8c237..764302297 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java @@ -22,10 +22,7 @@ protected SftpResponseMessagePreparator( public void prepareMessageSpecificContents() { // Request identifier should be set by SftpManager in handleRequestMessage() - if (getObject().getRequestId() == null - || getObject().getRequestId().getOriginalValue() == null) { - getObject().setRequestId(chooser.getContext().getSftpManager().getNextRequestId()); - } + getObject().setSoftlyRequestId(chooser.getContext().getSftpManager().getNextRequestId()); prepareResponseSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java index 74bc46ef7..b9cddc0e6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java @@ -20,10 +20,9 @@ public SftpResponseNameMessagePreparator(Chooser chooser, SftpResponseNameMessag @Override public void prepareResponseSpecificContents() { - if (getObject().getCountNameEntries() == null - || getObject().getCountNameEntries().getOriginalValue() == null) { - getObject().setCountNameEntries(0); - } + getObject() + .setSoftlyNameEntriesCount( + getObject().getNameEntries().size(), chooser.getConfig()); getObject() .getNameEntries() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java index 763574f10..ab866ce77 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java @@ -21,27 +21,10 @@ public SftpResponseStatusMessagePreparator(Chooser chooser, SftpResponseStatusMe @Override public void prepareResponseSpecificContents() { - if (getObject().getStatusCode() == null - || getObject().getStatusCode().getOriginalValue() == null) { - getObject().setStatusCode(SftpStatusCode.SSH_FX_OK); - } + getObject().setSoftlyStatusCode(SftpStatusCode.SSH_FX_OK); - if (getObject().getErrorMessage() == null - || getObject().getErrorMessage().getOriginalValue() == null) { - getObject().setErrorMessage("SSH-Attacker sagt NEIN!", true); - } - if (getObject().getErrorMessageLength() == null - || getObject().getErrorMessageLength().getOriginalValue() == null) { - getObject().setErrorMessageLength(getObject().getErrorMessage().getValue().length()); - } + getObject().setSoftlyErrorMessage("SSH-Attacker sagt NEIN!", true, chooser.getConfig()); - if (getObject().getLanguageTag() == null - || getObject().getLanguageTag().getOriginalValue() == null) { - getObject().setLanguageTag("de", true); - } - if (getObject().getLanguageTagLength() == null - || getObject().getLanguageTagLength().getOriginalValue() == null) { - getObject().setLanguageTagLength(getObject().getLanguageTag().getValue().length()); - } + getObject().setSoftlyLanguageTag("de", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameMessageSerializer.java index 2bf57059d..04c6cda95 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameMessageSerializer.java @@ -22,7 +22,7 @@ public SftpResponseNameMessageSerializer(SftpResponseNameMessage message) { } private void serializeNameEntries() { - Integer countNameEntries = message.getCountNameEntries().getValue(); + Integer countNameEntries = message.getNameEntriesCount().getValue(); LOGGER.debug("CountNameEntries: {}", countNameEntries); appendInt(countNameEntries, DataFormatConstants.UINT32_SIZE); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/BinaryPacket.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/BinaryPacket.java index 91cc37fdc..026b9594b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/BinaryPacket.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/BinaryPacket.java @@ -78,6 +78,13 @@ public void setPaddingLength(byte paddingLength) { ModifiableVariableFactory.safelySetValue(this.paddingLength, paddingLength); } + public void setSoftlyPaddingLength(byte paddingLength) { + if (this.paddingLength == null || this.paddingLength.getOriginalValue() == null) { + this.paddingLength = + ModifiableVariableFactory.safelySetValue(this.paddingLength, paddingLength); + } + } + public ModifiableByteArray getPadding() { return padding; } @@ -115,6 +122,13 @@ public void setSequenceNumber(int sequenceNumber) { ModifiableVariableFactory.safelySetValue(this.sequenceNumber, sequenceNumber); } + public void setSoftlySequenceNumber(int sequenceNumber) { + if (this.sequenceNumber == null || this.sequenceNumber.getOriginalValue() == null) { + this.sequenceNumber = + ModifiableVariableFactory.safelySetValue(this.sequenceNumber, sequenceNumber); + } + } + @Override public BinaryPacketPreparator getPacketPreparator( Chooser chooser, AbstractPacketEncryptor encryptor, PacketCompressor compressor) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationPrompt.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationPrompt.java index 6596594ff..be55a92bf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationPrompt.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationPrompt.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.util.Converter; import jakarta.xml.bind.annotation.*; import java.io.Serializable; @@ -66,10 +67,23 @@ public void setPrompt(ModifiableString prompt, boolean adjustLengthField) { } public void setPrompt(String prompt, boolean adjustLengthField) { + this.prompt = ModifiableVariableFactory.safelySetValue(this.prompt, prompt); if (adjustLengthField) { - setPromptLength(prompt.getBytes(StandardCharsets.UTF_8).length); + setPromptLength(this.prompt.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyPrompt(String prompt, boolean adjustLengthField, Config config) { + if (this.prompt == null || this.prompt.getOriginalValue() == null) { + this.prompt = ModifiableVariableFactory.safelySetValue(this.prompt, prompt); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || promptLength == null + || promptLength.getOriginalValue() == null) { + setPromptLength(this.prompt.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.prompt = ModifiableVariableFactory.safelySetValue(this.prompt, prompt); } public ModifiableByte getEcho() { @@ -80,10 +94,16 @@ public void setEcho(ModifiableByte echo) { this.echo = echo; } - public void setEcho(Byte echo) { + public void setEcho(byte echo) { this.echo = ModifiableVariableFactory.safelySetValue(this.echo, echo); } + public void setSoftlyEcho(byte echo) { + if (this.echo == null || this.echo.getOriginalValue() == null) { + this.echo = ModifiableVariableFactory.safelySetValue(this.echo, echo); + } + } + public void setEcho(boolean echo) { setEcho(Converter.booleanToByte(echo)); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationResponse.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationResponse.java index 91970f564..8371d3457 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationResponse.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationResponse.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import jakarta.xml.bind.annotation.*; import java.io.Serializable; import java.nio.charset.StandardCharsets; @@ -80,10 +81,24 @@ public void setResponse(ModifiableString response, boolean adjustLengthField) { } public void setResponse(String response, boolean adjustLengthField) { + this.response = ModifiableVariableFactory.safelySetValue(this.response, response); if (adjustLengthField) { - setResponseLength(response.getBytes(StandardCharsets.UTF_8).length); + setResponseLength(this.response.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyResponse(String response, boolean adjustLengthField, Config config) { + if (this.response == null || this.response.getOriginalValue() == null) { + this.response = ModifiableVariableFactory.safelySetValue(this.response, response); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || responseLength == null + || responseLength.getOriginalValue() == null) { + setResponseLength( + this.response.getValue().getBytes(StandardCharsets.UTF_8).length); + } } - this.response = ModifiableVariableFactory.safelySetValue(this.response, response); } public boolean isExecuted() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthBannerMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthBannerMessage.java index 010d7187c..20ed02e41 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthBannerMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthBannerMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.authentication.handler.UserAuthBannerMessageHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import de.rub.nds.sshattacker.core.state.SshContext; @@ -61,6 +62,19 @@ public void setMessage(String message, boolean adjustLengthField) { } } + public void setSoftlyMessage(String message, boolean adjustLengthField, Config config) { + if (this.message == null || this.message.getOriginalValue() == null) { + this.message = ModifiableVariableFactory.safelySetValue(this.message, message); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || messageLength == null + || messageLength.getOriginalValue() == null) { + setMessageLength(this.message.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public ModifiableInteger getLanguageTagLength() { return languageTagLength; } @@ -102,6 +116,21 @@ public void setLanguageTag(String languageTag, boolean adjustLengthField) { } } + public void setSoftlyLanguageTag(String languageTag, boolean adjustLengthField, Config config) { + if (this.languageTag == null || this.languageTag.getOriginalValue() == null) { + this.languageTag = + ModifiableVariableFactory.safelySetValue(this.languageTag, languageTag); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || languageTagLength == null + || languageTagLength.getOriginalValue() == null) { + setLanguageTagLength( + this.languageTag.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + @Override public UserAuthBannerMessageHandler getHandler(SshContext context) { return new UserAuthBannerMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java index c1d48f64d..38db57aa2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.AuthenticationMethod; import de.rub.nds.sshattacker.core.constants.CharConstants; import de.rub.nds.sshattacker.core.protocol.authentication.handler.UserAuthFailureMessageHandler; @@ -90,6 +91,27 @@ public void setPossibleAuthenticationMethods( } } + public void setSoftlyPossibleAuthenticationMethods( + String possibleAuthenticationMethods, boolean adjustLengthField, Config config) { + if (this.possibleAuthenticationMethods == null + || this.possibleAuthenticationMethods.getOriginalValue() == null) { + this.possibleAuthenticationMethods = + ModifiableVariableFactory.safelySetValue( + this.possibleAuthenticationMethods, possibleAuthenticationMethods); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || possibleAuthenticationMethodsLength == null + || possibleAuthenticationMethodsLength.getOriginalValue() == null) { + setPossibleAuthenticationMethodsLength( + this.possibleAuthenticationMethods + .getValue() + .getBytes(StandardCharsets.US_ASCII) + .length); + } + } + } + public void setPossibleAuthenticationMethods( String[] possibleAuthenticationMethods, boolean adjustLengthField) { String nameList = @@ -119,6 +141,13 @@ public void setPartialSuccess(byte partialSuccess) { ModifiableVariableFactory.safelySetValue(this.partialSuccess, partialSuccess); } + public void setSoftlyPartialSuccess(byte partialSuccess) { + if (this.partialSuccess == null || this.partialSuccess.getOriginalValue() == null) { + this.partialSuccess = + ModifiableVariableFactory.safelySetValue(this.partialSuccess, partialSuccess); + } + } + public void setPartialSuccess(boolean partialSuccess) { setPartialSuccess(Converter.booleanToByte(partialSuccess)); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthHostbasedMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthHostbasedMessage.java index 63b02854c..206780cc5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthHostbasedMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthHostbasedMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; import de.rub.nds.sshattacker.core.crypto.util.PublicKeyHelper; import de.rub.nds.sshattacker.core.protocol.authentication.handler.UserAuthHostbasedMessageHandler; @@ -77,6 +78,22 @@ public void setPubKeyAlgorithm(String pubKeyAlgorithm, boolean adjustLengthField } } + public void setSoftlyPubKeyAlgorithm( + String pubKeyAlgorithm, boolean adjustLengthField, Config config) { + if (this.pubKeyAlgorithm == null || this.pubKeyAlgorithm.getOriginalValue() == null) { + this.pubKeyAlgorithm = + ModifiableVariableFactory.safelySetValue(this.pubKeyAlgorithm, pubKeyAlgorithm); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || pubKeyAlgorithmLength == null + || pubKeyAlgorithmLength.getOriginalValue() == null) { + setPubKeyAlgorithmLength( + this.pubKeyAlgorithm.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + @Override public ModifiableInteger getHostKeyBytesLength() { return hostKeyBytesLength; @@ -131,6 +148,21 @@ public void setHostKeyBytes(byte[] hostKeyBytes, boolean adjustLengthField) { } } + public void setSoftlyHostKeyBytes( + byte[] hostKeyBytes, boolean adjustLengthField, Config config) { + if (this.hostKeyBytes == null || this.hostKeyBytes.getOriginalValue() == null) { + this.hostKeyBytes = + ModifiableVariableFactory.safelySetValue(this.hostKeyBytes, hostKeyBytes); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || hostKeyBytesLength == null + || hostKeyBytesLength.getOriginalValue() == null) { + setHostKeyBytesLength(this.hostKeyBytes.getValue().length); + } + } + } + public ModifiableInteger getHostNameLength() { return hostNameLength; } @@ -170,6 +202,19 @@ public void setHostName(String hostName, boolean adjustLengthField) { } } + public void setSoftlyHostName(String hostName, boolean adjustLengthField, Config config) { + if (this.hostName == null || this.hostName.getOriginalValue() == null) { + this.hostName = ModifiableVariableFactory.safelySetValue(this.hostName, hostName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || hostNameLength == null + || hostNameLength.getOriginalValue() == null) { + setHostNameLength(this.hostName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public ModifiableInteger getClientUserNameLength() { return clientUserNameLength; } @@ -214,6 +259,22 @@ public void setClientUserName(String clientUserName, boolean adjustLengthField) } } + public void setSoftlyClientUserName( + String clientUserName, boolean adjustLengthField, Config config) { + if (this.clientUserName == null || this.clientUserName.getOriginalValue() == null) { + this.clientUserName = + ModifiableVariableFactory.safelySetValue(this.clientUserName, clientUserName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || clientUserNameLength == null + || clientUserNameLength.getOriginalValue() == null) { + setClientUserNameLength( + this.clientUserName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + @Override public ModifiableInteger getSignatureLength() { return signatureLength; @@ -261,6 +322,19 @@ public void setSignature(byte[] signature, boolean adjustLengthField) { } } + public void setSoftlySignature(byte[] signature, boolean adjustLengthField, Config config) { + if (this.signature == null || this.signature.getOriginalValue() == null) { + this.signature = ModifiableVariableFactory.safelySetValue(this.signature, signature); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || signatureLength == null + || signatureLength.getOriginalValue() == null) { + setSignatureLength(this.signature.getValue().length); + } + } + } + @Override public UserAuthHostbasedMessageHandler getHandler(SshContext context) { return new UserAuthHostbasedMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthInfoRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthInfoRequestMessage.java index 1d167c54f..9ecffd79e 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthInfoRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthInfoRequestMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationPrompt; import de.rub.nds.sshattacker.core.protocol.authentication.handler.UserAuthInfoRequestMessageHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; @@ -66,6 +67,19 @@ public void setUserName(String userName, boolean adjustLengthField) { } } + public void setSoftlyUserName(String userName, boolean adjustLengthField, Config config) { + if (this.userName == null || this.userName.getOriginalValue() == null) { + this.userName = ModifiableVariableFactory.safelySetValue(this.userName, userName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || userNameLength == null + || userNameLength.getOriginalValue() == null) { + setUserNameLength(this.userName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public ModifiableInteger getInstructionLength() { return instructionLength; } @@ -107,6 +121,21 @@ public void setInstruction(String instruction, boolean adjustLengthField) { } } + public void setSoftlyInstruction(String instruction, boolean adjustLengthField, Config config) { + if (this.instruction == null || this.instruction.getOriginalValue() == null) { + this.instruction = + ModifiableVariableFactory.safelySetValue(this.instruction, instruction); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || instructionLength == null + || instructionLength.getOriginalValue() == null) { + setInstructionLength( + this.instruction.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public ModifiableInteger getLanguageTagLength() { return languageTagLength; } @@ -148,6 +177,21 @@ public void setLanguageTag(String languageTag, boolean adjustLengthField) { } } + public void setSoftlyLanguageTag(String languageTag, boolean adjustLengthField, Config config) { + if (this.languageTag == null || this.languageTag.getOriginalValue() == null) { + this.languageTag = + ModifiableVariableFactory.safelySetValue(this.languageTag, languageTag); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || languageTagLength == null + || languageTagLength.getOriginalValue() == null) { + setLanguageTagLength( + this.languageTag.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public ModifiableInteger getPromptEntryCount() { return promptEntryCount; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthKeyboardInteractiveMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthKeyboardInteractiveMessage.java index 63e9b28e6..34485921c 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthKeyboardInteractiveMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthKeyboardInteractiveMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.authentication.handler.UserAuthKeyboardInteractiveMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -63,6 +64,21 @@ public void setLanguageTag(String languageTag, boolean adjustLengthField) { } } + public void setSoftlyLanguageTag(String languageTag, boolean adjustLengthField, Config config) { + if (this.languageTag == null || this.languageTag.getOriginalValue() == null) { + this.languageTag = + ModifiableVariableFactory.safelySetValue(this.languageTag, languageTag); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || languageTagLength == null + || languageTagLength.getOriginalValue() == null) { + setLanguageTagLength( + this.languageTag.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public ModifiableInteger getSubMethodsLength() { return subMethodsLength; } @@ -102,6 +118,20 @@ public void setSubMethods(String subMethods, boolean adjustLengthField) { } } + public void setSoftlySubMethods(String subMethods, boolean adjustLengthField, Config config) { + if (this.subMethods == null || this.subMethods.getOriginalValue() == null) { + this.subMethods = ModifiableVariableFactory.safelySetValue(this.subMethods, subMethods); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || subMethodsLength == null + || subMethodsLength.getOriginalValue() == null) { + setSubMethodsLength( + this.subMethods.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + @Override public UserAuthKeyboardInteractiveMessageHandler getHandler(SshContext context) { return new UserAuthKeyboardInteractiveMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPasswordMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPasswordMessage.java index e4dce8076..0dd74a95f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPasswordMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPasswordMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.authentication.handler.UserAuthPasswordMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; @@ -37,6 +38,13 @@ public void setChangePassword(byte changePassword) { ModifiableVariableFactory.safelySetValue(this.changePassword, changePassword); } + public void setSoftlyChangePassword(byte changePassword) { + if (this.changePassword == null || this.changePassword.getOriginalValue() == null) { + this.changePassword = + ModifiableVariableFactory.safelySetValue(this.changePassword, changePassword); + } + } + public void setChangePassword(boolean changePassword) { setChangePassword(Converter.booleanToByte(changePassword)); } @@ -80,6 +88,19 @@ public void setPassword(String password, boolean adjustLengthField) { } } + public void setSoftlyPassword(String password, boolean adjustLengthField, Config config) { + if (this.password == null || this.password.getOriginalValue() == null) { + this.password = ModifiableVariableFactory.safelySetValue(this.password, password); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || passwordLength == null + || passwordLength.getOriginalValue() == null) { + setPasswordLength(this.password.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public ModifiableInteger getNewPasswordLength() { return newPasswordLength; } @@ -121,6 +142,21 @@ public void setNewPassword(String newPassword, boolean adjustLengthField) { } } + public void setSoftlyNewPassword(String newPassword, boolean adjustLengthField, Config config) { + if (this.newPassword == null || this.newPassword.getOriginalValue() == null) { + this.newPassword = + ModifiableVariableFactory.safelySetValue(this.newPassword, newPassword); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || newPasswordLength == null + || newPasswordLength.getOriginalValue() == null) { + setNewPasswordLength( + this.newPassword.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + @Override public UserAuthPasswordMessageHandler getHandler(SshContext context) { return new UserAuthPasswordMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPkOkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPkOkMessage.java index 2e125fbcf..a672d9ba5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPkOkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPkOkMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.authentication.handler.UserAuthPkOkMessageHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import de.rub.nds.sshattacker.core.state.SshContext; @@ -53,6 +54,22 @@ public void setPubkeyAlgName(String pubkeyAlgName, boolean adjustLengthField) { } } + public void setSoftlyPubkeyAlgName( + String pubkeyAlgName, boolean adjustLengthField, Config config) { + if (this.pubkeyAlgName == null || this.pubkeyAlgName.getOriginalValue() == null) { + this.pubkeyAlgName = + ModifiableVariableFactory.safelySetValue(this.pubkeyAlgName, pubkeyAlgName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || pubkeyAlgNameLength == null + || pubkeyAlgNameLength.getOriginalValue() == null) { + setPubkeyAlgNameLength( + this.pubkeyAlgName.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public void setPubkeyAlgName(ModifiableString pubkeyAlgName) { setPubkeyAlgName(pubkeyAlgName, false); } @@ -88,6 +105,19 @@ public void setPubkey(String pubkey, boolean adjustLengthField) { } } + public void setSoftlyPubkey(String pubkey, boolean adjustLengthField, Config config) { + if (this.pubkey == null || this.pubkey.getOriginalValue() == null) { + this.pubkey = ModifiableVariableFactory.safelySetValue(this.pubkey, pubkey); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || pubkeyLength == null + || pubkeyLength.getOriginalValue() == null) { + setPubkeyLength(this.pubkey.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public void setPubkey(ModifiableString pubkey) { setPubkey(pubkey, false); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPubkeyMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPubkeyMessage.java index 234a62bd0..cd1d46a7d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPubkeyMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPubkeyMessage.java @@ -12,6 +12,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.authentication.handler.UserAuthPubkeyMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; @@ -50,6 +51,19 @@ public void setPubkey(byte[] pubkey, boolean adjustLengthField) { } } + public void setSoftlyPubkey(byte[] pubkey, boolean adjustLengthField, Config config) { + if (this.pubkey == null || this.pubkey.getOriginalValue() == null) { + this.pubkey = ModifiableVariableFactory.safelySetValue(this.pubkey, pubkey); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || pubkeyLength == null + || pubkeyLength.getOriginalValue() == null) { + setPubkeyLength(this.pubkey.getValue().length); + } + } + } + public void setPubkey(ModifiableByteArray pubkey) { setPubkey(pubkey, false); } @@ -89,6 +103,22 @@ public void setPubkeyAlgName(String pubkeyAlgName, boolean adjustLengthField) { } } + public void setSoftlyPubkeyAlgName( + String pubkeyAlgName, boolean adjustLengthField, Config config) { + if (this.pubkeyAlgName == null || this.pubkeyAlgName.getOriginalValue() == null) { + this.pubkeyAlgName = + ModifiableVariableFactory.safelySetValue(this.pubkeyAlgName, pubkeyAlgName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || pubkeyAlgNameLength == null + || pubkeyAlgNameLength.getOriginalValue() == null) { + setPubkeyAlgNameLength( + this.pubkeyAlgName.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public void setPubkeyAlgName(ModifiableString pubkeyAlgName) { setPubkeyAlgName(pubkeyAlgName, false); } @@ -110,6 +140,13 @@ public void setUseSignature(byte useSignature) { ModifiableVariableFactory.safelySetValue(this.useSignature, useSignature); } + public void setSoftlyUseSignature(byte useSignature) { + if (this.useSignature == null || this.useSignature.getOriginalValue() == null) { + this.useSignature = + ModifiableVariableFactory.safelySetValue(this.useSignature, useSignature); + } + } + public void setUseSignature(boolean useSignature) { setUseSignature(Converter.booleanToByte(useSignature)); } @@ -141,6 +178,19 @@ public void setSignature(byte[] signature, boolean adjustLengthField) { } } + public void setSoftlySignature(byte[] signature, boolean adjustLengthField, Config config) { + if (this.signature == null || this.signature.getOriginalValue() == null) { + this.signature = ModifiableVariableFactory.safelySetValue(this.signature, signature); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || signatureLength == null + || signatureLength.getOriginalValue() == null) { + setSignatureLength(this.signature.getValue().length); + } + } + } + public void setSignature(ModifiableByteArray signature) { setSignature(signature, false); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthRequestMessage.java index 9d266e7ff..670d0dcff 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthRequestMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.AuthenticationMethod; import de.rub.nds.sshattacker.core.constants.ServiceType; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; @@ -75,6 +76,19 @@ public void setUserName(String userName, boolean adjustLengthField) { } } + public void setSoftlyUserName(String userName, boolean adjustLengthField, Config config) { + if (this.userName == null || this.userName.getOriginalValue() == null) { + this.userName = ModifiableVariableFactory.safelySetValue(this.userName, userName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || userNameLength == null + || userNameLength.getOriginalValue() == null) { + setUserNameLength(this.userName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public ModifiableInteger getServiceNameLength() { return serviceNameLength; } @@ -120,6 +134,21 @@ public void setServiceName(String serviceName, boolean adjustLengthField) { } } + public void setSoftlyServiceName(String serviceName, boolean adjustLengthField, Config config) { + if (this.serviceName == null || this.serviceName.getOriginalValue() == null) { + this.serviceName = + ModifiableVariableFactory.safelySetValue(this.serviceName, serviceName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || serviceNameLength == null + || serviceNameLength.getOriginalValue() == null) { + setServiceNameLength( + this.serviceName.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public void setServiceName(ServiceType serviceType, boolean adjustLengthField) { setServiceName(serviceType.toString(), adjustLengthField); } @@ -169,6 +198,20 @@ public void setMethodName(String methodName, boolean adjustLengthField) { } } + public void setSoftlyMethodName(String methodName, boolean adjustLengthField, Config config) { + if (this.methodName == null || this.methodName.getOriginalValue() == null) { + this.methodName = ModifiableVariableFactory.safelySetValue(this.methodName, methodName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || methodNameLength == null + || methodNameLength.getOriginalValue() == null) { + setMethodNameLength( + this.methodName.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public void setMethodName( AuthenticationMethod authenticationMethod, boolean adjustLengthField) { setMethodName(authenticationMethod.toString(), adjustLengthField); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessage.java index 6ab32512e..27e4d4f67 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessage.java @@ -33,10 +33,20 @@ public void setMessageId(byte messageId) { this.messageId = ModifiableVariableFactory.safelySetValue(this.messageId, messageId); } + public void setSoftlyMessageId(byte messageId) { + if (this.messageId == null || this.messageId.getOriginalValue() == null) { + this.messageId = ModifiableVariableFactory.safelySetValue(this.messageId, messageId); + } + } + public void setMessageId(MessageIdConstant messageId) { setMessageId(messageId.getId()); } + public void setSoftlyMessageId(MessageIdConstant messageId) { + setSoftlyMessageId(messageId.getId()); + } + @Override public abstract SshMessageHandler getHandler(SshContext context); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelDataMessage.java index 38455bf91..465308808 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelDataMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.connection.handler.ChannelDataMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -56,6 +57,19 @@ public void setData(byte[] data, boolean adjustLengthField) { } } + public void setSoftlyData(byte[] data, boolean adjustLengthField, Config config) { + if (this.data == null || this.data.getOriginalValue() == null) { + this.data = ModifiableVariableFactory.safelySetValue(this.data, data); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || dataLength == null + || dataLength.getOriginalValue() == null) { + setDataLength(this.data.getValue().length); + } + } + } + @Override public ChannelDataMessageHandler getHandler(SshContext context) { return new ChannelDataMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelExtendedDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelExtendedDataMessage.java index 2e544e667..d211c507c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelExtendedDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelExtendedDataMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.ExtendedChannelDataType; import de.rub.nds.sshattacker.core.protocol.connection.handler.ChannelExtendedDataMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -33,6 +34,13 @@ public void setDataTypeCode(int dataTypeCode) { ModifiableVariableFactory.safelySetValue(this.dataTypeCode, dataTypeCode); } + public void setSoftlyDataTypeCode(int dataTypeCode) { + if (this.dataTypeCode == null || this.dataTypeCode.getOriginalValue() == null) { + this.dataTypeCode = + ModifiableVariableFactory.safelySetValue(this.dataTypeCode, dataTypeCode); + } + } + public void setDataTypeCode(ExtendedChannelDataType dataType) { setDataTypeCode(dataType.getDataTypeCode()); } @@ -75,6 +83,19 @@ public void setData(byte[] data, boolean adjustLengthField) { } } + public void setSoftlyData(byte[] data, boolean adjustLengthField, Config config) { + if (this.data == null || this.data.getOriginalValue() == null) { + this.data = ModifiableVariableFactory.safelySetValue(this.data, data); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || dataLength == null + || dataLength.getOriginalValue() == null) { + setDataLength(this.data.getValue().length); + } + } + } + @Override public ChannelExtendedDataMessageHandler getHandler(SshContext context) { return new ChannelExtendedDataMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenConfirmationMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenConfirmationMessage.java index 45950ffaa..d19140335 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenConfirmationMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenConfirmationMessage.java @@ -43,6 +43,12 @@ public void setWindowSize(int windowSize) { this.windowSize = ModifiableVariableFactory.safelySetValue(this.windowSize, windowSize); } + public void setSoftlyWindowSize(int windowSize) { + if (this.windowSize == null || this.windowSize.getOriginalValue() == null) { + this.windowSize = ModifiableVariableFactory.safelySetValue(this.windowSize, windowSize); + } + } + public ModifiableInteger getPacketSize() { return packetSize; } @@ -55,6 +61,12 @@ public void setPacketSize(int packetSize) { this.packetSize = ModifiableVariableFactory.safelySetValue(this.packetSize, packetSize); } + public void setSoftlyPacketSize(int packetSize) { + if (this.packetSize == null || this.packetSize.getOriginalValue() == null) { + this.packetSize = ModifiableVariableFactory.safelySetValue(this.packetSize, packetSize); + } + } + @Override public ChannelOpenConfirmationMessageHandler getHandler(SshContext context) { return new ChannelOpenConfirmationMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenFailureMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenFailureMessage.java index c338d81e3..4e6ec3ade 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenFailureMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenFailureMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.connection.handler.ChannelOpenFailureMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -34,6 +35,12 @@ public void setReasonCode(int reasonCode) { this.reasonCode = ModifiableVariableFactory.safelySetValue(this.reasonCode, reasonCode); } + public void setSoftlyReasonCode(int reasonCode) { + if (this.reasonCode == null || this.reasonCode.getOriginalValue() == null) { + this.reasonCode = ModifiableVariableFactory.safelySetValue(this.reasonCode, reasonCode); + } + } + public ModifiableInteger getReasonLength() { return reasonLength; } @@ -73,6 +80,19 @@ public void setReason(String reason, boolean adjustLengthField) { } } + public void setSoftlyReason(String reason, boolean adjustLengthField, Config config) { + if (this.reason == null || this.reason.getOriginalValue() == null) { + this.reason = ModifiableVariableFactory.safelySetValue(this.reason, reason); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || reasonLength == null + || reasonLength.getOriginalValue() == null) { + setReasonLength(this.reason.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public ModifiableInteger getLanguageTagLength() { return languageTagLength; } @@ -114,6 +134,21 @@ public void setLanguageTag(String languageTag, boolean adjustLengthField) { } } + public void setSoftlyLanguageTag(String languageTag, boolean adjustLengthField, Config config) { + if (this.languageTag == null || this.languageTag.getOriginalValue() == null) { + this.languageTag = + ModifiableVariableFactory.safelySetValue(this.languageTag, languageTag); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || languageTagLength == null + || languageTagLength.getOriginalValue() == null) { + setLanguageTagLength( + this.languageTag.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + @Override public ChannelOpenFailureMessageHandler getHandler(SshContext context) { return new ChannelOpenFailureMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java index 799a96e77..73ba335ee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.ChannelType; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import jakarta.xml.bind.annotation.XmlAttribute; @@ -71,10 +72,30 @@ public void setChannelType(String channelType, boolean adjustLengthField) { } } + public void setSoftlyChannelType(String channelType, boolean adjustLengthField, Config config) { + if (this.channelType == null || this.channelType.getOriginalValue() == null) { + this.channelType = + ModifiableVariableFactory.safelySetValue(this.channelType, channelType); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || channelTypeLength == null + || channelTypeLength.getOriginalValue() == null) { + setChannelTypeLength( + this.channelType.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public void setChannelType(ChannelType channelType, boolean adjustLengthField) { setChannelType(channelType.toString(), adjustLengthField); } + public void setSoftlyChannelType( + ChannelType channelType, boolean adjustLengthField, Config config) { + setSoftlyChannelType(channelType.toString(), adjustLengthField, config); + } + public ModifiableInteger getSenderChannelId() { return senderChannelId; } @@ -100,6 +121,12 @@ public void setWindowSize(int windowSize) { this.windowSize = ModifiableVariableFactory.safelySetValue(this.windowSize, windowSize); } + public void setSoftlyWindowSize(int windowSize) { + if (this.windowSize == null || this.windowSize.getOriginalValue() == null) { + this.windowSize = ModifiableVariableFactory.safelySetValue(this.windowSize, windowSize); + } + } + public ModifiableInteger getPacketSize() { return packetSize; } @@ -112,6 +139,12 @@ public void setPacketSize(int packetSize) { this.packetSize = ModifiableVariableFactory.safelySetValue(this.packetSize, packetSize); } + public void setSoftlyPacketSize(int packetSize) { + if (this.packetSize == null || this.packetSize.getOriginalValue() == null) { + this.packetSize = ModifiableVariableFactory.safelySetValue(this.packetSize, packetSize); + } + } + public Integer getConfigLocalChannelId() { return configLocalChannelId; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestEnvMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestEnvMessage.java index 533a7311f..aba2206ef 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestEnvMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestEnvMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.connection.handler.ChannelRequestEnvMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -51,6 +52,22 @@ public void setVariableName(String variableName, boolean adjustLengthField) { } } + public void setSoftlyVariableName( + String variableName, boolean adjustLengthField, Config config) { + if (this.variableName == null || this.variableName.getOriginalValue() == null) { + this.variableName = + ModifiableVariableFactory.safelySetValue(this.variableName, variableName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || variableNameLength == null + || variableNameLength.getOriginalValue() == null) { + setVariableNameLength( + this.variableName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public ModifiableInteger getVariableNameLength() { return variableNameLength; } @@ -95,6 +112,22 @@ public void setVariableValue(String variableValue, boolean adjustLengthField) { } } + public void setSoftlyVariableValue( + String variableValue, boolean adjustLengthField, Config config) { + if (this.variableValue == null || this.variableValue.getOriginalValue() == null) { + this.variableValue = + ModifiableVariableFactory.safelySetValue(this.variableValue, variableValue); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || variableValueLength == null + || variableValueLength.getOriginalValue() == null) { + setVariableValueLength( + this.variableValue.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public ModifiableInteger getVariableValueLength() { return variableValueLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExecMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExecMessage.java index 159011a0d..aae4dd450 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExecMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExecMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.connection.handler.ChannelRequestExecMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -58,6 +59,19 @@ public void setCommand(String command, boolean adjustLengthField) { } } + public void setSoftlyCommand(String command, boolean adjustLengthField, Config config) { + if (this.command == null || this.command.getOriginalValue() == null) { + this.command = ModifiableVariableFactory.safelySetValue(this.command, command); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || commandLength == null + || commandLength.getOriginalValue() == null) { + setCommandLength(this.command.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + @Override public ChannelRequestExecMessageHandler getHandler(SshContext context) { return new ChannelRequestExecMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExitSignalMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExitSignalMessage.java index 3f0d0198f..ffd69a559 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExitSignalMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExitSignalMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.bool.ModifiableBoolean; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.SignalType; import de.rub.nds.sshattacker.core.protocol.connection.handler.ChannelRequestExitSignalMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -70,6 +71,20 @@ public void setSignalName(String signalName, boolean adjustLengthField) { } } + public void setSoftlySignalName(String signalName, boolean adjustLengthField, Config config) { + if (this.signalName == null || this.signalName.getOriginalValue() == null) { + this.signalName = ModifiableVariableFactory.safelySetValue(this.signalName, signalName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || signalNameLength == null + || signalNameLength.getOriginalValue() == null) { + setSignalNameLength( + this.signalName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public void setSignalName(SignalType signalName, boolean adjustLengthField) { setSignalName(signalName.toString(), adjustLengthField); } @@ -82,6 +97,12 @@ public void setCoreDump(boolean coreDump) { this.coreDump = ModifiableVariableFactory.safelySetValue(this.coreDump, coreDump); } + public void setSoftlyCoreDump(boolean coreDump) { + if (this.coreDump == null || this.coreDump.getOriginalValue() == null) { + this.coreDump = ModifiableVariableFactory.safelySetValue(this.coreDump, coreDump); + } + } + public void setCoreDump(ModifiableBoolean coreDump) { this.coreDump = coreDump; } @@ -127,6 +148,21 @@ public void setLanguageTag(String languageTag, boolean adjustLengthField) { } } + public void setSoftlyLanguageTag(String languageTag, boolean adjustLengthField, Config config) { + if (this.languageTag == null || this.languageTag.getOriginalValue() == null) { + this.languageTag = + ModifiableVariableFactory.safelySetValue(this.languageTag, languageTag); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || languageTagLength == null + || languageTagLength.getOriginalValue() == null) { + setLanguageTagLength( + this.languageTag.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public ModifiableInteger getErrorMessageLength() { return errorMessageLength; } @@ -171,6 +207,22 @@ public void setErrorMessage(String errorMessage, boolean adjustLengthField) { } } + public void setSoftlyErrorMessage( + String errorMessage, boolean adjustLengthField, Config config) { + if (this.errorMessage == null || this.errorMessage.getOriginalValue() == null) { + this.errorMessage = + ModifiableVariableFactory.safelySetValue(this.errorMessage, errorMessage); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || errorMessageLength == null + || errorMessageLength.getOriginalValue() == null) { + setErrorMessageLength( + this.errorMessage.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + @Override public ChannelRequestExitSignalMessageHandler getHandler(SshContext context) { return new ChannelRequestExitSignalMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExitStatusMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExitStatusMessage.java index 88faeee8f..b15699bb2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExitStatusMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExitStatusMessage.java @@ -29,6 +29,12 @@ public void setExitStatus(int exitStatus) { this.exitStatus = ModifiableVariableFactory.safelySetValue(this.exitStatus, exitStatus); } + public void setSoftlyExitStatus(int exitStatus) { + if (this.exitStatus == null || this.exitStatus.getOriginalValue() == null) { + this.exitStatus = ModifiableVariableFactory.safelySetValue(this.exitStatus, exitStatus); + } + } + @Override public ChannelRequestExitStatusMessageHandler getHandler(SshContext context) { return new ChannelRequestExitStatusMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestMessage.java index c96b8cfd0..5d070b7fc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.ChannelRequestType; import de.rub.nds.sshattacker.core.util.Converter; import java.nio.charset.StandardCharsets; @@ -67,6 +68,21 @@ public void setRequestType(String requestType, boolean adjustLengthField) { } } + public void setSoftlyRequestType(String requestType, boolean adjustLengthField, Config config) { + if (this.requestType == null || this.requestType.getOriginalValue() == null) { + this.requestType = + ModifiableVariableFactory.safelySetValue(this.requestType, requestType); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || requestTypeLength == null + || requestTypeLength.getOriginalValue() == null) { + setRequestTypeLength( + this.requestType.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public void setRequestType(ChannelRequestType requestType, boolean adjustLengthField) { setRequestType(requestType.toString(), adjustLengthField); } @@ -83,6 +99,12 @@ public void setWantReply(byte wantReply) { this.wantReply = ModifiableVariableFactory.safelySetValue(this.wantReply, wantReply); } + public void setSoftlyWantReply(byte wantReply) { + if (this.wantReply == null || this.wantReply.getOriginalValue() == null) { + this.wantReply = ModifiableVariableFactory.safelySetValue(this.wantReply, wantReply); + } + } + public void setWantReply(boolean wantReply) { setWantReply(Converter.booleanToByte(wantReply)); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestPtyMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestPtyMessage.java index 13d0874a0..a7a14b5cc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestPtyMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestPtyMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.connection.handler.ChannelRequestPtyMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -70,6 +71,22 @@ public void setTermEnvVariable(String termEnvVariable, boolean adjustLengthField } } + public void setSoftlyTermEnvVariable( + String termEnvVariable, boolean adjustLengthField, Config config) { + if (this.termEnvVariable == null || this.termEnvVariable.getOriginalValue() == null) { + this.termEnvVariable = + ModifiableVariableFactory.safelySetValue(this.termEnvVariable, termEnvVariable); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || termEnvVariableLength == null + || termEnvVariableLength.getOriginalValue() == null) { + setTermEnvVariableLength( + this.termEnvVariable.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public ModifiableInteger getWidthCharacters() { return widthCharacters; } @@ -83,6 +100,13 @@ public void setWidthCharacters(int widthCharacters) { ModifiableVariableFactory.safelySetValue(this.widthCharacters, widthCharacters); } + public void setSoftlyWidthCharacters(int widthCharacters) { + if (this.widthCharacters == null || this.widthCharacters.getOriginalValue() == null) { + this.widthCharacters = + ModifiableVariableFactory.safelySetValue(this.widthCharacters, widthCharacters); + } + } + public ModifiableInteger getHeightRows() { return heightRows; } @@ -95,6 +119,12 @@ public void setHeightRows(int heightRows) { this.heightRows = ModifiableVariableFactory.safelySetValue(this.heightRows, heightRows); } + public void setSoftlyHeightRows(int heightRows) { + if (this.heightRows == null || this.heightRows.getOriginalValue() == null) { + this.heightRows = ModifiableVariableFactory.safelySetValue(this.heightRows, heightRows); + } + } + public ModifiableInteger getWidthPixels() { return widthPixels; } @@ -107,6 +137,13 @@ public void setWidthPixels(int widthPixels) { this.widthPixels = ModifiableVariableFactory.safelySetValue(this.widthPixels, widthPixels); } + public void setSoftlyWidthPixels(int widthPixels) { + if (this.widthPixels == null || this.widthPixels.getOriginalValue() == null) { + this.widthPixels = + ModifiableVariableFactory.safelySetValue(this.widthPixels, widthPixels); + } + } + public ModifiableInteger getHeightPixels() { return heightPixels; } @@ -120,6 +157,13 @@ public void setHeightPixels(int heightPixels) { ModifiableVariableFactory.safelySetValue(this.heightPixels, heightPixels); } + public void setSoftlyHeightPixels(int heightPixels) { + if (this.heightPixels == null || this.heightPixels.getOriginalValue() == null) { + this.heightPixels = + ModifiableVariableFactory.safelySetValue(this.heightPixels, heightPixels); + } + } + public ModifiableInteger getEncodedTerminalModesLength() { return encodedTerminalModesLength; } @@ -165,6 +209,23 @@ public void setEncodedTerminalModes(byte[] encodedTerminalModes, boolean adjustL } } + public void setSoftlyEncodedTerminalModes( + byte[] encodedTerminalModes, boolean adjustLengthField, Config config) { + if (this.encodedTerminalModes == null + || this.encodedTerminalModes.getOriginalValue() == null) { + this.encodedTerminalModes = + ModifiableVariableFactory.safelySetValue( + this.encodedTerminalModes, encodedTerminalModes); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || encodedTerminalModesLength == null + || encodedTerminalModesLength.getOriginalValue() == null) { + setEncodedTerminalModesLength(this.encodedTerminalModes.getValue().length); + } + } + } + @Override public ChannelRequestPtyMessageHandler getHandler(SshContext context) { return new ChannelRequestPtyMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSignalMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSignalMessage.java index 6e5215aee..0eac49bb0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSignalMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSignalMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.SignalType; import de.rub.nds.sshattacker.core.protocol.connection.handler.ChannelRequestSignalMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -64,6 +65,20 @@ public void setSignalName(String signalName, boolean adjustLengthField) { } } + public void setSoftlySignalName(String signalName, boolean adjustLengthField, Config config) { + if (this.signalName == null || this.signalName.getOriginalValue() == null) { + this.signalName = ModifiableVariableFactory.safelySetValue(this.signalName, signalName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || signalNameLength == null + || signalNameLength.getOriginalValue() == null) { + setSignalNameLength( + this.signalName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public void setSignalName(SignalType signalName, boolean adjustLengthField) { setSignalName(signalName.toString(), adjustLengthField); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSubsystemMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSubsystemMessage.java index 288f3e44e..ea6a86fc1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSubsystemMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSubsystemMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.connection.handler.ChannelRequestSubsystemMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -64,6 +65,22 @@ public void setSubsystemName(String subsystemName, boolean adjustLengthField) { } } + public void setSoftlySubsystemName( + String subsystemName, boolean adjustLengthField, Config config) { + if (this.subsystemName == null || this.subsystemName.getOriginalValue() == null) { + this.subsystemName = + ModifiableVariableFactory.safelySetValue(this.subsystemName, subsystemName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || subsystemNameLength == null + || subsystemNameLength.getOriginalValue() == null) { + setSubsystemNameLength( + this.subsystemName.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + @Override public ChannelRequestSubsystemMessageHandler getHandler(SshContext context) { return new ChannelRequestSubsystemMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestWindowChangeMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestWindowChangeMessage.java index e8f47b41d..10fa0f8bc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestWindowChangeMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestWindowChangeMessage.java @@ -33,6 +33,13 @@ public void setWidthColumns(int widthColumns) { ModifiableVariableFactory.safelySetValue(this.widthColumns, widthColumns); } + public void setSoftlyWidthColumns(int widthColumns) { + if (this.widthColumns == null || this.widthColumns.getOriginalValue() == null) { + this.widthColumns = + ModifiableVariableFactory.safelySetValue(this.widthColumns, widthColumns); + } + } + public ModifiableInteger getHeightRows() { return heightRows; } @@ -45,6 +52,12 @@ public void setHeightRows(int heightRows) { this.heightRows = ModifiableVariableFactory.safelySetValue(this.heightRows, heightRows); } + public void setSoftlyHeightRows(int heightRows) { + if (this.heightRows == null || this.heightRows.getOriginalValue() == null) { + this.heightRows = ModifiableVariableFactory.safelySetValue(this.heightRows, heightRows); + } + } + public ModifiableInteger getWidthPixels() { return widthPixels; } @@ -57,6 +70,13 @@ public void setWidthPixels(int widthPixels) { this.widthPixels = ModifiableVariableFactory.safelySetValue(this.widthPixels, widthPixels); } + public void setSoftlyWidthPixels(int widthPixels) { + if (this.widthPixels == null || this.widthPixels.getOriginalValue() == null) { + this.widthPixels = + ModifiableVariableFactory.safelySetValue(this.widthPixels, widthPixels); + } + } + public ModifiableInteger getHeightPixels() { return heightPixels; } @@ -70,6 +90,13 @@ public void setHeightPixels(int heightPixels) { ModifiableVariableFactory.safelySetValue(this.heightPixels, heightPixels); } + public void setSoftlyHeightPixels(int heightPixels) { + if (this.heightPixels == null || this.heightPixels.getOriginalValue() == null) { + this.heightPixels = + ModifiableVariableFactory.safelySetValue(this.heightPixels, heightPixels); + } + } + @Override public ChannelRequestWindowChangeMessageHandler getHandler(SshContext context) { return new ChannelRequestWindowChangeMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestX11Message.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestX11Message.java index 97ac090e6..49ad014fc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestX11Message.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestX11Message.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.connection.handler.ChannelRequestX11MessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; @@ -38,6 +39,14 @@ public void setSingleConnection(byte singleConnection) { ModifiableVariableFactory.safelySetValue(this.singleConnection, singleConnection); } + public void setSoftlySingleConnection(byte singleConnection) { + if (this.singleConnection == null || this.singleConnection.getOriginalValue() == null) { + this.singleConnection = + ModifiableVariableFactory.safelySetValue( + this.singleConnection, singleConnection); + } + } + public void setSingleConnection(boolean singleConnection) { setSingleConnection(Converter.booleanToByte(singleConnection)); } @@ -97,6 +106,27 @@ public void setX11AuthenticationProtocol( } } + public void setSoftlyX11AuthenticationProtocol( + String x11AuthenticationProtocol, boolean adjustLengthField, Config config) { + if (this.x11AuthenticationProtocol == null + || this.x11AuthenticationProtocol.getOriginalValue() == null) { + this.x11AuthenticationProtocol = + ModifiableVariableFactory.safelySetValue( + this.x11AuthenticationProtocol, x11AuthenticationProtocol); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || x11AuthenticationProtocolLength == null + || x11AuthenticationProtocolLength.getOriginalValue() == null) { + setX11AuthenticationProtocolLength( + this.x11AuthenticationProtocol + .getValue() + .getBytes(StandardCharsets.UTF_8) + .length); + } + } + } + public ModifiableInteger getX11AuthenticationCookieLength() { return x11AuthenticationCookieLength; } @@ -151,6 +181,27 @@ public void setX11AuthenticationCookie( } } + public void setSoftlyX11AuthenticationCookie( + String x11AuthenticationCookie, boolean adjustLengthField, Config config) { + if (this.x11AuthenticationCookie == null + || this.x11AuthenticationCookie.getOriginalValue() == null) { + this.x11AuthenticationCookie = + ModifiableVariableFactory.safelySetValue( + this.x11AuthenticationCookie, x11AuthenticationCookie); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || x11AuthenticationCookieLength == null + || x11AuthenticationCookieLength.getOriginalValue() == null) { + setX11AuthenticationCookieLength( + this.x11AuthenticationCookie + .getValue() + .getBytes(StandardCharsets.UTF_8) + .length); + } + } + } + public ModifiableInteger getX11ScreenNumber() { return x11ScreenNumber; } @@ -164,6 +215,13 @@ public void setX11ScreenNumber(int x11ScreenNumber) { ModifiableVariableFactory.safelySetValue(this.x11ScreenNumber, x11ScreenNumber); } + public void setSoftlyX11ScreenNumber(int x11ScreenNumber) { + if (this.x11ScreenNumber == null || this.x11ScreenNumber.getOriginalValue() == null) { + this.x11ScreenNumber = + ModifiableVariableFactory.safelySetValue(this.x11ScreenNumber, x11ScreenNumber); + } + } + @Override public ChannelRequestX11MessageHandler getHandler(SshContext context) { return new ChannelRequestX11MessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestXonXoffMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestXonXoffMessage.java index c6040a9d1..e582f4469 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestXonXoffMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestXonXoffMessage.java @@ -31,6 +31,14 @@ public void setClientFlowControl(byte clientFlowControl) { ModifiableVariableFactory.safelySetValue(this.clientFlowControl, clientFlowControl); } + public void setSoftlyClientFlowControl(byte clientFlowControl) { + if (this.clientFlowControl == null || this.clientFlowControl.getOriginalValue() == null) { + this.clientFlowControl = + ModifiableVariableFactory.safelySetValue( + this.clientFlowControl, clientFlowControl); + } + } + public void setClientFlowControl(boolean clientFlowControl) { setClientFlowControl(Converter.booleanToByte(clientFlowControl)); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelWindowAdjustMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelWindowAdjustMessage.java index 6e139a4b0..8bf43fa5d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelWindowAdjustMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelWindowAdjustMessage.java @@ -28,6 +28,12 @@ public void setBytesToAdd(int bytesToAdd) { this.bytesToAdd = ModifiableVariableFactory.safelySetValue(this.bytesToAdd, bytesToAdd); } + public void setSoftlyBytesToAdd(int bytesToAdd) { + if (this.bytesToAdd == null || this.bytesToAdd.getOriginalValue() == null) { + this.bytesToAdd = ModifiableVariableFactory.safelySetValue(this.bytesToAdd, bytesToAdd); + } + } + @Override public ChannelWindowAdjustMessageHandler getHandler(SshContext context) { return new ChannelWindowAdjustMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestCancelTcpIpForwardMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestCancelTcpIpForwardMessage.java index 1c3a49c6f..b18788c13 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestCancelTcpIpForwardMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestCancelTcpIpForwardMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.connection.handler.GlobalRequestCancelTcpIpForwardMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -51,6 +52,22 @@ public void setIpAddressToBind(String ipAddressToBind, boolean adjustLengthField } } + public void setSoftlyIpAddressToBind( + String ipAddressToBind, boolean adjustLengthField, Config config) { + if (this.ipAddressToBind == null || this.ipAddressToBind.getOriginalValue() == null) { + this.ipAddressToBind = + ModifiableVariableFactory.safelySetValue(this.ipAddressToBind, ipAddressToBind); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || ipAddressToBindLength == null + || ipAddressToBindLength.getOriginalValue() == null) { + setIpAddressToBindLength( + this.ipAddressToBind.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public ModifiableInteger getIpAddressToBindLength() { return ipAddressToBindLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java index 7f7afcb21..b837852ab 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.GlobalRequestType; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import de.rub.nds.sshattacker.core.util.Converter; @@ -68,6 +69,21 @@ public void setRequestName(String requestName, boolean adjustLengthField) { } } + public void setSoftlyRequestName(String requestName, boolean adjustLengthField, Config config) { + if (this.requestName == null || this.requestName.getOriginalValue() == null) { + this.requestName = + ModifiableVariableFactory.safelySetValue(this.requestName, requestName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || requestNameLength == null + || requestNameLength.getOriginalValue() == null) { + setRequestNameLength( + this.requestName.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public void setRequestName(GlobalRequestType requestType, boolean adjustLengthField) { setRequestName(requestType.toString(), adjustLengthField); } @@ -84,6 +100,12 @@ public void setWantReply(byte wantReply) { this.wantReply = ModifiableVariableFactory.safelySetValue(this.wantReply, wantReply); } + public void setSoftlyWantReply(byte wantReply) { + if (this.wantReply == null || this.wantReply.getOriginalValue() == null) { + this.wantReply = ModifiableVariableFactory.safelySetValue(this.wantReply, wantReply); + } + } + public void setWantReply(boolean wantReply) { setWantReply(Converter.booleanToByte(wantReply)); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestTcpIpForwardMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestTcpIpForwardMessage.java index 91469faa4..625a2baec 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestTcpIpForwardMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestTcpIpForwardMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.connection.handler.GlobalRequestTcpIpForwardMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -51,6 +52,22 @@ public void setIpAddressToBind(String ipAddressToBind, boolean adjustLengthField } } + public void setSoftlyIpAddressToBind( + String ipAddressToBind, boolean adjustLengthField, Config config) { + if (this.ipAddressToBind == null || this.ipAddressToBind.getOriginalValue() == null) { + this.ipAddressToBind = + ModifiableVariableFactory.safelySetValue(this.ipAddressToBind, ipAddressToBind); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || ipAddressToBindLength == null + || ipAddressToBindLength.getOriginalValue() == null) { + setIpAddressToBindLength( + this.ipAddressToBind.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public ModifiableInteger getIpAddressToBindLength() { return ipAddressToBindLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DebugMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DebugMessage.java index efd9f9fec..801564907 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DebugMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DebugMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import de.rub.nds.sshattacker.core.protocol.transport.handler.DebugMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -38,6 +39,13 @@ public void setAlwaysDisplay(byte alwaysDisplay) { ModifiableVariableFactory.safelySetValue(this.alwaysDisplay, alwaysDisplay); } + public void setSoftlyAlwaysDisplay(byte alwaysDisplay) { + if (this.alwaysDisplay == null || this.alwaysDisplay.getOriginalValue() == null) { + this.alwaysDisplay = + ModifiableVariableFactory.safelySetValue(this.alwaysDisplay, alwaysDisplay); + } + } + public void setAlwaysDisplay(boolean alwaysDisplay) { setAlwaysDisplay(Converter.booleanToByte(alwaysDisplay)); } @@ -81,6 +89,19 @@ public void setMessage(String message, boolean adjustLengthField) { } } + public void setSoftlyMessage(String message, boolean adjustLengthField, Config config) { + if (this.message == null || this.message.getOriginalValue() == null) { + this.message = ModifiableVariableFactory.safelySetValue(this.message, message); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || messageLength == null + || messageLength.getOriginalValue() == null) { + setMessageLength(this.message.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public ModifiableInteger getLanguageTagLength() { return languageTagLength; } @@ -122,6 +143,21 @@ public void setLanguageTag(String languageTag, boolean adjustLengthField) { } } + public void setSoftlyLanguageTag(String languageTag, boolean adjustLengthField, Config config) { + if (this.languageTag == null || this.languageTag.getOriginalValue() == null) { + this.languageTag = + ModifiableVariableFactory.safelySetValue(this.languageTag, languageTag); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || languageTagLength == null + || languageTagLength.getOriginalValue() == null) { + setLanguageTagLength( + this.languageTag.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + @Override public DebugMessageHandler getHandler(SshContext context) { return new DebugMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeOldRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeOldRequestMessage.java index 2490a2d98..171a8971b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeOldRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeOldRequestMessage.java @@ -32,6 +32,14 @@ public void setPreferredGroupSize(int preferredGroupSize) { this.preferredGroupSize, preferredGroupSize); } + public void setSoftlyPreferredGroupSize(int preferredGroupSize) { + if (this.preferredGroupSize == null || this.preferredGroupSize.getOriginalValue() == null) { + this.preferredGroupSize = + ModifiableVariableFactory.safelySetValue( + this.preferredGroupSize, preferredGroupSize); + } + } + @Override public DhGexKeyExchangeOldRequestMessageHandler getHandler(SshContext context) { return new DhGexKeyExchangeOldRequestMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeReplyMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeReplyMessage.java index 8cba37a06..255023de0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeReplyMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeReplyMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.biginteger.ModifiableBigInteger; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; import de.rub.nds.sshattacker.core.crypto.util.PublicKeyHelper; import de.rub.nds.sshattacker.core.protocol.common.*; @@ -84,6 +85,21 @@ public void setHostKeyBytes(byte[] hostKeyBytes, boolean adjustLengthField) { } } + public void setSoftlyHostKeyBytes( + byte[] hostKeyBytes, boolean adjustLengthField, Config config) { + if (this.hostKeyBytes == null || this.hostKeyBytes.getOriginalValue() == null) { + this.hostKeyBytes = + ModifiableVariableFactory.safelySetValue(this.hostKeyBytes, hostKeyBytes); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || hostKeyBytesLength == null + || hostKeyBytesLength.getOriginalValue() == null) { + setHostKeyBytesLength(this.hostKeyBytes.getValue().length); + } + } + } + public ModifiableInteger getEphemeralPublicKeyLength() { return ephemeralPublicKeyLength; } @@ -174,6 +190,19 @@ public void setSignature(byte[] signature, boolean adjustLengthField) { } } + public void setSoftlySignature(byte[] signature, boolean adjustLengthField, Config config) { + if (this.signature == null || this.signature.getOriginalValue() == null) { + this.signature = ModifiableVariableFactory.safelySetValue(this.signature, signature); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || signatureLength == null + || signatureLength.getOriginalValue() == null) { + setSignatureLength(this.signature.getValue().length); + } + } + } + @Override public DhGexKeyExchangeReplyMessageHandler getHandler(SshContext context) { return new DhGexKeyExchangeReplyMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeRequestMessage.java index 5a1eac830..0a659d7eb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeRequestMessage.java @@ -32,6 +32,14 @@ public void setMinimalGroupSize(int minimalGroupSize) { ModifiableVariableFactory.safelySetValue(this.minimalGroupSize, minimalGroupSize); } + public void setSoftlyMinimalGroupSize(int minimalGroupSize) { + if (this.minimalGroupSize == null || this.minimalGroupSize.getOriginalValue() == null) { + this.minimalGroupSize = + ModifiableVariableFactory.safelySetValue( + this.minimalGroupSize, minimalGroupSize); + } + } + public ModifiableInteger getPreferredGroupSize() { return preferredGroupSize; } @@ -46,6 +54,14 @@ public void setPreferredGroupSize(int preferredGroupSize) { this.preferredGroupSize, preferredGroupSize); } + public void setSoftlyPreferredGroupSize(int preferredGroupSize) { + if (this.preferredGroupSize == null || this.preferredGroupSize.getOriginalValue() == null) { + this.preferredGroupSize = + ModifiableVariableFactory.safelySetValue( + this.preferredGroupSize, preferredGroupSize); + } + } + public ModifiableInteger getMaximalGroupSize() { return maximalGroupSize; } @@ -59,6 +75,14 @@ public void setMaximalGroupSize(int maximalGroupSize) { ModifiableVariableFactory.safelySetValue(this.maximalGroupSize, maximalGroupSize); } + public void setSoftlyMaximalGroupSize(int maximalGroupSize) { + if (this.maximalGroupSize == null || this.maximalGroupSize.getOriginalValue() == null) { + this.maximalGroupSize = + ModifiableVariableFactory.safelySetValue( + this.maximalGroupSize, maximalGroupSize); + } + } + @Override public DhGexKeyExchangeRequestMessageHandler getHandler(SshContext context) { return new DhGexKeyExchangeRequestMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhKeyExchangeReplyMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhKeyExchangeReplyMessage.java index 6d230e037..198c898ec 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhKeyExchangeReplyMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhKeyExchangeReplyMessage.java @@ -11,6 +11,7 @@ import de.rub.nds.modifiablevariable.biginteger.ModifiableBigInteger; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; import de.rub.nds.sshattacker.core.crypto.util.PublicKeyHelper; import de.rub.nds.sshattacker.core.protocol.common.*; @@ -84,6 +85,21 @@ public void setHostKeyBytes(byte[] hostKeyBytes, boolean adjustLengthField) { } } + public void setSoftlyHostKeyBytes( + byte[] hostKeyBytes, boolean adjustLengthField, Config config) { + if (this.hostKeyBytes == null || this.hostKeyBytes.getOriginalValue() == null) { + this.hostKeyBytes = + ModifiableVariableFactory.safelySetValue(this.hostKeyBytes, hostKeyBytes); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || hostKeyBytesLength == null + || hostKeyBytesLength.getOriginalValue() == null) { + setHostKeyBytesLength(this.hostKeyBytes.getValue().length); + } + } + } + public ModifiableInteger getEphemeralPublicKeyLength() { return ephemeralPublicKeyLength; } @@ -174,6 +190,19 @@ public void setSignature(byte[] signature, boolean adjustLengthField) { } } + public void setSoftlySignature(byte[] signature, boolean adjustLengthField, Config config) { + if (this.signature == null || this.signature.getOriginalValue() == null) { + this.signature = ModifiableVariableFactory.safelySetValue(this.signature, signature); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || signatureLength == null + || signatureLength.getOriginalValue() == null) { + setSignatureLength(this.signature.getValue().length); + } + } + } + @Override public DhKeyExchangeReplyMessageHandler getHandler(SshContext context) { return new DhKeyExchangeReplyMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DisconnectMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DisconnectMessage.java index e4e255724..c39a83885 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DisconnectMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DisconnectMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.DisconnectReason; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import de.rub.nds.sshattacker.core.protocol.transport.handler.DisconnectMessageHandler; @@ -36,6 +37,12 @@ public void setReasonCode(int reasonCode) { this.reasonCode = ModifiableVariableFactory.safelySetValue(this.reasonCode, reasonCode); } + public void setSoftlyReasonCode(int reasonCode) { + if (this.reasonCode == null || this.reasonCode.getOriginalValue() == null) { + this.reasonCode = ModifiableVariableFactory.safelySetValue(this.reasonCode, reasonCode); + } + } + public void setReasonCode(DisconnectReason reason) { setReasonCode(reason.getId()); } @@ -81,6 +88,21 @@ public void setDescription(String description, boolean adjustLengthField) { } } + public void setSoftlyDescription(String description, boolean adjustLengthField, Config config) { + if (this.description == null || this.description.getOriginalValue() == null) { + this.description = + ModifiableVariableFactory.safelySetValue(this.description, description); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || descriptionLength == null + || descriptionLength.getOriginalValue() == null) { + setDescriptionLength( + this.description.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + public ModifiableInteger getLanguageTagLength() { return languageTagLength; } @@ -122,6 +144,21 @@ public void setLanguageTag(String languageTag, boolean adjustLengthField) { } } + public void setSoftlyLanguageTag(String languageTag, boolean adjustLengthField, Config config) { + if (this.languageTag == null || this.languageTag.getOriginalValue() == null) { + this.languageTag = + ModifiableVariableFactory.safelySetValue(this.languageTag, languageTag); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || languageTagLength == null + || languageTagLength.getOriginalValue() == null) { + setLanguageTagLength( + this.languageTag.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + @Override public DisconnectMessageHandler getHandler(SshContext context) { return new DisconnectMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/EcdhKeyExchangeInitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/EcdhKeyExchangeInitMessage.java index 3485294c0..8d752b295 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/EcdhKeyExchangeInitMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/EcdhKeyExchangeInitMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import de.rub.nds.sshattacker.core.protocol.transport.handler.EcdhKeyExchangeInitMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -62,6 +63,22 @@ public void setEphemeralPublicKey(byte[] ephemeralPublicKey, boolean adjustLengt } } + public void setSoftlyEphemeralPublicKey( + byte[] ephemeralPublicKey, boolean adjustLengthField, Config config) { + if (this.ephemeralPublicKey == null || this.ephemeralPublicKey.getOriginalValue() == null) { + this.ephemeralPublicKey = + ModifiableVariableFactory.safelySetValue( + this.ephemeralPublicKey, ephemeralPublicKey); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || ephemeralPublicKeyLength == null + || ephemeralPublicKeyLength.getOriginalValue() == null) { + setEphemeralPublicKeyLength(this.ephemeralPublicKey.getValue().length); + } + } + } + @Override public EcdhKeyExchangeInitMessageHandler getHandler(SshContext context) { return new EcdhKeyExchangeInitMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/EcdhKeyExchangeReplyMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/EcdhKeyExchangeReplyMessage.java index 0e473f0e9..d1723281f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/EcdhKeyExchangeReplyMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/EcdhKeyExchangeReplyMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; import de.rub.nds.sshattacker.core.crypto.util.PublicKeyHelper; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; @@ -82,6 +83,21 @@ public void setHostKeyBytes(byte[] hostKeyBytes, boolean adjustLengthField) { } } + public void setSoftlyHostKeyBytes( + byte[] hostKeyBytes, boolean adjustLengthField, Config config) { + if (this.hostKeyBytes == null || this.hostKeyBytes.getOriginalValue() == null) { + this.hostKeyBytes = + ModifiableVariableFactory.safelySetValue(this.hostKeyBytes, hostKeyBytes); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || hostKeyBytesLength == null + || hostKeyBytesLength.getOriginalValue() == null) { + setHostKeyBytesLength(this.hostKeyBytes.getValue().length); + } + } + } + public ModifiableInteger getEphemeralPublicKeyLength() { return ephemeralPublicKeyLength; } @@ -125,6 +141,22 @@ public void setEphemeralPublicKey(byte[] ephemeralPublicKey, boolean adjustLengt } } + public void setSoftlyEphemeralPublicKey( + byte[] ephemeralPublicKey, boolean adjustLengthField, Config config) { + if (this.ephemeralPublicKey == null || this.ephemeralPublicKey.getOriginalValue() == null) { + this.ephemeralPublicKey = + ModifiableVariableFactory.safelySetValue( + this.ephemeralPublicKey, ephemeralPublicKey); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || ephemeralPublicKeyLength == null + || ephemeralPublicKeyLength.getOriginalValue() == null) { + setEphemeralPublicKeyLength(this.ephemeralPublicKey.getValue().length); + } + } + } + @Override public ModifiableInteger getSignatureLength() { return signatureLength; @@ -172,6 +204,19 @@ public void setSignature(byte[] signature, boolean adjustLengthField) { } } + public void setSoftlySignature(byte[] signature, boolean adjustLengthField, Config config) { + if (this.signature == null || this.signature.getOriginalValue() == null) { + this.signature = ModifiableVariableFactory.safelySetValue(this.signature, signature); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || signatureLength == null + || signatureLength.getOriginalValue() == null) { + setSignatureLength(this.signature.getValue().length); + } + } + } + @Override public EcdhKeyExchangeReplyMessageHandler getHandler(SshContext context) { return new EcdhKeyExchangeReplyMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/HybridKeyExchangeInitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/HybridKeyExchangeInitMessage.java index 7eb87dff4..18be2a55c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/HybridKeyExchangeInitMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/HybridKeyExchangeInitMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.transport.handler.HybridKeyExchangeInitMessageHandler; @@ -24,7 +25,7 @@ public class HybridKeyExchangeInitMessage extends SshMessage getHandler(SshContext context) { return new RsaKeyExchangeDoneMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/RsaKeyExchangePubkeyMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/RsaKeyExchangePubkeyMessage.java index 6eeb7d337..115088a3b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/RsaKeyExchangePubkeyMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/RsaKeyExchangePubkeyMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.PublicKeyFormat; import de.rub.nds.sshattacker.core.crypto.keys.CustomRsaPrivateKey; import de.rub.nds.sshattacker.core.crypto.keys.CustomRsaPublicKey; @@ -86,6 +87,21 @@ public void setHostKeyBytes(byte[] hostKeyBytes, boolean adjustLengthField) { } } + public void setSoftlyHostKeyBytes( + byte[] hostKeyBytes, boolean adjustLengthField, Config config) { + if (this.hostKeyBytes == null || this.hostKeyBytes.getOriginalValue() == null) { + this.hostKeyBytes = + ModifiableVariableFactory.safelySetValue(this.hostKeyBytes, hostKeyBytes); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || hostKeyBytesLength == null + || hostKeyBytesLength.getOriginalValue() == null) { + setHostKeyBytesLength(this.hostKeyBytes.getValue().length); + } + } + } + // Transient Public Key (K_T) Methods public ModifiableInteger getTransientPublicKeyBytesLength() { return transientPublicKeyBytesLength; @@ -137,6 +153,23 @@ public void setTransientPublicKeyBytes( } } + public void setSoftlyTransientPublicKeyBytes( + byte[] transientPublicKeyBytes, boolean adjustLengthField, Config config) { + if (this.transientPublicKeyBytes == null + || this.transientPublicKeyBytes.getOriginalValue() == null) { + this.transientPublicKeyBytes = + ModifiableVariableFactory.safelySetValue( + this.transientPublicKeyBytes, transientPublicKeyBytes); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || transientPublicKeyBytesLength == null + || transientPublicKeyBytesLength.getOriginalValue() == null) { + setTransientPublicKeyBytesLength(this.transientPublicKeyBytes.getValue().length); + } + } + } + public BigInteger getModulus() { return ((RSAPublicKey) getTransientPublicKey().getPublicKey()).getModulus(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/RsaKeyExchangeSecretMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/RsaKeyExchangeSecretMessage.java index 76b6b47e7..96862ca61 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/RsaKeyExchangeSecretMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/RsaKeyExchangeSecretMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.transport.handler.RsaKeyExchangeSecretMessageHandler; @@ -57,6 +58,21 @@ public void setEncryptedSecret(byte[] encryptedSecret, boolean adjustLengthField } } + public void setSoftlyEncryptedSecret( + byte[] encryptedSecret, boolean adjustLengthField, Config config) { + if (this.encryptedSecret == null || this.encryptedSecret.getOriginalValue() == null) { + this.encryptedSecret = + ModifiableVariableFactory.safelySetValue(this.encryptedSecret, encryptedSecret); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || encryptedSecretLength == null + || encryptedSecretLength.getOriginalValue() == null) { + setEncryptedSecretLength(this.encryptedSecret.getValue().length); + } + } + } + @Override public SshMessageHandler getHandler(SshContext context) { return new RsaKeyExchangeSecretMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceAcceptMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceAcceptMessage.java index 45d924fe2..d0c94a6d2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceAcceptMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceAcceptMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.ServiceType; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import de.rub.nds.sshattacker.core.protocol.transport.handler.ServiceAcceptMessageHandler; @@ -66,6 +67,21 @@ public void setServiceName(String serviceName, boolean adjustLengthField) { } } + public void setSoftlyServiceName(String serviceName, boolean adjustLengthField, Config config) { + if (this.serviceName == null || this.serviceName.getOriginalValue() == null) { + this.serviceName = + ModifiableVariableFactory.safelySetValue(this.serviceName, serviceName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || serviceNameLength == null + || serviceNameLength.getOriginalValue() == null) { + setServiceNameLength( + this.serviceName.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public void setServiceName(ServiceType serviceType, boolean adjustLengthField) { setServiceName(serviceType.toString(), adjustLengthField); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceRequestMessage.java index e7fe4223a..41223099a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceRequestMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.ServiceType; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import de.rub.nds.sshattacker.core.protocol.transport.handler.ServiceRequestMessageHandler; @@ -66,6 +67,21 @@ public void setServiceName(String serviceName, boolean adjustLengthField) { } } + public void setSoftlyServiceName(String serviceName, boolean adjustLengthField, Config config) { + if (this.serviceName == null || this.serviceName.getOriginalValue() == null) { + this.serviceName = + ModifiableVariableFactory.safelySetValue(this.serviceName, serviceName); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || serviceNameLength == null + || serviceNameLength.getOriginalValue() == null) { + setServiceNameLength( + this.serviceName.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + } + public void setServiceName(ServiceType serviceType, boolean adjustLengthField) { setServiceName(serviceType.toString(), adjustLengthField); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnimplementedMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnimplementedMessage.java index ab8805ce0..4971b2125 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnimplementedMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnimplementedMessage.java @@ -30,6 +30,13 @@ public void setSequenceNumber(int sequenceNumber) { ModifiableVariableFactory.safelySetValue(this.sequenceNumber, sequenceNumber); } + public void setSoftlySequenceNumber(int sequenceNumber) { + if (this.sequenceNumber == null || this.sequenceNumber.getOriginalValue() == null) { + this.sequenceNumber = + ModifiableVariableFactory.safelySetValue(this.sequenceNumber, sequenceNumber); + } + } + @Override public UnimplementedMessageHandler getHandler(SshContext context) { return new UnimplementedMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/AbstractExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/AbstractExtension.java index 8adb34ace..e831e4141 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/AbstractExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/AbstractExtension.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.protocol.transport.handler.extension.AbstractExtensionHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -54,10 +55,23 @@ public void setName(ModifiableString name, boolean adjustLengthField) { } public void setName(String name, boolean adjustLengthField) { + this.name = ModifiableVariableFactory.safelySetValue(this.name, name); if (adjustLengthField) { - setNameLength(name.getBytes(StandardCharsets.US_ASCII).length); + setNameLength(this.name.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + + public void setSoftlyName(String name, boolean adjustLengthField, Config config) { + if (this.name == null || this.name.getOriginalValue() == null) { + this.name = ModifiableVariableFactory.safelySetValue(this.name, name); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || nameLength == null + || nameLength.getOriginalValue() == null) { + setNameLength(this.name.getValue().getBytes(StandardCharsets.US_ASCII).length); + } } - this.name = ModifiableVariableFactory.safelySetValue(this.name, name); } public abstract AbstractExtensionHandler getHandler(SshContext context); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/DelayCompressionExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/DelayCompressionExtension.java index 676fe09c5..7dd905e17 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/DelayCompressionExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/DelayCompressionExtension.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.CharConstants; import de.rub.nds.sshattacker.core.constants.CompressionMethod; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; @@ -92,21 +93,44 @@ public void setCompressionMethodsClientToServer( .getValue() .getBytes(StandardCharsets.US_ASCII) .length); - setCompressionMethodsLength(computeCompressionMethodsLength()); } this.compressionMethodsClientToServer = compressionMethodsClientToServer; } public void setCompressionMethodsClientToServer( String compressionMethodsClientToServer, boolean adjustLengthField) { - if (adjustLengthField) { - setCompressionMethodsClientToServerLength( - compressionMethodsClientToServer.getBytes(StandardCharsets.US_ASCII).length); - setCompressionMethodsLength(computeCompressionMethodsLength()); - } this.compressionMethodsClientToServer = ModifiableVariableFactory.safelySetValue( this.compressionMethodsClientToServer, compressionMethodsClientToServer); + if (adjustLengthField) { + setCompressionMethodsClientToServerLength( + this.compressionMethodsClientToServer + .getValue() + .getBytes(StandardCharsets.US_ASCII) + .length); + } + } + + public void setSoftlyCompressionMethodsClientToServer( + String compressionMethodsClientToServer, boolean adjustLengthField, Config config) { + if (this.compressionMethodsClientToServer == null + || this.compressionMethodsClientToServer.getOriginalValue() == null) { + this.compressionMethodsClientToServer = + ModifiableVariableFactory.safelySetValue( + this.compressionMethodsClientToServer, + compressionMethodsClientToServer); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || compressionMethodsClientToServerLength == null + || compressionMethodsClientToServerLength.getOriginalValue() == null) { + setCompressionMethodsClientToServerLength( + this.compressionMethodsClientToServer + .getValue() + .getBytes(StandardCharsets.US_ASCII) + .length); + } + } } public void setCompressionMethodsClientToServer( @@ -173,21 +197,44 @@ public void setCompressionMethodsServerToClient( .getValue() .getBytes(StandardCharsets.US_ASCII) .length); - setCompressionMethodsLength(computeCompressionMethodsLength()); } this.compressionMethodsServerToClient = compressionMethodsServerToClient; } public void setCompressionMethodsServerToClient( String compressionMethodsServerToClient, boolean adjustLengthField) { - if (adjustLengthField) { - setCompressionMethodsServerToClientLength( - compressionMethodsServerToClient.getBytes(StandardCharsets.US_ASCII).length); - setCompressionMethodsLength(computeCompressionMethodsLength()); - } this.compressionMethodsServerToClient = ModifiableVariableFactory.safelySetValue( this.compressionMethodsServerToClient, compressionMethodsServerToClient); + if (adjustLengthField) { + setCompressionMethodsServerToClientLength( + this.compressionMethodsServerToClient + .getValue() + .getBytes(StandardCharsets.US_ASCII) + .length); + } + } + + public void setSoftlyCompressionMethodsServerToClient( + String compressionMethodsServerToClient, boolean adjustLengthField, Config config) { + if (this.compressionMethodsServerToClient == null + || this.compressionMethodsServerToClient.getOriginalValue() == null) { + this.compressionMethodsServerToClient = + ModifiableVariableFactory.safelySetValue( + this.compressionMethodsServerToClient, + compressionMethodsServerToClient); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || compressionMethodsServerToClientLength == null + || compressionMethodsServerToClientLength.getOriginalValue() == null) { + setCompressionMethodsServerToClientLength( + this.compressionMethodsServerToClient + .getValue() + .getBytes(StandardCharsets.US_ASCII) + .length); + } + } } public void setCompressionMethodsServerToClient( @@ -207,7 +254,7 @@ public void setCompressionMethodsServerToClient( setCompressionMethodsServerToClient(nameList, adjustLengthField); } - private int computeCompressionMethodsLength() { + public int computeCompressionMethodsLength() { return 2 * DataFormatConstants.STRING_SIZE_LENGTH + (compressionMethodsClientToServerLength != null ? compressionMethodsClientToServerLength.getValue() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/PingExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/PingExtension.java index 87b018f04..875dc9039 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/PingExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/PingExtension.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.transport.handler.extension.PingExtensionHandler; import de.rub.nds.sshattacker.core.state.SshContext; import java.nio.charset.StandardCharsets; @@ -52,10 +53,24 @@ public void setVersion(String version) { } public void setVersion(String version, boolean adjustLengthField) { + this.version = ModifiableVariableFactory.safelySetValue(this.version, version); if (adjustLengthField) { - setVersionLength(version.getBytes(StandardCharsets.US_ASCII).length); + setVersionLength(this.version.getValue().getBytes(StandardCharsets.US_ASCII).length); + } + } + + public void setSoftlyVersion(String version, boolean adjustLengthField, Config config) { + if (this.version == null || this.version.getOriginalValue() == null) { + this.version = ModifiableVariableFactory.safelySetValue(this.version, version); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || versionLength == null + || versionLength.getOriginalValue() == null) { + setVersionLength( + this.version.getValue().getBytes(StandardCharsets.US_ASCII).length); + } } - this.version = ModifiableVariableFactory.safelySetValue(this.version, version); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/ServerSigAlgsExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/ServerSigAlgsExtension.java index e329ee9c3..eab42c2ac 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/ServerSigAlgsExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/ServerSigAlgsExtension.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.CharConstants; import de.rub.nds.sshattacker.core.constants.PublicKeyAlgorithm; import de.rub.nds.sshattacker.core.protocol.transport.handler.extension.ServerSigAlgsExtensionHandler; @@ -77,15 +78,38 @@ public void setAcceptedPublicKeyAlgorithms( } public void setAcceptedPublicKeyAlgorithms( - String publicKeyAlgorithms, boolean adjustLengthField) { + String acceptedPublicKeyAlgorithms, boolean adjustLengthField) { + this.acceptedPublicKeyAlgorithms = + ModifiableVariableFactory.safelySetValue( + this.acceptedPublicKeyAlgorithms, acceptedPublicKeyAlgorithms); if (adjustLengthField) { setAcceptedPublicKeyAlgorithmsLength( - publicKeyAlgorithms.getBytes(StandardCharsets.US_ASCII).length); - setAcceptedPublicKeyAlgorithmsLength(acceptedPublicKeyAlgorithmsLength.getValue()); + this.acceptedPublicKeyAlgorithms + .getValue() + .getBytes(StandardCharsets.US_ASCII) + .length); + } + } + + public void setSoftlyAcceptedPublicKeyAlgorithms( + String acceptedPublicKeyAlgorithms, boolean adjustLengthField, Config config) { + if (this.acceptedPublicKeyAlgorithms == null + || this.acceptedPublicKeyAlgorithms.getOriginalValue() == null) { + this.acceptedPublicKeyAlgorithms = + ModifiableVariableFactory.safelySetValue( + this.acceptedPublicKeyAlgorithms, acceptedPublicKeyAlgorithms); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || acceptedPublicKeyAlgorithmsLength == null + || acceptedPublicKeyAlgorithmsLength.getOriginalValue() == null) { + setAcceptedPublicKeyAlgorithmsLength( + this.acceptedPublicKeyAlgorithms + .getValue() + .getBytes(StandardCharsets.US_ASCII) + .length); + } } - acceptedPublicKeyAlgorithms = - ModifiableVariableFactory.safelySetValue( - acceptedPublicKeyAlgorithms, publicKeyAlgorithms); } public void setAcceptedPublicKeyAlgorithms( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/UnknownExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/UnknownExtension.java index 3c5c32de6..349d037ba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/UnknownExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/UnknownExtension.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.transport.handler.extension.UnknownExtensionHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -51,10 +52,23 @@ public void setValue(ModifiableByteArray value, boolean adjustLengthField) { } public void setValue(byte[] value, boolean adjustLengthField) { + this.value = ModifiableVariableFactory.safelySetValue(this.value, value); if (adjustLengthField) { - setValueLength(value.length); + setValueLength(this.value.getValue().length); + } + } + + public void setSoftlyValue(byte[] value, boolean adjustLengthField, Config config) { + if (this.value == null || this.value.getOriginalValue() == null) { + this.value = ModifiableVariableFactory.safelySetValue(this.value, value); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || valueLength == null + || valueLength.getOriginalValue() == null) { + setValueLength(this.value.getValue().length); + } } - this.value = ModifiableVariableFactory.safelySetValue(this.value, value); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java index 8328d2972..4ffbfe414 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java @@ -62,11 +62,11 @@ private void parseHybridKey() { case CLASSICAL_CONCATENATE_POSTQUANTUM: message.setPublicKeyLength(agreementSize); message.setPublicKey(parseByteArrayField(agreementSize)); - message.setCiphertextLength(encapsulationSize); + message.setCombinedKeyShareLength(encapsulationSize); message.setCombinedKeyShare(parseByteArrayField(encapsulationSize)); break; case POSTQUANTUM_CONCATENATE_CLASSICAL: - message.setCiphertextLength(encapsulationSize); + message.setCombinedKeyShareLength(encapsulationSize); message.setCombinedKeyShare(parseByteArrayField(encapsulationSize)); message.setPublicKeyLength(agreementSize); message.setPublicKey(parseByteArrayField(agreementSize)); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeReplyMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeReplyMessagePreparator.java index 45fa47934..e761b3ffe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeReplyMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeReplyMessagePreparator.java @@ -60,7 +60,7 @@ private void prepareHybridKey() { byte[] agreementBytes = agreement.getLocalKeyPair().getPublicKey().getEncoded(); byte[] encapsulationBytes = encapsulation.getEncryptedSharedSecret(); getObject().setPublicKey(agreementBytes, true); - getObject().setCiphertext(encapsulationBytes, true); + getObject().setCombinedKeyShare(encapsulationBytes, true); byte[] concatenated; switch (combiner) { case CLASSICAL_CONCATENATE_POSTQUANTUM: diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java index 8c7193f5c..60a1cacee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java @@ -29,6 +29,8 @@ public void prepareExtensionSpecificContents() { getObject() .setCompressionMethodsServerToClient( chooser.getClientSupportedDelayCompressionMethods(), true); + + getObject().setCompressionMethodsLength(getObject().computeCompressionMethodsLength()); chooser.getContext().setDelayCompressionExtensionSent(true); } else { getObject().setName(Extension.DELAY_COMPRESSION.getName(), true); @@ -38,6 +40,8 @@ public void prepareExtensionSpecificContents() { getObject() .setCompressionMethodsServerToClient( chooser.getServerSupportedDelayCompressionMethods(), true); + getObject().setCompressionMethodsLength(getObject().computeCompressionMethodsLength()); + chooser.getContext().setDelayCompressionExtensionSent(true); } } From 71710e8cc5c5b124151fffd9d4e7fe151db311d4 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 2 Dec 2024 10:35:27 +0100 Subject: [PATCH 054/203] Add Copy Constructor to all messages. Fix AuthenticationResponse and AuthenticationPrompt so that these messages can be mutated too --- .gitignore | 10 +- .../nds/sshattacker/core/config/Config.java | 52 ++-- .../core/crypto/ec/FieldElement.java | 8 + .../core/crypto/ec/FieldElementF2m.java | 9 + .../core/crypto/ec/FieldElementFp.java | 9 + .../nds/sshattacker/core/crypto/ec/Point.java | 11 + .../crypto/keys/CustomCertDsaPublicKey.java | 33 ++- .../crypto/keys/CustomCertEcdsaPublicKey.java | 33 ++- .../crypto/keys/CustomCertRsaPublicKey.java | 33 ++- .../keys/CustomCertXCurvePublicKey.java | 32 ++- .../core/crypto/keys/CustomDhPrivateKey.java | 12 + .../core/crypto/keys/CustomDhPublicKey.java | 12 + .../core/crypto/keys/CustomDsaPrivateKey.java | 13 + .../core/crypto/keys/CustomDsaPublicKey.java | 13 + .../core/crypto/keys/CustomEcPrivateKey.java | 11 + .../core/crypto/keys/CustomEcPublicKey.java | 11 + .../crypto/keys/CustomPQKemPrivateKey.java | 11 + .../crypto/keys/CustomPQKemPublicKey.java | 11 + .../core/crypto/keys/CustomPrivateKey.java | 11 + .../core/crypto/keys/CustomPublicKey.java | 11 + .../core/crypto/keys/CustomRsaPrivateKey.java | 11 + .../core/crypto/keys/CustomRsaPublicKey.java | 11 + .../crypto/keys/CustomX509DsaPublicKey.java | 26 +- .../crypto/keys/CustomX509EcdsaPublicKey.java | 26 +- .../crypto/keys/CustomX509RsaPublicKey.java | 26 +- .../keys/CustomX509XCurvePublicKey.java | 29 ++- .../core/crypto/keys/SshPublicKey.java | 11 + .../core/crypto/keys/XCurveEcPrivateKey.java | 11 + .../core/crypto/keys/XCurveEcPublicKey.java | 11 + .../keys/parser/CertDsaPublicKeyParser.java | 5 +- .../keys/parser/CertEcdsaPublicKeyParser.java | 5 +- .../keys/parser/CertRsaPublicKeyParser.java | 5 +- .../parser/CertXCurvePublicKeyParser.java | 5 +- .../keys/parser/X509DsaPublicKeyParser.java | 3 +- .../keys/parser/X509EcdsaPublicKeyParser.java | 6 +- .../keys/parser/X509RsaPublicKeyParser.java | 3 +- .../parser/X509XCurvePublicKeyParser.java | 3 +- .../core/data/packet/AbstractDataPacket.java | 14 ++ .../core/data/packet/DataPacket.java | 14 ++ .../core/data/packet/PassThroughPacket.java | 13 + .../core/data/sftp/SftpMessage.java | 9 + .../sftp/message/SftpHandshakeMessage.java | 16 +- .../data/sftp/message/SftpInitMessage.java | 13 + .../data/sftp/message/SftpUnknownMessage.java | 14 ++ .../data/sftp/message/SftpVersionMessage.java | 13 + .../SftpRequestCheckFileHandleMessage.java | 19 ++ .../SftpRequestCheckFileNameMessage.java | 19 ++ .../SftpRequestCopyDataMessage.java | 19 ++ .../SftpRequestCopyFileMessage.java | 20 ++ .../SftpRequestExpandPathMessage.java | 13 + .../SftpRequestExtendedMessage.java | 14 ++ .../SftpRequestExtendedWithHandleMessage.java | 10 + .../SftpRequestExtendedWithPathMessage.java | 10 + .../SftpRequestFileStatVfsMessage.java | 13 + .../SftpRequestFileSyncMessage.java | 13 + .../SftpRequestGetTempFolderMessage.java | 13 + .../SftpRequestHardlinkMessage.java | 15 ++ .../SftpRequestHomeDirectoryMessage.java | 15 ++ .../SftpRequestLimitsMessage.java | 13 + .../SftpRequestLinkSetStatMessage.java | 14 ++ .../SftpRequestMakeTempFolderMessage.java | 13 + .../SftpRequestPosixRenameMessage.java | 15 ++ .../SftpRequestSpaceAvailableMessage.java | 13 + .../SftpRequestStatVfsMessage.java | 13 + .../SftpRequestTextSeekMessage.java | 14 ++ .../SftpRequestUnknownMessage.java | 15 ++ .../SftpRequestUsersGroupsByIdMessage.java | 49 +++- .../SftpRequestVendorIdMessage.java | 24 ++ .../SftpResponseCheckFileMessage.java | 20 ++ .../SftpResponseLimitsMessage.java | 21 ++ .../SftpResponseSpaceAvailableMessage.java | 26 ++ .../SftpResponseStatVfsMessage.java | 30 +++ .../SftpResponseUnknownMessage.java | 15 ++ .../SftpResponseUsersGroupsByIdMessage.java | 53 +++- .../extension/SftpAbstractExtension.java | 13 + .../extension/SftpExtensionCheckFile.java | 13 + .../extension/SftpExtensionCopyData.java | 13 + .../extension/SftpExtensionCopyFile.java | 13 + .../extension/SftpExtensionExpandPath.java | 13 + .../extension/SftpExtensionFileStatVfs.java | 13 + .../extension/SftpExtensionFileSync.java | 13 + .../extension/SftpExtensionGetTempFolder.java | 13 + .../extension/SftpExtensionHardlink.java | 13 + .../extension/SftpExtensionHomeDirectory.java | 13 + .../extension/SftpExtensionLimits.java | 13 + .../extension/SftpExtensionLinkSetStat.java | 13 + .../SftpExtensionMakeTempFolder.java | 13 + .../extension/SftpExtensionNewline.java | 19 ++ .../extension/SftpExtensionPosixRename.java | 13 + .../SftpExtensionSpaceAvailable.java | 13 + .../extension/SftpExtensionStatVfs.java | 13 + .../extension/SftpExtensionTextSeek.java | 13 + .../extension/SftpExtensionUnknown.java | 15 ++ .../SftpExtensionUsersGroupsById.java | 13 + .../extension/SftpExtensionVendorId.java | 28 +++ .../extension/SftpExtensionWithVersion.java | 10 + .../sftp/message/holder/SftpAclEntry.java | 18 ++ .../message/holder/SftpFileAttributes.java | 53 +++- .../holder/SftpFileExtendedAttribute.java | 17 ++ .../message/holder/SftpFileNameEntry.java | 18 ++ .../data/sftp/message/holder/SftpIdEntry.java | 10 + .../sftp/message/holder/SftpNameEntry.java | 11 + .../request/SftpRequestCloseMessage.java | 13 + .../SftpRequestFileSetStatMessage.java | 14 ++ .../request/SftpRequestFileStatMessage.java | 14 ++ .../request/SftpRequestLinkStatMessage.java | 13 + .../request/SftpRequestMakeDirMessage.java | 14 ++ .../message/request/SftpRequestMessage.java | 9 + .../request/SftpRequestOpenDirMessage.java | 13 + .../request/SftpRequestOpenMessage.java | 15 ++ .../request/SftpRequestReadDirMessage.java | 13 + .../request/SftpRequestReadLinkMessage.java | 13 + .../request/SftpRequestReadMessage.java | 15 ++ .../request/SftpRequestRealPathMessage.java | 13 + .../request/SftpRequestRemoveMessage.java | 13 + .../request/SftpRequestRenameMessage.java | 15 ++ .../request/SftpRequestRmdirMessage.java | 13 + .../request/SftpRequestSetStatMessage.java | 14 ++ .../request/SftpRequestStatMessage.java | 14 ++ .../SftpRequestSymbolicLinkMessage.java | 16 ++ .../request/SftpRequestWithHandleMessage.java | 10 + .../request/SftpRequestWithPathMessage.java | 10 + .../request/SftpRequestWriteMessage.java | 16 ++ .../SftpResponseAttributesMessage.java | 14 ++ .../response/SftpResponseDataMessage.java | 15 ++ .../response/SftpResponseHandleMessage.java | 15 ++ .../message/response/SftpResponseMessage.java | 9 + .../response/SftpResponseNameMessage.java | 30 ++- .../response/SftpResponseStatusMessage.java | 20 ++ .../holder/SftpFileAttributesParser.java | 2 +- .../core/data/string/StringDataMessage.java | 14 ++ .../core/data/unknown/UnknownDataMessage.java | 14 ++ .../core/packet/AbstractPacket.java | 14 ++ .../sshattacker/core/packet/BinaryPacket.java | 19 ++ .../sshattacker/core/packet/BlobPacket.java | 14 ++ .../core/packet/PacketCryptoComputations.java | 40 ++- .../cipher/PacketChaCha20Poly1305Cipher.java | 9 +- .../core/packet/cipher/PacketGCMCipher.java | 9 +- .../core/packet/cipher/PacketMacedCipher.java | 17 +- .../authentication/AuthenticationPrompt.java | 228 ----------------- .../AuthenticationPromptEntries.java | 56 +++++ .../AuthenticationResponse.java | 229 ------------------ .../AuthenticationResponseEntries.java | 56 +++++ .../message/UserAuthBannerMessage.java | 18 ++ .../message/UserAuthFailureMessage.java | 22 ++ .../message/UserAuthHostbasedMessage.java | 28 +++ .../message/UserAuthInfoRequestMessage.java | 108 +++++++-- .../message/UserAuthInfoResponseMessage.java | 103 ++++++-- .../UserAuthKeyboardInteractiveMessage.java | 19 ++ .../message/UserAuthNoneMessage.java | 13 + .../message/UserAuthPasswordMessage.java | 19 ++ .../message/UserAuthPkOkMessage.java | 18 ++ .../message/UserAuthPubkeyMessage.java | 21 ++ .../message/UserAuthRequestMessage.java | 16 ++ .../message/UserAuthSuccessMessage.java | 13 + .../message/UserAuthUnknownMessage.java | 15 ++ .../UserAuthInfoRequestMessageParser.java | 30 +-- .../UserAuthInfoResponseMessageParser.java | 25 +- .../UserAuthInfoRequestMessagePreparator.java | 2 +- ...UserAuthInfoResponseMessagePreparator.java | 21 +- .../UserAuthInfoRequestMessageSerializer.java | 21 +- ...UserAuthInfoResponseMessageSerializer.java | 19 +- .../common/ModifiableVariableHolder.java | 11 + .../core/protocol/common/ProtocolMessage.java | 15 ++ .../core/protocol/common/SshMessage.java | 9 + .../message/ChannelCloseMessage.java | 13 + .../message/ChannelDataMessage.java | 15 ++ .../connection/message/ChannelEofMessage.java | 13 + .../message/ChannelExtendedDataMessage.java | 16 ++ .../message/ChannelFailureMessage.java | 13 + .../connection/message/ChannelMessage.java | 12 + .../ChannelOpenConfirmationMessage.java | 16 ++ .../message/ChannelOpenFailureMessage.java | 19 ++ .../message/ChannelOpenMessage.java | 15 ++ .../message/ChannelOpenSessionMessage.java | 14 ++ .../message/ChannelOpenUnknownMessage.java | 15 ++ .../ChannelRequestAuthAgentMessage.java | 13 + .../message/ChannelRequestBreakMessage.java | 14 ++ .../message/ChannelRequestEnvMessage.java | 19 ++ .../message/ChannelRequestExecMessage.java | 15 ++ .../ChannelRequestExitSignalMessage.java | 40 ++- .../ChannelRequestExitStatusMessage.java | 14 ++ .../message/ChannelRequestMessage.java | 12 + .../message/ChannelRequestPtyMessage.java | 28 +++ .../message/ChannelRequestShellMessage.java | 13 + .../message/ChannelRequestSignalMessage.java | 16 ++ .../ChannelRequestSubsystemMessage.java | 16 ++ .../message/ChannelRequestUnknownMessage.java | 15 ++ .../ChannelRequestWindowChangeMessage.java | 17 ++ .../message/ChannelRequestX11Message.java | 32 +++ .../message/ChannelRequestXonXoffMessage.java | 15 ++ .../message/ChannelSuccessMessage.java | 13 + .../message/ChannelWindowAdjustMessage.java | 14 ++ ...lobalRequestCancelTcpIpForwardMessage.java | 19 ++ .../message/GlobalRequestFailureMessage.java | 13 + .../message/GlobalRequestMessage.java | 12 + .../GlobalRequestNoMoreSessionsMessage.java | 13 + .../GlobalRequestOpenSshHostKeysMessage.java | 14 ++ .../message/GlobalRequestSuccessMessage.java | 15 ++ .../GlobalRequestTcpIpForwardMessage.java | 19 ++ .../message/GlobalRequestUnknownMessage.java | 15 ++ ...ChannelRequestExitSignalMessageParser.java | 5 +- ...nelRequestExitSignalMessageSerializer.java | 6 +- .../transport/message/AsciiMessage.java | 16 ++ .../transport/message/DebugMessage.java | 19 ++ .../message/DhGexKeyExchangeGroupMessage.java | 19 ++ .../message/DhGexKeyExchangeInitMessage.java | 19 ++ .../DhGexKeyExchangeOldRequestMessage.java | 15 ++ .../message/DhGexKeyExchangeReplyMessage.java | 24 ++ .../DhGexKeyExchangeRequestMessage.java | 19 ++ .../message/DhKeyExchangeInitMessage.java | 19 ++ .../message/DhKeyExchangeReplyMessage.java | 24 ++ .../transport/message/DisconnectMessage.java | 20 ++ .../message/EcdhKeyExchangeInitMessage.java | 19 ++ .../message/EcdhKeyExchangeReplyMessage.java | 24 ++ .../message/ExtensionInfoMessage.java | 24 +- .../message/HybridKeyExchangeInitMessage.java | 35 +++ .../HybridKeyExchangeReplyMessage.java | 26 ++ .../transport/message/IgnoreMessage.java | 15 ++ .../message/KeyExchangeInitMessage.java | 99 ++++++++ .../transport/message/NewCompressMessage.java | 13 + .../transport/message/NewKeysMessage.java | 13 + .../transport/message/PingMessage.java | 15 ++ .../transport/message/PongMessage.java | 15 ++ .../message/RsaKeyExchangeDoneMessage.java | 15 ++ .../message/RsaKeyExchangePubkeyMessage.java | 24 ++ .../message/RsaKeyExchangeSecretMessage.java | 18 ++ .../message/ServiceAcceptMessage.java | 16 ++ .../message/ServiceRequestMessage.java | 16 ++ .../message/UnimplementedMessage.java | 14 ++ .../transport/message/UnknownMessage.java | 14 ++ .../message/VersionExchangeMessage.java | 17 ++ .../message/extension/AbstractExtension.java | 10 + .../extension/DelayCompressionExtension.java | 33 +++ .../message/extension/PingExtension.java | 15 ++ ...licKeyAlgorithmsRoumenPetrovExtension.java | 20 ++ .../extension/ServerSigAlgsExtension.java | 21 ++ .../message/extension/UnknownExtension.java | 15 ++ .../sshattacker/core/state/SshContext.java | 45 +++- .../core/workflow/chooser/Chooser.java | 16 +- .../core/workflow/chooser/DefaultChooser.java | 25 +- resources/configs/default_config.xml | 5 +- 242 files changed, 4014 insertions(+), 708 deletions(-) delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationPrompt.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationPromptEntries.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationResponse.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationResponseEntries.java diff --git a/.gitignore b/.gitignore index e843249a6..059b74802 100755 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,12 @@ nbactions.xml .factorypath .vscode -# IntelliJ -.idea/*.iml +### IntelliJ IDEA ### +.idea/* +!.idea/inspectionProfiles +!.idea/runConfigurations +*.iws +*.iml +*.ipr + diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 061ad5b58..5beacc32a 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -15,7 +15,8 @@ import de.rub.nds.sshattacker.core.crypto.ec.PointFormatter; import de.rub.nds.sshattacker.core.crypto.keys.*; import de.rub.nds.sshattacker.core.data.sftp.message.extension.*; -import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationResponse; +import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationResponseEntries; +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationResponseEntry; import de.rub.nds.sshattacker.core.protocol.connection.ChannelDefaults; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.*; import de.rub.nds.sshattacker.core.workflow.action.executor.WorkflowExecutorType; @@ -297,7 +298,7 @@ public class Config implements Serializable { name = "PublicKeyAlgorithmsRoumenPetrovExtension"), @XmlElement(type = UnknownExtension.class, name = "UnknownExtension") }) - private List> clientSupportedExtensions; + private ArrayList> clientSupportedExtensions; /** List of extensions supported by the server */ @XmlElementWrapper @@ -310,7 +311,7 @@ public class Config implements Serializable { name = "PublicKeyAlgorithmsRoumenPetrovExtension"), @XmlElement(type = UnknownExtension.class, name = "UnknownExtension") }) - private List> serverSupportedExtensions; + private ArrayList> serverSupportedExtensions; /** Flag for enabling and disabling the server-sig-algs extension */ private boolean respectServerSigAlgsExtension = true; @@ -348,7 +349,7 @@ public class Config implements Serializable { /** The List of responses used for UserAuthInfoResponseMessage */ @XmlElement(name = "preConfiguredAuthResponse") @XmlElementWrapper - private List preConfiguredAuthResponses; + private ArrayList preConfiguredAuthResponses; /** The List of user keys for public key authentication */ @XmlElement(name = "userKey") @@ -484,7 +485,7 @@ public class Config implements Serializable { @XmlElement(type = SftpExtensionVendorId.class, name = "SftpExtensionVendorId"), @XmlElement(type = SftpExtensionWithVersion.class, name = "SftpExtensionWithVersion") }) - private List> sftpClientSupportedExtensions; + private ArrayList> sftpClientSupportedExtensions; /** List of SFTP extensions supported by the server */ @XmlElementWrapper @@ -513,7 +514,7 @@ public class Config implements Serializable { @XmlElement(type = SftpExtensionVendorId.class, name = "SftpExtensionVendorId"), @XmlElement(type = SftpExtensionWithVersion.class, name = "SftpExtensionWithVersion") }) - private List> sftpServerSupportedExtensions; + private ArrayList> sftpServerSupportedExtensions; // endregion @@ -1034,13 +1035,16 @@ public Config() { username = "sshattacker"; password = "secret"; - preConfiguredAuthResponses = new LinkedList<>(); - AuthenticationResponse preConfiguredAuthResponse1 = new AuthenticationResponse(); - preConfiguredAuthResponse1.add(new AuthenticationResponse.ResponseEntry(password, false)); - preConfiguredAuthResponses.add(preConfiguredAuthResponse1); - AuthenticationResponse preConfiguredAuthResponse2 = new AuthenticationResponse(); - preConfiguredAuthResponse2.add(new AuthenticationResponse.ResponseEntry(false)); - preConfiguredAuthResponses.add(preConfiguredAuthResponse2); + preConfiguredAuthResponses = new ArrayList<>(); + + ArrayList preConfiguredAuthResponse1 = new ArrayList<>(); + preConfiguredAuthResponse1.add(new AuthenticationResponseEntry(password)); + preConfiguredAuthResponses.add( + new AuthenticationResponseEntries(preConfiguredAuthResponse1)); + ArrayList preConfiguredAuthResponse2 = new ArrayList<>(); + preConfiguredAuthResponse2.add(new AuthenticationResponseEntry()); + preConfiguredAuthResponses.add( + new AuthenticationResponseEntries(preConfiguredAuthResponse2)); // sshkey generated with "openssl ecparam -name secp521r1 -genkey -out key.pem" // pubkey for authorized_keys file on host generated with "ssh-keygen -y -f @@ -1640,11 +1644,11 @@ public void setServerReserved(int serverReserved) { // region Getters SSH Extensions // section general extensions - public List> getClientSupportedExtensions() { + public ArrayList> getClientSupportedExtensions() { return clientSupportedExtensions; } - public List> getServerSupportedExtensions() { + public ArrayList> getServerSupportedExtensions() { return serverSupportedExtensions; } @@ -1675,11 +1679,13 @@ public boolean getRespectDelayCompressionExtension() { // region Setters SSH Extensions // section general extensions - public void setClientSupportedExtensions(List> clientSupportedExtensions) { + public void setClientSupportedExtensions( + ArrayList> clientSupportedExtensions) { this.clientSupportedExtensions = clientSupportedExtensions; } - public void setServerSupportedExtensions(List> serverSupportedExtensions) { + public void setServerSupportedExtensions( + ArrayList> serverSupportedExtensions) { this.serverSupportedExtensions = serverSupportedExtensions; } @@ -1830,7 +1836,7 @@ public String getServiceName() { return serviceName; } - public List getPreConfiguredAuthResponses() { + public ArrayList getPreConfiguredAuthResponses() { return preConfiguredAuthResponses; } @@ -1857,7 +1863,7 @@ public void setServiceName(String serviceName) { } public void setPreConfiguredAuthResponses( - List preConfiguredAuthResponses) { + ArrayList preConfiguredAuthResponses) { this.preConfiguredAuthResponses = preConfiguredAuthResponses; } @@ -2199,11 +2205,11 @@ public void setRespectSftpNegotiatedVersion(Boolean respectSftpNegotiatedVersion // region Getters SFTP Extensions // section general extensions - public List> getSftpClientSupportedExtensions() { + public ArrayList> getSftpClientSupportedExtensions() { return sftpClientSupportedExtensions; } - public List> getSftpServerSupportedExtensions() { + public ArrayList> getSftpServerSupportedExtensions() { return sftpServerSupportedExtensions; } @@ -2213,12 +2219,12 @@ public List> getSftpServerSupportedExtensions() { // section general extensions public void setSftpClientSupportedExtensions( - List> sftpClientSupportedExtensions) { + ArrayList> sftpClientSupportedExtensions) { this.sftpClientSupportedExtensions = sftpClientSupportedExtensions; } public void setSftpServerSupportedExtensions( - List> sftpServerSupportedExtensions) { + ArrayList> sftpServerSupportedExtensions) { this.sftpServerSupportedExtensions = sftpServerSupportedExtensions; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/FieldElement.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/FieldElement.java index 7fe5c01aa..427c6ac9c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/FieldElement.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/FieldElement.java @@ -36,6 +36,14 @@ protected FieldElement(BigInteger data, BigInteger modulus) { this.modulus = modulus; } + protected FieldElement(FieldElement other) { + super(); + data = other.data; + modulus = other.modulus; + } + + public abstract FieldElement createCopy(); + /** * Performs an addition in the field, which this is an element of. * diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/FieldElementF2m.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/FieldElementF2m.java index abaebe6a0..113b5b338 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/FieldElementF2m.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/FieldElementF2m.java @@ -29,6 +29,15 @@ public FieldElementF2m(BigInteger data, BigInteger modulus) { super(data, modulus); } + public FieldElementF2m(FieldElementF2m other) { + super(other); + } + + @Override + public FieldElementF2m createCopy() { + return new FieldElementF2m(this); + } + @Override public FieldElement add(FieldElement element) { // Coefficients are added mod 2. diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/FieldElementFp.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/FieldElementFp.java index 6d222ecc2..695f0d80d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/FieldElementFp.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/FieldElementFp.java @@ -27,6 +27,15 @@ private FieldElementFp() { super(null, null); } + public FieldElementFp(FieldElementFp other) { + super(other); + } + + @Override + public FieldElementFp createCopy() { + return new FieldElementFp(this); + } + @Override public FieldElement add(FieldElement element) { BigInteger tmp = getData().add(element.getData()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/Point.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/Point.java index fee7c03cd..5603dfab8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/Point.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/ec/Point.java @@ -73,6 +73,17 @@ public Point(FieldElement x, FieldElement y) { atInfinity = false; } + public Point(Point other) { + super(); + fieldX = other.fieldX != null ? other.fieldX.createCopy() : null; + fieldY = other.fieldY != null ? other.fieldY.createCopy() : null; + atInfinity = other.atInfinity; + } + + public Point createCopy() { + return new Point(this); + } + /** * Checks whether the point is the point at infinity. * diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertDsaPublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertDsaPublicKey.java index 779120cf7..451cd3666 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertDsaPublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertDsaPublicKey.java @@ -9,6 +9,7 @@ import java.math.BigInteger; import java.security.interfaces.DSAPublicKey; +import java.util.HashMap; import java.util.Map; /** A serializable DSA public key used in DSA certificates (SSH-DSA-CERT). */ @@ -31,8 +32,9 @@ public class CustomCertDsaPublicKey extends CustomDsaPublicKey { private long validAfter; private long validBefore; - private Map criticalOptions; // Map to hold critical options as key-value pairs - private Map extensions; // Map to hold extensions as key-value pairs + private HashMap + criticalOptions; // Map to hold critical options as key-value pairs + private HashMap extensions; // Map to hold extensions as key-value pairs public CustomCertDsaPublicKey() { super(); @@ -46,6 +48,29 @@ public CustomCertDsaPublicKey(BigInteger p, BigInteger q, BigInteger g, BigInteg super(p, q, g, y); } + public CustomCertDsaPublicKey(CustomCertDsaPublicKey other) { + super(other); + serial = other.serial; + signature = other.signature != null ? other.signature.clone() : null; + signatureKey = other.signatureKey != null ? other.signatureKey.clone() : null; + certType = other.certType; + certformat = other.certformat; + keyId = other.keyId; + reserved = other.reserved; + validPrincipals = other.validPrincipals != null ? other.validPrincipals.clone() : null; + nonce = other.nonce != null ? other.nonce.clone() : null; + validAfter = other.validAfter; + validBefore = other.validBefore; + criticalOptions = + other.criticalOptions != null ? new HashMap<>(other.criticalOptions) : null; + extensions = other.extensions != null ? new HashMap<>(other.extensions) : null; + } + + @Override + public CustomCertDsaPublicKey createCopy() { + return new CustomCertDsaPublicKey(this); + } + public long getSerial() { return serial; } @@ -131,7 +156,7 @@ public Map getCriticalOptions() { return criticalOptions; } - public void setCriticalOptions(Map criticalOptions) { + public void setCriticalOptions(HashMap criticalOptions) { this.criticalOptions = criticalOptions; } @@ -148,7 +173,7 @@ public void setReserved(String reserved) { this.reserved = reserved; } - public void setExtensions(Map extensions) { + public void setExtensions(HashMap extensions) { this.extensions = extensions; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertEcdsaPublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertEcdsaPublicKey.java index 6061843ea..29a77aabf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertEcdsaPublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertEcdsaPublicKey.java @@ -12,6 +12,7 @@ import de.rub.nds.sshattacker.core.exceptions.CryptoException; import java.math.BigInteger; import java.security.interfaces.ECPublicKey; +import java.util.HashMap; import java.util.Map; /** A serializable ECDSA public key used in ECDSA certificates (SSH-ECDSA-CERT). */ @@ -34,8 +35,9 @@ public class CustomCertEcdsaPublicKey extends CustomEcPublicKey { private long validAfter; private long validBefore; - private Map criticalOptions; // Map to hold critical options as key-value pairs - private Map extensions; // Map to hold extensions as key-value pairs + private HashMap + criticalOptions; // Map to hold critical options as key-value pairs + private HashMap extensions; // Map to hold extensions as key-value pairs public CustomCertEcdsaPublicKey() { super(); @@ -53,6 +55,29 @@ public CustomCertEcdsaPublicKey(BigInteger x, BigInteger y, NamedEcGroup group) super(x, y, group); } + public CustomCertEcdsaPublicKey(CustomCertEcdsaPublicKey other) { + super(other); + serial = other.serial; + signature = other.signature != null ? other.signature.clone() : null; + signatureKey = other.signatureKey != null ? other.signatureKey.clone() : null; + certType = other.certType; + certformat = other.certformat; + keyId = other.keyId; + reserved = other.reserved; + validPrincipals = other.validPrincipals != null ? other.validPrincipals.clone() : null; + nonce = other.nonce != null ? other.nonce.clone() : null; + validAfter = other.validAfter; + validBefore = other.validBefore; + criticalOptions = + other.criticalOptions != null ? new HashMap<>(other.criticalOptions) : null; + extensions = other.extensions != null ? new HashMap<>(other.extensions) : null; + } + + @Override + public CustomCertEcdsaPublicKey createCopy() { + return new CustomCertEcdsaPublicKey(this); + } + public void setCertFormat(String certformat) { this.certformat = certformat; } @@ -154,7 +179,7 @@ public Map getCriticalOptions() { return criticalOptions; } - public void setCriticalOptions(Map criticalOptions) { + public void setCriticalOptions(HashMap criticalOptions) { this.criticalOptions = criticalOptions; } @@ -163,7 +188,7 @@ public Map getExtensions() { return extensions; } - public void setExtensions(Map extensions) { + public void setExtensions(HashMap extensions) { this.extensions = extensions; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertRsaPublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertRsaPublicKey.java index 480764820..27d3418be 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertRsaPublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertRsaPublicKey.java @@ -9,6 +9,7 @@ import java.math.BigInteger; import java.security.interfaces.RSAPublicKey; +import java.util.HashMap; import java.util.Map; /** A serializable RSA public key used in RSA certificates (SSH-RSA-CERT). */ @@ -31,8 +32,9 @@ public class CustomCertRsaPublicKey extends CustomRsaPublicKey { private long validAfter; private long validBefore; - private Map extensions; // Map to hold extensions as key-value pairs - private Map criticalOptions; // Map to hold critical options as key-value pairs + private HashMap extensions; // Map to hold extensions as key-value pairs + private HashMap + criticalOptions; // Map to hold critical options as key-value pairs public CustomCertRsaPublicKey() { super(); @@ -46,6 +48,29 @@ public CustomCertRsaPublicKey(BigInteger publicExponent, BigInteger modulus) { super(publicExponent, modulus); } + public CustomCertRsaPublicKey(CustomCertRsaPublicKey other) { + super(other); + serial = other.serial; + signature = other.signature != null ? other.signature.clone() : null; + signatureKey = other.signatureKey != null ? other.signatureKey.clone() : null; + certformat = other.certformat; + certType = other.certType; + keyId = other.keyId; + reserved = other.reserved; + validPrincipals = other.validPrincipals != null ? other.validPrincipals.clone() : null; + nonce = other.nonce != null ? other.nonce.clone() : null; + validAfter = other.validAfter; + validBefore = other.validBefore; + extensions = other.extensions != null ? new HashMap<>(other.extensions) : null; + criticalOptions = + other.criticalOptions != null ? new HashMap<>(other.criticalOptions) : null; + } + + @Override + public CustomCertRsaPublicKey createCopy() { + return new CustomCertRsaPublicKey(this); + } + public void setCertFormat(String certformat) { this.certformat = certformat; } @@ -138,7 +163,7 @@ public Map getExtensions() { return extensions; } - public void setExtensions(Map extensions) { + public void setExtensions(HashMap extensions) { this.extensions = extensions; } @@ -146,7 +171,7 @@ public Map getCriticalOptions() { return criticalOptions; } - public void setCriticalOptions(Map criticalOptions) { + public void setCriticalOptions(HashMap criticalOptions) { this.criticalOptions = criticalOptions; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertXCurvePublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertXCurvePublicKey.java index b1d502e3c..d50d86dd1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertXCurvePublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomCertXCurvePublicKey.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.crypto.keys; import de.rub.nds.sshattacker.core.constants.NamedEcGroup; +import java.util.HashMap; import java.util.Map; /** A serializable ED25519/ED448 certificate public key used in certificates (SSH-ED25519-CERT). */ @@ -25,8 +26,8 @@ public class CustomCertXCurvePublicKey extends XCurveEcPublicKey { private long validBefore; private byte[] signature; private byte[] signatureKey; - private Map criticalOptions; - private Map extensions; + private HashMap criticalOptions; + private HashMap extensions; public CustomCertXCurvePublicKey() { super(); @@ -36,6 +37,29 @@ public CustomCertXCurvePublicKey(byte[] coordinate, NamedEcGroup group) { super(coordinate, group); } + public CustomCertXCurvePublicKey(CustomCertXCurvePublicKey other) { + super(other); + serial = other.serial; + certType = other.certType; + certformat = other.certformat; + keyId = other.keyId; + reserved = other.reserved; + validPrincipals = other.validPrincipals != null ? other.validPrincipals.clone() : null; + nonce = other.nonce != null ? other.nonce.clone() : null; + validAfter = other.validAfter; + validBefore = other.validBefore; + signature = other.signature != null ? other.signature.clone() : null; + signatureKey = other.signatureKey != null ? other.signatureKey.clone() : null; + criticalOptions = + other.criticalOptions != null ? new HashMap<>(other.criticalOptions) : null; + extensions = other.extensions != null ? new HashMap<>(other.extensions) : null; + } + + @Override + public CustomCertXCurvePublicKey createCopy() { + return new CustomCertXCurvePublicKey(this); + } + // Getter and setter for serial number public long getSerial() { return serial; @@ -139,7 +163,7 @@ public Map getCriticalOptions() { return criticalOptions; } - public void setCriticalOptions(Map criticalOptions) { + public void setCriticalOptions(HashMap criticalOptions) { this.criticalOptions = criticalOptions; } @@ -148,7 +172,7 @@ public Map getExtensions() { return extensions; } - public void setExtensions(Map extensions) { + public void setExtensions(HashMap extensions) { this.extensions = extensions; } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDhPrivateKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDhPrivateKey.java index fc527d96e..86e7bc4e6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDhPrivateKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDhPrivateKey.java @@ -46,6 +46,18 @@ public BigInteger getModulus() { return modulus; } + public CustomDhPrivateKey(CustomDhPrivateKey other) { + super(other); + modulus = other.modulus; + generator = other.generator; + privateKey = other.privateKey; + } + + @Override + public CustomDhPrivateKey createCopy() { + return new CustomDhPrivateKey(this); + } + public void setModulus(BigInteger modulus) { this.modulus = modulus; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDhPublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDhPublicKey.java index 3699cfe64..ef57c8b2e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDhPublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDhPublicKey.java @@ -42,6 +42,18 @@ public CustomDhPublicKey(BigInteger modulus, BigInteger generator, BigInteger pu this.publicKey = publicKey; } + public CustomDhPublicKey(CustomDhPublicKey other) { + super(other); + modulus = other.modulus; + generator = other.generator; + publicKey = other.publicKey; + } + + @Override + public CustomDhPublicKey createCopy() { + return new CustomDhPublicKey(this); + } + public BigInteger getModulus() { return modulus; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDsaPrivateKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDsaPrivateKey.java index e4a17d84b..d717a392b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDsaPrivateKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDsaPrivateKey.java @@ -40,6 +40,19 @@ public CustomDsaPrivateKey(BigInteger p, BigInteger q, BigInteger g, BigInteger this.x = x; } + public CustomDsaPrivateKey(CustomDsaPrivateKey other) { + super(other); + p = other.p; + q = other.q; + g = other.g; + x = other.x; + } + + @Override + public CustomDsaPrivateKey createCopy() { + return new CustomDsaPrivateKey(this); + } + public BigInteger getP() { return p; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDsaPublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDsaPublicKey.java index a5f559e6d..30474b4a7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDsaPublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomDsaPublicKey.java @@ -48,6 +48,19 @@ public CustomDsaPublicKey(BigInteger p, BigInteger q, BigInteger g, BigInteger y this.y = y; } + public CustomDsaPublicKey(CustomDsaPublicKey other) { + super(other); + p = other.p; + q = other.q; + g = other.g; + y = other.y; + } + + @Override + public CustomDsaPublicKey createCopy() { + return new CustomDsaPublicKey(this); + } + public BigInteger getP() { return p; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomEcPrivateKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomEcPrivateKey.java index 908834ed1..17dba3fcb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomEcPrivateKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomEcPrivateKey.java @@ -45,6 +45,17 @@ public CustomEcPrivateKey(BigInteger privateKey, NamedEcGroup group) { this.privateKey = privateKey; } + public CustomEcPrivateKey(CustomEcPrivateKey other) { + super(other); + group = other.group; + privateKey = other.privateKey; + } + + @Override + public CustomEcPrivateKey createCopy() { + return new CustomEcPrivateKey(this); + } + public NamedEcGroup getGroup() { return group; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomEcPublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomEcPublicKey.java index 8856f1342..ebdbfb3f7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomEcPublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomEcPublicKey.java @@ -72,6 +72,17 @@ public CustomEcPublicKey(ECPublicKey publicKey) throws CryptoException { publicKey.getW().getAffineX(), publicKey.getW().getAffineY(), group); } + public CustomEcPublicKey(CustomEcPublicKey other) { + super(other); + publicKey = other.publicKey != null ? other.publicKey.createCopy() : null; + group = other.group; + } + + @Override + public CustomEcPublicKey createCopy() { + return new CustomEcPublicKey(this); + } + public NamedEcGroup getGroup() { return group; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPQKemPrivateKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPQKemPrivateKey.java index 46d2849b1..2846a9f96 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPQKemPrivateKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPQKemPrivateKey.java @@ -32,6 +32,17 @@ public CustomPQKemPrivateKey(byte[] privateKey, PQKemNames kemName) { this.kemName = kemName; } + public CustomPQKemPrivateKey(CustomPQKemPrivateKey other) { + super(other); + privateKey = other.privateKey != null ? other.privateKey.clone() : null; + kemName = other.kemName; + } + + @Override + public CustomPQKemPrivateKey createCopy() { + return new CustomPQKemPrivateKey(this); + } + public byte[] getPrivateKey() { return privateKey; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPQKemPublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPQKemPublicKey.java index c31c1f654..f7baf9387 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPQKemPublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPQKemPublicKey.java @@ -32,6 +32,17 @@ public CustomPQKemPublicKey(byte[] publicKey, PQKemNames kemName) { this.kemName = kemName; } + public CustomPQKemPublicKey(CustomPQKemPublicKey other) { + super(other); + publicKey = other.publicKey != null ? other.publicKey.clone() : null; + kemName = other.kemName; + } + + @Override + public CustomPQKemPublicKey createCopy() { + return new CustomPQKemPublicKey(this); + } + public byte[] getPublicKey() { return publicKey; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPrivateKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPrivateKey.java index 5925965f7..4463a23b6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPrivateKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPrivateKey.java @@ -15,6 +15,17 @@ * encoding support). */ public abstract class CustomPrivateKey implements PrivateKey { + + protected CustomPrivateKey() { + super(); + } + + protected CustomPrivateKey(CustomPrivateKey other) { + super(); + } + + public abstract CustomPrivateKey createCopy(); + @Override public String getFormat() { return null; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPublicKey.java index ea05ce5d4..ca43f67ef 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomPublicKey.java @@ -15,6 +15,17 @@ * encoding support). */ public abstract class CustomPublicKey implements PublicKey { + + protected CustomPublicKey() { + super(); + } + + protected CustomPublicKey(CustomPublicKey other) { + super(); + } + + public abstract CustomPublicKey createCopy(); + @Override public String getFormat() { return null; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomRsaPrivateKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomRsaPrivateKey.java index 7a0a1f8af..2ebe10d3b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomRsaPrivateKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomRsaPrivateKey.java @@ -37,6 +37,17 @@ public CustomRsaPrivateKey(BigInteger privateExponent, BigInteger modulus) { this.privateExponent = privateExponent; } + public CustomRsaPrivateKey(CustomRsaPrivateKey other) { + super(other); + modulus = other.modulus; + privateExponent = other.privateExponent; + } + + @Override + public CustomRsaPrivateKey createCopy() { + return new CustomRsaPrivateKey(this); + } + @Override public BigInteger getModulus() { return modulus; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomRsaPublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomRsaPublicKey.java index 6d4ff9cc1..4c4175be1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomRsaPublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomRsaPublicKey.java @@ -37,6 +37,17 @@ public CustomRsaPublicKey(BigInteger publicExponent, BigInteger modulus) { this.publicExponent = publicExponent; } + public CustomRsaPublicKey(CustomRsaPublicKey other) { + super(other); + modulus = other.modulus; + publicExponent = other.publicExponent; + } + + @Override + public CustomRsaPublicKey createCopy() { + return new CustomRsaPublicKey(this); + } + @Override public BigInteger getModulus() { return modulus; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509DsaPublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509DsaPublicKey.java index 06d97e9d5..8a9027bfa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509DsaPublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509DsaPublicKey.java @@ -9,6 +9,7 @@ import java.math.BigInteger; import java.security.interfaces.DSAPublicKey; +import java.util.HashMap; import java.util.Map; /** A serializable DSA public key used in X.509 certificates (X509-SSH-DSA). */ @@ -29,7 +30,7 @@ public class CustomX509DsaPublicKey extends CustomDsaPublicKey { private long validBefore; // Not After (valid before) // Extensions (if any) - private Map extensions; // Extensions (optional) + private HashMap extensions; // Extensions (optional) public CustomX509DsaPublicKey() { super(); @@ -52,6 +53,27 @@ public CustomX509DsaPublicKey( this.signature = signature; } + public CustomX509DsaPublicKey(CustomX509DsaPublicKey other) { + super(other); + issuer = other.issuer; + subject = other.subject; + publicKeyAlgorithm = other.publicKeyAlgorithm; + version = other.version; + serial = other.serial; + signatureAlgorithm = other.signatureAlgorithm; + signature = other.signature != null ? other.signature.clone() : null; + subjectKeyIdentifier = + other.subjectKeyIdentifier != null ? other.subjectKeyIdentifier.clone() : null; + validAfter = other.validAfter; + validBefore = other.validBefore; + extensions = other.extensions != null ? new HashMap<>(other.extensions) : null; + } + + @Override + public CustomX509DsaPublicKey createCopy() { + return new CustomX509DsaPublicKey(this); + } + // Getter and setter for serial number public long getSerial() { return serial; @@ -139,7 +161,7 @@ public Map getExtensions() { return extensions; } - public void setExtensions(Map extensions) { + public void setExtensions(HashMap extensions) { this.extensions = extensions; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509EcdsaPublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509EcdsaPublicKey.java index ab7827763..6db14d324 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509EcdsaPublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509EcdsaPublicKey.java @@ -12,6 +12,7 @@ import de.rub.nds.sshattacker.core.exceptions.CryptoException; import java.math.BigInteger; import java.security.interfaces.ECPublicKey; +import java.util.HashMap; import java.util.Map; /** A serializable ECDSA public key used in X.509 certificates (X509-SSH-ECDSA). */ @@ -32,7 +33,7 @@ public class CustomX509EcdsaPublicKey extends CustomEcPublicKey { private long validBefore; // Not After (valid before) // Extensions (if any) - private Map extensions; // Extensions (optional) + private HashMap extensions; // Extensions (optional) public CustomX509EcdsaPublicKey() { super(); @@ -64,6 +65,27 @@ public CustomX509EcdsaPublicKey( this.signature = signature; } + public CustomX509EcdsaPublicKey(CustomX509EcdsaPublicKey other) { + super(other); + issuer = other.issuer; + subject = other.subject; + publicKeyAlgorithm = other.publicKeyAlgorithm; + version = other.version; + serial = other.serial; + signatureAlgorithm = other.signatureAlgorithm; + signature = other.signature != null ? other.signature.clone() : null; + subjectKeyIdentifier = + other.subjectKeyIdentifier != null ? other.subjectKeyIdentifier.clone() : null; + validAfter = other.validAfter; + validBefore = other.validBefore; + extensions = other.extensions != null ? new HashMap<>(other.extensions) : null; + } + + @Override + public CustomX509EcdsaPublicKey createCopy() { + return new CustomX509EcdsaPublicKey(this); + } + // Getter and setter for serial number public long getSerial() { return serial; @@ -151,7 +173,7 @@ public Map getExtensions() { return extensions; } - public void setExtensions(Map extensions) { + public void setExtensions(HashMap extensions) { this.extensions = extensions; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509RsaPublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509RsaPublicKey.java index d39906893..e6772d313 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509RsaPublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509RsaPublicKey.java @@ -9,6 +9,7 @@ import java.math.BigInteger; import java.security.interfaces.RSAPublicKey; +import java.util.HashMap; import java.util.Map; /** A serializable RSA public key used in X.509 certificates (X509-SSH-RSA). */ @@ -29,7 +30,7 @@ public class CustomX509RsaPublicKey extends CustomRsaPublicKey { private long validBefore; // Not After (valid before) // Extensions (if any) - private Map extensions; // Extensions (optional) + private HashMap extensions; // Extensions (optional) public CustomX509RsaPublicKey() { super(); @@ -55,6 +56,27 @@ public CustomX509RsaPublicKey(BigInteger publicExponent, BigInteger modulus, byt this.signature = signature; } + public CustomX509RsaPublicKey(CustomX509RsaPublicKey other) { + super(other); + issuer = other.issuer; + subject = other.subject; + publicKeyAlgorithm = other.publicKeyAlgorithm; + version = other.version; + serial = other.serial; + signatureAlgorithm = other.signatureAlgorithm; + signature = other.signature != null ? other.signature.clone() : null; + subjectKeyIdentifier = + other.subjectKeyIdentifier != null ? other.subjectKeyIdentifier.clone() : null; + validAfter = other.validAfter; + validBefore = other.validBefore; + extensions = other.extensions != null ? new HashMap<>(other.extensions) : null; + } + + @Override + public CustomX509RsaPublicKey createCopy() { + return new CustomX509RsaPublicKey(this); + } + // Getter and setter for serial number public long getSerial() { return serial; @@ -142,7 +164,7 @@ public Map getExtensions() { return extensions; } - public void setExtensions(Map extensions) { + public void setExtensions(HashMap extensions) { this.extensions = extensions; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509XCurvePublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509XCurvePublicKey.java index 0bad939c7..5f114d917 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509XCurvePublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/CustomX509XCurvePublicKey.java @@ -17,7 +17,7 @@ import java.security.PublicKey; import java.security.spec.InvalidKeySpecException; import java.security.spec.X509EncodedKeySpec; -import java.util.Map; +import java.util.*; import org.bouncycastle.asn1.edec.EdECObjectIdentifiers; import org.bouncycastle.asn1.x509.AlgorithmIdentifier; import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; @@ -45,7 +45,7 @@ public class CustomX509XCurvePublicKey extends CustomPublicKey { private long validBefore; // Not After (valid before) // Extensions (if any) - private Map extensions; // Extensions (optional) + private HashMap extensions; // Extensions (optional) public CustomX509XCurvePublicKey() { super(); @@ -61,6 +61,29 @@ public CustomX509XCurvePublicKey(byte[] publicKey, NamedEcGroup group, byte[] si this.signature = signature; } + public CustomX509XCurvePublicKey(CustomX509XCurvePublicKey other) { + super(other); + group = other.group; + publicKey = other.publicKey != null ? other.publicKey.clone() : null; + issuer = other.issuer; + subject = other.subject; + publicKeyAlgorithm = other.publicKeyAlgorithm; + version = other.version; + serial = other.serial; + signatureAlgorithm = other.signatureAlgorithm; + signature = other.signature != null ? other.signature.clone() : null; + subjectKeyIdentifier = + other.subjectKeyIdentifier != null ? other.subjectKeyIdentifier.clone() : null; + validAfter = other.validAfter; + validBefore = other.validBefore; + extensions = other.extensions != null ? new HashMap<>(other.extensions) : null; + } + + @Override + public CustomX509XCurvePublicKey createCopy() { + return new CustomX509XCurvePublicKey(this); + } + // Getter and setter for public key public byte[] getPublicKey() { return publicKey; @@ -166,7 +189,7 @@ public Map getExtensions() { return extensions; } - public void setExtensions(Map extensions) { + public void setExtensions(HashMap extensions) { this.extensions = extensions; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/SshPublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/SshPublicKey.java index 32cfae43a..d062fdd57 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/SshPublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/SshPublicKey.java @@ -77,6 +77,17 @@ public SshPublicKey(PublicKeyFormat publicKeyFormat, PUBLIC publicKey, PRIVATE p this.privateKey = privateKey; } + public SshPublicKey(SshPublicKey other) { + super(); + publicKeyFormat = other.publicKeyFormat; + publicKey = other.publicKey; + privateKey = other.privateKey; + } + + public SshPublicKey createCopy() { + return new SshPublicKey<>(this); + } + public PublicKeyFormat getPublicKeyFormat() { return publicKeyFormat; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/XCurveEcPrivateKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/XCurveEcPrivateKey.java index d74f874dd..c87f1523b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/XCurveEcPrivateKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/XCurveEcPrivateKey.java @@ -58,6 +58,17 @@ public XCurveEcPrivateKey(byte[] scalar, NamedEcGroup group) { this.scalar = scalar; } + public XCurveEcPrivateKey(XCurveEcPrivateKey other) { + super(other); + group = other.group; + scalar = other.scalar != null ? other.scalar.clone() : null; + } + + @Override + public XCurveEcPrivateKey createCopy() { + return new XCurveEcPrivateKey(this); + } + public NamedEcGroup getGroup() { return group; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/XCurveEcPublicKey.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/XCurveEcPublicKey.java index 60de479ec..851e7a631 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/XCurveEcPublicKey.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/XCurveEcPublicKey.java @@ -37,6 +37,17 @@ public class XCurveEcPublicKey extends CustomPublicKey { @XmlJavaTypeAdapter(UnformattedByteArrayAdapter.class) protected byte[] coordinate; + public XCurveEcPublicKey(XCurveEcPublicKey other) { + super(other); + group = other.group; + coordinate = other.coordinate != null ? other.coordinate.clone() : null; + } + + @Override + public XCurveEcPublicKey createCopy() { + return new XCurveEcPublicKey(this); + } + public XCurveEcPublicKey() { super(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertDsaPublicKeyParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertDsaPublicKeyParser.java index 182dbdcca..bdc43692f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertDsaPublicKeyParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertDsaPublicKeyParser.java @@ -21,7 +21,6 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Locale; -import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -141,7 +140,7 @@ public SshPublicKey parse() { int criticalOptionsLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed criticalOptionsLength: {}", criticalOptionsLength); - Map criticalOptionsMap = new HashMap<>(); + HashMap criticalOptionsMap = new HashMap<>(); if (criticalOptionsLength > 0) { int bytesParsed = 0; while (bytesParsed < criticalOptionsLength) { @@ -163,7 +162,7 @@ public SshPublicKey parse() { int extensionsLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed extensionsLength: {}", extensionsLength); - Map extensionsMap = new HashMap<>(); + HashMap extensionsMap = new HashMap<>(); if (extensionsLength > 0) { int bytesParsed = 0; while (bytesParsed < extensionsLength) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertEcdsaPublicKeyParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertEcdsaPublicKeyParser.java index 7cdaad47b..4487f2cb1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertEcdsaPublicKeyParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertEcdsaPublicKeyParser.java @@ -24,7 +24,6 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Locale; -import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -138,7 +137,7 @@ public SshPublicKey parse() { int criticalOptionsLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed criticalOptionsLength: {}", criticalOptionsLength); - Map criticalOptionsMap = new HashMap<>(); + HashMap criticalOptionsMap = new HashMap<>(); if (criticalOptionsLength > 0) { int bytesParsed = 0; while (bytesParsed < criticalOptionsLength) { @@ -160,7 +159,7 @@ public SshPublicKey parse() { int extensionsLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed extensionsLength: {}", extensionsLength); - Map extensionsMap = new HashMap<>(); + HashMap extensionsMap = new HashMap<>(); if (extensionsLength > 0) { int bytesParsed = 0; while (bytesParsed < extensionsLength) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertRsaPublicKeyParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertRsaPublicKeyParser.java index 52471167f..7053da6aa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertRsaPublicKeyParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertRsaPublicKeyParser.java @@ -21,7 +21,6 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Locale; -import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -126,7 +125,7 @@ public SshPublicKey parse() { int criticalOptionsLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed criticalOptionsLength: {}", criticalOptionsLength); - Map criticalOptionsMap = new HashMap<>(); + HashMap criticalOptionsMap = new HashMap<>(); if (criticalOptionsLength > 0) { int bytesParsed = 0; while (bytesParsed < criticalOptionsLength) { @@ -148,7 +147,7 @@ public SshPublicKey parse() { int extensionsLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed extensionsLength: {}", extensionsLength); - Map extensionsMap = new HashMap<>(); + HashMap extensionsMap = new HashMap<>(); if (extensionsLength > 0) { int bytesParsed = 0; while (bytesParsed < extensionsLength) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertXCurvePublicKeyParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertXCurvePublicKeyParser.java index 7ae37636e..f2009f8d0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertXCurvePublicKeyParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertXCurvePublicKeyParser.java @@ -21,7 +21,6 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Locale; -import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -125,7 +124,7 @@ public CertXCurvePublicKeyParser(byte[] array, int startPosition) { int criticalOptionsLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed criticalOptionsLength: {}", criticalOptionsLength); - Map criticalOptionsMap = new HashMap<>(); + HashMap criticalOptionsMap = new HashMap<>(); if (criticalOptionsLength > 0) { int bytesParsed = 0; while (bytesParsed < criticalOptionsLength) { @@ -147,7 +146,7 @@ public CertXCurvePublicKeyParser(byte[] array, int startPosition) { int extensionsLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed extensionsLength: {}", extensionsLength); - Map extensionsMap = new HashMap<>(); + HashMap extensionsMap = new HashMap<>(); if (extensionsLength > 0) { int bytesParsed = 0; while (bytesParsed < extensionsLength) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509DsaPublicKeyParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509DsaPublicKeyParser.java index 9f780869e..1ffa5608f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509DsaPublicKeyParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509DsaPublicKeyParser.java @@ -26,7 +26,6 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; -import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -121,7 +120,7 @@ public SshPublicKey parse() { } // Setze Extensions, falls vorhanden - Map extensionsMap = new HashMap<>(); + HashMap extensionsMap = new HashMap<>(); if (authorityKeyIdentifier != null) { extensionsMap.put( "AuthorityKeyIdentifier", Arrays.toString(authorityKeyIdentifier)); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509EcdsaPublicKeyParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509EcdsaPublicKeyParser.java index 72ee1a742..5bc046090 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509EcdsaPublicKeyParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509EcdsaPublicKeyParser.java @@ -127,7 +127,7 @@ public SshPublicKey parse() { LOGGER.debug("Parsed Curve Name: {}", curveName); // Set Extensions, if any - Map extensionsMap = parseExtensions(cert); + HashMap extensionsMap = parseExtensions(cert); customX509EcdsaPublicKey.setExtensions(extensionsMap); if (extensionsMap != null && !extensionsMap.isEmpty()) { LOGGER.debug("Parsed Certificate Extensions:"); @@ -253,8 +253,8 @@ public static String getCurveOid(ECParameterSpec ecParams) { } } - private Map parseExtensions(X509Certificate cert) { - Map extensionsMap = new HashMap<>(); + private HashMap parseExtensions(X509Certificate cert) { + HashMap extensionsMap = new HashMap<>(); try { byte[] subjectKeyIdentifier = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509RsaPublicKeyParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509RsaPublicKeyParser.java index 071f0dbee..91e0b9ba9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509RsaPublicKeyParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509RsaPublicKeyParser.java @@ -26,7 +26,6 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; -import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -120,7 +119,7 @@ public SshPublicKey parse() { } // Set Extensions - Map extensionsMap = new HashMap<>(); + HashMap extensionsMap = new HashMap<>(); if (authorityKeyIdentifier != null) { extensionsMap.put( "AuthorityKeyIdentifier", Arrays.toString(authorityKeyIdentifier)); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509XCurvePublicKeyParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509XCurvePublicKeyParser.java index 8325cf03e..890da7b42 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509XCurvePublicKeyParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/X509XCurvePublicKeyParser.java @@ -20,7 +20,6 @@ import java.security.cert.X509Certificate; import java.util.Arrays; import java.util.HashMap; -import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.bouncycastle.jce.provider.BouncyCastleProvider; @@ -99,7 +98,7 @@ public X509XCurvePublicKeyParser(byte[] array, int startPosition) { } // Set Extensions - Map extensionsMap = new HashMap<>(); + HashMap extensionsMap = new HashMap<>(); if (authorityKeyIdentifier != null) { extensionsMap.put( "AuthorityKeyIdentifier", Arrays.toString(authorityKeyIdentifier)); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/AbstractDataPacket.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/AbstractDataPacket.java index d6b7a08bb..113ad3cb0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/AbstractDataPacket.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/AbstractDataPacket.java @@ -34,6 +34,20 @@ public abstract class AbstractDataPacket extends ModifiableVariableHolder { @ModifiableVariableProperty(type = ModifiableVariableProperty.Type.PLAIN_PROTOCOL_MESSAGE) private ModifiableByteArray payload; + protected AbstractDataPacket() { + super(); + } + + protected AbstractDataPacket(AbstractDataPacket other) { + super(other); + completePacketBytes = + other.completePacketBytes != null ? other.completePacketBytes.createCopy() : null; + payload = other.payload != null ? other.payload.createCopy() : null; + } + + @Override + public abstract AbstractDataPacket createCopy(); + public ModifiableByteArray getCompletePacketBytes() { return completePacketBytes; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/DataPacket.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/DataPacket.java index 5b5622cfd..5a7ecf8dd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/DataPacket.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/DataPacket.java @@ -23,6 +23,20 @@ public class DataPacket extends AbstractDataPacket { @ModifiableVariableProperty(type = ModifiableVariableProperty.Type.LENGTH) private ModifiableInteger length; + public DataPacket() { + super(); + } + + public DataPacket(DataPacket other) { + super(other); + length = other.length != null ? other.length.createCopy() : null; + } + + @Override + public DataPacket createCopy() { + return new DataPacket(this); + } + public ModifiableInteger getLength() { return length; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/PassThroughPacket.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/PassThroughPacket.java index 64d613daa..eb98ae5a3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/PassThroughPacket.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/PassThroughPacket.java @@ -19,6 +19,19 @@ */ public class PassThroughPacket extends AbstractDataPacket { + public PassThroughPacket() { + super(); + } + + public PassThroughPacket(PassThroughPacket other) { + super(other); + } + + @Override + public PassThroughPacket createCopy() { + return new PassThroughPacket(this); + } + public PassThroughPacketPreparator getPacketPreparator(Chooser chooser) { return new PassThroughPacketPreparator(chooser, this); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessage.java index 2eedb1586..c44dd649b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessage.java @@ -16,6 +16,15 @@ public abstract class SftpMessage> extends DataMessage< protected ModifiableByte packetType; + protected SftpMessage() { + super(); + } + + protected SftpMessage(SftpMessage other) { + super(); + packetType = other.packetType != null ? other.packetType.createCopy() : null; + } + public ModifiableByte getPacketType() { return packetType; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java index 65c62d9ff..25e440801 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java @@ -51,7 +51,17 @@ public abstract class SftpHandshakeMessage> @XmlElement(type = SftpExtensionVendorId.class, name = "SftpExtensionVendorId"), @XmlElement(type = SftpExtensionWithVersion.class, name = "SftpExtensionWithVersion") }) - private List> extensions = new ArrayList<>(); + private ArrayList> extensions = new ArrayList<>(); + + protected SftpHandshakeMessage() { + super(); + } + + protected SftpHandshakeMessage(SftpHandshakeMessage other) { + super(other); + version = other.version != null ? other.version.createCopy() : null; + extensions = other.extensions != null ? new ArrayList<>(other.extensions) : null; + } public ModifiableInteger getVersion() { return version; @@ -71,11 +81,11 @@ public void setSoftlyVersion(Integer version) { } } - public List> getExtensions() { + public ArrayList> getExtensions() { return extensions; } - public void setExtensions(List> extensions) { + public void setExtensions(ArrayList> extensions) { this.extensions = extensions; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java index 194d92dce..4496cf8ba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java @@ -13,6 +13,19 @@ public class SftpInitMessage extends SftpHandshakeMessage { + public SftpInitMessage() { + super(); + } + + public SftpInitMessage(SftpInitMessage other) { + super(other); + } + + @Override + public SftpInitMessage createCopy() { + return new SftpInitMessage(this); + } + @Override public SftpInitMessageHandler getHandler(SshContext context) { return new SftpInitMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java index 20c1fe260..288827425 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java @@ -18,6 +18,20 @@ public class SftpUnknownMessage extends SftpMessage { private ModifiableByteArray payload; + public SftpUnknownMessage() { + super(); + } + + public SftpUnknownMessage(SftpUnknownMessage other) { + super(other); + payload = other.payload != null ? other.payload.createCopy() : null; + } + + @Override + public SftpUnknownMessage createCopy() { + return new SftpUnknownMessage(this); + } + public ModifiableByteArray getPayload() { return payload; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java index 71fa89ac2..485eab601 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java @@ -12,6 +12,19 @@ public class SftpVersionMessage extends SftpHandshakeMessage { + public SftpVersionMessage() { + super(); + } + + public SftpVersionMessage(SftpVersionMessage other) { + super(other); + } + + @Override + public SftpVersionMessage createCopy() { + return new SftpVersionMessage(this); + } + @Override public SftpVersionMessageHandler getHandler(SshContext context) { return new SftpVersionMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java index 20b853f37..8d51c6bbc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java @@ -29,6 +29,25 @@ public class SftpRequestCheckFileHandleMessage private ModifiableLong length; private ModifiableInteger blockSize; + public SftpRequestCheckFileHandleMessage() { + super(); + } + + public SftpRequestCheckFileHandleMessage(SftpRequestCheckFileHandleMessage other) { + super(other); + hashAlgorithmsLength = + other.hashAlgorithmsLength != null ? other.hashAlgorithmsLength.createCopy() : null; + hashAlgorithms = other.hashAlgorithms != null ? other.hashAlgorithms.createCopy() : null; + startOffset = other.startOffset != null ? other.startOffset.createCopy() : null; + length = other.length != null ? other.length.createCopy() : null; + blockSize = other.blockSize != null ? other.blockSize.createCopy() : null; + } + + @Override + public SftpRequestCheckFileHandleMessage createCopy() { + return new SftpRequestCheckFileHandleMessage(this); + } + public ModifiableInteger getHashAlgorithmsLength() { return hashAlgorithmsLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java index 03f9582dd..40c939fa1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java @@ -29,6 +29,25 @@ public class SftpRequestCheckFileNameMessage private ModifiableLong length; private ModifiableInteger blockSize; + public SftpRequestCheckFileNameMessage() { + super(); + } + + public SftpRequestCheckFileNameMessage(SftpRequestCheckFileNameMessage other) { + super(other); + hashAlgorithmsLength = + other.hashAlgorithmsLength != null ? other.hashAlgorithmsLength.createCopy() : null; + hashAlgorithms = other.hashAlgorithms != null ? other.hashAlgorithms.createCopy() : null; + startOffset = other.startOffset != null ? other.startOffset.createCopy() : null; + length = other.length != null ? other.length.createCopy() : null; + blockSize = other.blockSize != null ? other.blockSize.createCopy() : null; + } + + @Override + public SftpRequestCheckFileNameMessage createCopy() { + return new SftpRequestCheckFileNameMessage(this); + } + public ModifiableInteger getHashAlgorithmsLength() { return hashAlgorithmsLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java index 73b853f1a..3b78acec8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java @@ -26,6 +26,25 @@ public class SftpRequestCopyDataMessage private ModifiableByteArray writeToHandle; private ModifiableLong writeToOffset; + public SftpRequestCopyDataMessage() { + super(); + } + + public SftpRequestCopyDataMessage(SftpRequestCopyDataMessage other) { + super(other); + readFromOffset = other.readFromOffset != null ? other.readFromOffset.createCopy() : null; + readDataLength = other.readDataLength != null ? other.readDataLength.createCopy() : null; + writeToHandleLength = + other.writeToHandleLength != null ? other.writeToHandleLength.createCopy() : null; + writeToHandle = other.writeToHandle != null ? other.writeToHandle.createCopy() : null; + writeToOffset = other.writeToOffset != null ? other.writeToOffset.createCopy() : null; + } + + @Override + public SftpRequestCopyDataMessage createCopy() { + return new SftpRequestCopyDataMessage(this); + } + public ModifiableLong getReadFromOffset() { return readFromOffset; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java index 0116526fd..47f1af398 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java @@ -26,6 +26,26 @@ public class SftpRequestCopyFileMessage private ModifiableString destinationPath; private ModifiableByte overwriteDestination; + public SftpRequestCopyFileMessage() { + super(); + } + + public SftpRequestCopyFileMessage(SftpRequestCopyFileMessage other) { + super(other); + destinationPathLength = + other.destinationPathLength != null + ? other.destinationPathLength.createCopy() + : null; + destinationPath = other.destinationPath != null ? other.destinationPath.createCopy() : null; + overwriteDestination = + other.overwriteDestination != null ? other.overwriteDestination.createCopy() : null; + } + + @Override + public SftpRequestCopyFileMessage createCopy() { + return new SftpRequestCopyFileMessage(this); + } + public ModifiableByte getOverwriteDestination() { return overwriteDestination; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExpandPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExpandPathMessage.java index eaa2b292c..975f80149 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExpandPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExpandPathMessage.java @@ -13,6 +13,19 @@ public class SftpRequestExpandPathMessage extends SftpRequestExtendedWithPathMessage { + public SftpRequestExpandPathMessage() { + super(); + } + + public SftpRequestExpandPathMessage(SftpRequestExpandPathMessage other) { + super(other); + } + + @Override + public SftpRequestExpandPathMessage createCopy() { + return new SftpRequestExpandPathMessage(this); + } + @Override public SftpRequestExpandPathMessageHandler getHandler(SshContext context) { return new SftpRequestExpandPathMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedMessage.java index 89d7a83fa..e895e989f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedMessage.java @@ -21,6 +21,20 @@ public abstract class SftpRequestExtendedMessage other) { + super(other); + extendedRequestName = + other.extendedRequestName != null ? other.extendedRequestName.createCopy() : null; + extendedRequestNameLength = + other.extendedRequestNameLength != null + ? other.extendedRequestNameLength.createCopy() + : null; + } + public ModifiableInteger getExtendedRequestNameLength() { return extendedRequestNameLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithHandleMessage.java index 10a2c8217..ae8dcd7d0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithHandleMessage.java @@ -19,6 +19,16 @@ public abstract class SftpRequestExtendedWithHandleMessage< private ModifiableInteger handleLength; private ModifiableByteArray handle; + protected SftpRequestExtendedWithHandleMessage() { + super(); + } + + protected SftpRequestExtendedWithHandleMessage(SftpRequestExtendedWithHandleMessage other) { + super(other); + handleLength = other.handleLength != null ? other.handleLength.createCopy() : null; + handle = other.handle != null ? other.handle.createCopy() : null; + } + public ModifiableInteger getHandleLength() { return handleLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java index 03519a526..f73bde2a8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java @@ -20,6 +20,16 @@ public abstract class SftpRequestExtendedWithPathMessage< private ModifiableInteger pathLength; private ModifiableString path; + protected SftpRequestExtendedWithPathMessage() { + super(); + } + + protected SftpRequestExtendedWithPathMessage(SftpRequestExtendedWithPathMessage other) { + super(other); + pathLength = other.pathLength != null ? other.pathLength.createCopy() : null; + path = other.path != null ? other.path.createCopy() : null; + } + public ModifiableInteger getPathLength() { return pathLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileStatVfsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileStatVfsMessage.java index 85843601b..be5bf8e93 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileStatVfsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileStatVfsMessage.java @@ -13,6 +13,19 @@ public class SftpRequestFileStatVfsMessage extends SftpRequestExtendedWithHandleMessage { + public SftpRequestFileStatVfsMessage() { + super(); + } + + public SftpRequestFileStatVfsMessage(SftpRequestFileStatVfsMessage other) { + super(other); + } + + @Override + public SftpRequestFileStatVfsMessage createCopy() { + return new SftpRequestFileStatVfsMessage(this); + } + @Override public SftpRequestFileStatVfsMessageHandler getHandler(SshContext context) { return new SftpRequestFileStatVfsMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileSyncMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileSyncMessage.java index b025e5b0a..5f92c74a4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileSyncMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileSyncMessage.java @@ -13,6 +13,19 @@ public class SftpRequestFileSyncMessage extends SftpRequestExtendedWithHandleMessage { + public SftpRequestFileSyncMessage() { + super(); + } + + public SftpRequestFileSyncMessage(SftpRequestFileSyncMessage other) { + super(other); + } + + @Override + public SftpRequestFileSyncMessage createCopy() { + return new SftpRequestFileSyncMessage(this); + } + @Override public SftpRequestFileSyncMessageHandler getHandler(SshContext context) { return new SftpRequestFileSyncMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestGetTempFolderMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestGetTempFolderMessage.java index 99c3fbbb0..9f164d224 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestGetTempFolderMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestGetTempFolderMessage.java @@ -13,6 +13,19 @@ public class SftpRequestGetTempFolderMessage extends SftpRequestExtendedMessage { + public SftpRequestGetTempFolderMessage() { + super(); + } + + public SftpRequestGetTempFolderMessage(SftpRequestGetTempFolderMessage other) { + super(other); + } + + @Override + public SftpRequestGetTempFolderMessage createCopy() { + return new SftpRequestGetTempFolderMessage(this); + } + @Override public SftpRequestGetTempFolderMessageHandler getHandler(SshContext context) { return new SftpRequestGetTempFolderMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java index f44cafa41..d969f17a1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java @@ -23,6 +23,21 @@ public class SftpRequestHardlinkMessage private ModifiableInteger newPathLength; private ModifiableString newPath; + public SftpRequestHardlinkMessage() { + super(); + } + + public SftpRequestHardlinkMessage(SftpRequestHardlinkMessage other) { + super(other); + newPathLength = other.newPathLength != null ? other.newPathLength.createCopy() : null; + newPath = other.newPath != null ? other.newPath.createCopy() : null; + } + + @Override + public SftpRequestHardlinkMessage createCopy() { + return new SftpRequestHardlinkMessage(this); + } + public ModifiableInteger getNewPathLength() { return newPathLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java index 7ad6fb730..5eea9699e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java @@ -21,6 +21,21 @@ public class SftpRequestHomeDirectoryMessage private ModifiableInteger usernameLength; private ModifiableString username; + public SftpRequestHomeDirectoryMessage() { + super(); + } + + public SftpRequestHomeDirectoryMessage(SftpRequestHomeDirectoryMessage other) { + super(other); + usernameLength = other.usernameLength != null ? other.usernameLength.createCopy() : null; + username = other.username != null ? other.username.createCopy() : null; + } + + @Override + public SftpRequestHomeDirectoryMessage createCopy() { + return new SftpRequestHomeDirectoryMessage(this); + } + public ModifiableInteger getUsernameLength() { return usernameLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLimitsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLimitsMessage.java index 24b564603..efb69eb3f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLimitsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLimitsMessage.java @@ -12,6 +12,19 @@ public class SftpRequestLimitsMessage extends SftpRequestExtendedMessage { + public SftpRequestLimitsMessage() { + super(); + } + + public SftpRequestLimitsMessage(SftpRequestLimitsMessage other) { + super(other); + } + + @Override + public SftpRequestLimitsMessage createCopy() { + return new SftpRequestLimitsMessage(this); + } + @Override public SftpRequestLimitsMessageHandler getHandler(SshContext context) { return new SftpRequestLimitsMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java index c4bf58a0e..04c95ddad 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java @@ -19,6 +19,20 @@ public class SftpRequestLinkSetStatMessage @HoldsModifiableVariable private SftpFileAttributes attributes = new SftpFileAttributes(); + public SftpRequestLinkSetStatMessage() { + super(); + } + + public SftpRequestLinkSetStatMessage(SftpRequestLinkSetStatMessage other) { + super(other); + attributes = other.attributes != null ? other.attributes.createCopy() : null; + } + + @Override + public SftpRequestLinkSetStatMessage createCopy() { + return new SftpRequestLinkSetStatMessage(this); + } + public SftpFileAttributes getAttributes() { return attributes; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestMakeTempFolderMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestMakeTempFolderMessage.java index 06eb0924c..c3039b8d5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestMakeTempFolderMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestMakeTempFolderMessage.java @@ -13,6 +13,19 @@ public class SftpRequestMakeTempFolderMessage extends SftpRequestExtendedMessage { + public SftpRequestMakeTempFolderMessage() { + super(); + } + + public SftpRequestMakeTempFolderMessage(SftpRequestMakeTempFolderMessage other) { + super(other); + } + + @Override + public SftpRequestMakeTempFolderMessage createCopy() { + return new SftpRequestMakeTempFolderMessage(this); + } + @Override public SftpRequestMakeTempFolderMessageHandler getHandler(SshContext context) { return new SftpRequestMakeTempFolderMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java index b4c1c3287..30f015f46 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java @@ -23,6 +23,21 @@ public class SftpRequestPosixRenameMessage private ModifiableInteger newPathLength; private ModifiableString newPath; + public SftpRequestPosixRenameMessage() { + super(); + } + + public SftpRequestPosixRenameMessage(SftpRequestPosixRenameMessage other) { + super(other); + newPathLength = other.newPathLength != null ? other.newPathLength.createCopy() : null; + newPath = other.newPath != null ? other.newPath.createCopy() : null; + } + + @Override + public SftpRequestPosixRenameMessage createCopy() { + return new SftpRequestPosixRenameMessage(this); + } + public ModifiableInteger getNewPathLength() { return newPathLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestSpaceAvailableMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestSpaceAvailableMessage.java index 9c82d85e4..deb641044 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestSpaceAvailableMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestSpaceAvailableMessage.java @@ -13,6 +13,19 @@ public class SftpRequestSpaceAvailableMessage extends SftpRequestExtendedWithPathMessage { + public SftpRequestSpaceAvailableMessage() { + super(); + } + + public SftpRequestSpaceAvailableMessage(SftpRequestSpaceAvailableMessage other) { + super(other); + } + + @Override + public SftpRequestSpaceAvailableMessage createCopy() { + return new SftpRequestSpaceAvailableMessage(this); + } + @Override public SftpRequestSpaceAvailableMessageHandler getHandler(SshContext context) { return new SftpRequestSpaceAvailableMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestStatVfsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestStatVfsMessage.java index 425f24c49..ddf8cef35 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestStatVfsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestStatVfsMessage.java @@ -13,6 +13,19 @@ public class SftpRequestStatVfsMessage extends SftpRequestExtendedWithPathMessage { + public SftpRequestStatVfsMessage() { + super(); + } + + public SftpRequestStatVfsMessage(SftpRequestStatVfsMessage other) { + super(other); + } + + @Override + public SftpRequestStatVfsMessage createCopy() { + return new SftpRequestStatVfsMessage(this); + } + @Override public SftpRequestStatVfsMessageHandler getHandler(SshContext context) { return new SftpRequestStatVfsMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java index 147a39a84..0b7e1a814 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java @@ -17,6 +17,20 @@ public class SftpRequestTextSeekMessage private ModifiableLong lineNumber; + public SftpRequestTextSeekMessage() { + super(); + } + + public SftpRequestTextSeekMessage(SftpRequestTextSeekMessage other) { + super(other); + lineNumber = other.lineNumber != null ? other.lineNumber.createCopy() : null; + } + + @Override + public SftpRequestTextSeekMessage createCopy() { + return new SftpRequestTextSeekMessage(this); + } + public ModifiableLong getLineNumber() { return lineNumber; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java index dc24a3310..4089a3cc5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java @@ -17,6 +17,21 @@ public class SftpRequestUnknownMessage private ModifiableByteArray requestSpecificData; + public SftpRequestUnknownMessage() { + super(); + } + + public SftpRequestUnknownMessage(SftpRequestUnknownMessage other) { + super(other); + requestSpecificData = + other.requestSpecificData != null ? other.requestSpecificData.createCopy() : null; + } + + @Override + public SftpRequestUnknownMessage createCopy() { + return new SftpRequestUnknownMessage(this); + } + public ModifiableByteArray getRequestSpecificData() { return requestSpecificData; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java index b4896eaca..f9b2743e0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java @@ -29,14 +29,41 @@ public class SftpRequestUsersGroupsByIdMessage @HoldsModifiableVariable @XmlElementWrapper @XmlElements(@XmlElement(type = SftpIdEntry.class, name = "SftpIdEntry")) - private List userIds = new ArrayList<>(); + private ArrayList userIds = new ArrayList<>(); private ModifiableInteger groupIdsLength; @HoldsModifiableVariable @XmlElementWrapper @XmlElements(@XmlElement(type = SftpIdEntry.class, name = "SftpIdEntry")) - private List groupIds = new ArrayList<>(); + private ArrayList groupIds = new ArrayList<>(); + + public SftpRequestUsersGroupsByIdMessage() { + super(); + } + + public SftpRequestUsersGroupsByIdMessage(SftpRequestUsersGroupsByIdMessage other) { + super(other); + userIdsLength = other.userIdsLength != null ? other.userIdsLength.createCopy() : null; + if (other.userIds != null) { + userIds = new ArrayList<>(); + for (SftpIdEntry item : other.userIds) { + userIds.add(item != null ? item.createCopy() : null); + } + } + groupIdsLength = other.groupIdsLength != null ? other.groupIdsLength.createCopy() : null; + if (other.groupIds != null) { + groupIds = new ArrayList<>(); + for (SftpIdEntry item : other.groupIds) { + groupIds.add(item != null ? item.createCopy() : null); + } + } + } + + @Override + public SftpRequestUsersGroupsByIdMessage createCopy() { + return new SftpRequestUsersGroupsByIdMessage(this); + } public ModifiableInteger getUserIdsLength() { return userIdsLength; @@ -60,7 +87,7 @@ public void setSoftlyUserIdsLength(int userIdsLength, Config config) { } } - public List getUserIds() { + public ArrayList getUserIds() { return userIds; } @@ -68,12 +95,15 @@ public List getUserIdsDirect() { return userIds.stream().map(SftpIdEntry::getId).collect(Collectors.toList()); } - public void setUserIds(List userIds) { + public void setUserIds(ArrayList userIds) { this.userIds = userIds; } public void setUserIdsDirect(List userIds) { - this.userIds = userIds.stream().map(SftpIdEntry::new).collect(Collectors.toList()); + this.userIds = + userIds.stream() + .map(SftpIdEntry::new) + .collect(Collectors.toCollection(ArrayList::new)); } public void addUserId(int userId) { @@ -110,7 +140,7 @@ public void setSoftlyGroupIdsLength(int groupIdsLength, Config config) { } } - public List getGroupIds() { + public ArrayList getGroupIds() { return groupIds; } @@ -118,12 +148,15 @@ public List getGroupIdsDirect() { return groupIds.stream().map(SftpIdEntry::getId).collect(Collectors.toList()); } - public void setGroupIds(List groupIds) { + public void setGroupIds(ArrayList groupIds) { this.groupIds = groupIds; } public void setGroupIdsDirect(List groupIds) { - this.groupIds = groupIds.stream().map(SftpIdEntry::new).collect(Collectors.toList()); + this.groupIds = + groupIds.stream() + .map(SftpIdEntry::new) + .collect(Collectors.toCollection(ArrayList::new)); } public void addGroupId(int groupId) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestVendorIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestVendorIdMessage.java index f7840619c..ddb6e739e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestVendorIdMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestVendorIdMessage.java @@ -27,6 +27,30 @@ public class SftpRequestVendorIdMessage private ModifiableString productVersion; private ModifiableLong productBuildNumber; + public SftpRequestVendorIdMessage() { + super(); + } + + public SftpRequestVendorIdMessage(SftpRequestVendorIdMessage other) { + super(other); + vendorNameLength = + other.vendorNameLength != null ? other.vendorNameLength.createCopy() : null; + vendorName = other.vendorName != null ? other.vendorName.createCopy() : null; + productNameLength = + other.productNameLength != null ? other.productNameLength.createCopy() : null; + productName = other.productName != null ? other.productName.createCopy() : null; + productVersionLength = + other.productVersionLength != null ? other.productVersionLength.createCopy() : null; + productVersion = other.productVersion != null ? other.productVersion.createCopy() : null; + productBuildNumber = + other.productBuildNumber != null ? other.productBuildNumber.createCopy() : null; + } + + @Override + public SftpRequestVendorIdMessage createCopy() { + return new SftpRequestVendorIdMessage(this); + } + public ModifiableInteger getVendorNameLength() { return vendorNameLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java index 3f5d9d871..dc14e7252 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java @@ -24,6 +24,26 @@ public class SftpResponseCheckFileMessage private ModifiableString usedHashAlgorithm; private ModifiableByteArray hash; + public SftpResponseCheckFileMessage() { + super(); + } + + public SftpResponseCheckFileMessage(SftpResponseCheckFileMessage other) { + super(other); + usedHashAlgorithmLength = + other.usedHashAlgorithmLength != null + ? other.usedHashAlgorithmLength.createCopy() + : null; + usedHashAlgorithm = + other.usedHashAlgorithm != null ? other.usedHashAlgorithm.createCopy() : null; + hash = other.hash != null ? other.hash.createCopy() : null; + } + + @Override + public SftpResponseCheckFileMessage createCopy() { + return new SftpResponseCheckFileMessage(this); + } + public ModifiableInteger getUsedHashAlgorithmLength() { return usedHashAlgorithmLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java index af2b89982..c6a44b205 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java @@ -20,6 +20,27 @@ public class SftpResponseLimitsMessage extends SftpResponseMessage { private ModifiableByteArray responseSpecificData; + public SftpResponseUnknownMessage() { + super(); + } + + public SftpResponseUnknownMessage(SftpResponseUnknownMessage other) { + super(other); + responseSpecificData = + other.responseSpecificData != null ? other.responseSpecificData.createCopy() : null; + } + + @Override + public SftpResponseUnknownMessage createCopy() { + return new SftpResponseUnknownMessage(this); + } + public ModifiableByteArray getResponseSpecificData() { return responseSpecificData; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java index 8346b1f4c..d054a9134 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java @@ -31,14 +31,42 @@ public class SftpResponseUsersGroupsByIdMessage @HoldsModifiableVariable @XmlElementWrapper @XmlElements(@XmlElement(type = SftpNameEntry.class, name = "SftpNameEntry")) - private List userNames = new ArrayList<>(); + private ArrayList userNames = new ArrayList<>(); private ModifiableInteger groupNamesLength; @HoldsModifiableVariable @XmlElementWrapper @XmlElements(@XmlElement(type = SftpNameEntry.class, name = "SftpNameEntry")) - private List groupNames = new ArrayList<>(); + private ArrayList groupNames = new ArrayList<>(); + + public SftpResponseUsersGroupsByIdMessage() { + super(); + } + + public SftpResponseUsersGroupsByIdMessage(SftpResponseUsersGroupsByIdMessage other) { + super(other); + userNamesLength = other.userNamesLength != null ? other.userNamesLength.createCopy() : null; + if (other.userNames != null) { + userNames = new ArrayList<>(); + for (SftpNameEntry item : other.userNames) { + userNames.add(item != null ? item.createCopy() : null); + } + } + groupNamesLength = + other.groupNamesLength != null ? other.groupNamesLength.createCopy() : null; + if (other.groupNames != null) { + groupNames = new ArrayList<>(); + for (SftpNameEntry item : other.groupNames) { + groupNames.add(item != null ? item.createCopy() : null); + } + } + } + + @Override + public SftpResponseUsersGroupsByIdMessage createCopy() { + return new SftpResponseUsersGroupsByIdMessage(this); + } public ModifiableInteger getUserNamesLength() { return userNamesLength; @@ -62,7 +90,7 @@ public void setSoftlyUserNamesLength(int userNamesLength, Config config) { } } - public List getUserNames() { + public ArrayList getUserNames() { return userNames; } @@ -70,13 +98,15 @@ public List getUserNamesDirect() { return userNames.stream().map(SftpNameEntry::getName).collect(Collectors.toList()); } - public void setUserNames(List userNames) { + public void setUserNames(ArrayList userNames) { this.userNames = userNames; } public void setUserNamesDirect(List userNames) { - this.userNames = userNames.stream().map(SftpNameEntry::new).collect(Collectors.toList()); - ; + this.userNames = + userNames.stream() + .map(SftpNameEntry::new) + .collect(Collectors.toCollection(ArrayList::new)); } public void addUserName(SftpNameEntry userName) { @@ -114,7 +144,7 @@ public void setSoftlyGroupNamesLength(int groupNamesLength, Config config) { } } - public List getGroupNames() { + public ArrayList getGroupNames() { return groupNames; } @@ -122,14 +152,15 @@ public List getGroupNamesDirect() { return groupNames.stream().map(SftpNameEntry::getName).collect(Collectors.toList()); } - public void setGroupNames(List groupNames) { + public void setGroupNames(ArrayList groupNames) { this.groupNames = groupNames; } public void setGroupNamesDirect(List groupNames) { - this.groupNames = groupNames.stream().map(SftpNameEntry::new).collect(Collectors.toList()); - ; - ; + this.groupNames = + groupNames.stream() + .map(SftpNameEntry::new) + .collect(Collectors.toCollection(ArrayList::new)); } public void addGroupName(SftpNameEntry groupName) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java index b10a3d183..3f7f86fbd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java @@ -27,6 +27,19 @@ public abstract class SftpAbstractExtension> protected ModifiableString name; + protected SftpAbstractExtension() { + super(); + } + + protected SftpAbstractExtension(SftpAbstractExtension other) { + super(other); + nameLength = other.nameLength != null ? other.nameLength.createCopy() : null; + name = other.name != null ? other.name.createCopy() : null; + } + + @Override + public abstract SftpAbstractExtension createCopy(); + public ModifiableInteger getNameLength() { return nameLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCheckFile.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCheckFile.java index 8ef3b3a8a..3b0247a16 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCheckFile.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCheckFile.java @@ -12,6 +12,19 @@ public class SftpExtensionCheckFile extends SftpExtensionWithVersion { + public SftpExtensionCheckFile() { + super(); + } + + public SftpExtensionCheckFile(SftpExtensionCheckFile other) { + super(other); + } + + @Override + public SftpExtensionCheckFile createCopy() { + return new SftpExtensionCheckFile(this); + } + @Override public SftpExtensionCheckFileHandler getHandler(SshContext context) { return new SftpExtensionCheckFileHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyData.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyData.java index ac15cd9de..271980e11 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyData.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyData.java @@ -12,6 +12,19 @@ public class SftpExtensionCopyData extends SftpExtensionWithVersion { + public SftpExtensionCopyData() { + super(); + } + + public SftpExtensionCopyData(SftpExtensionCopyData other) { + super(other); + } + + @Override + public SftpExtensionCopyData createCopy() { + return new SftpExtensionCopyData(this); + } + @Override public SftpExtensionCopyDataHandler getHandler(SshContext context) { return new SftpExtensionCopyDataHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyFile.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyFile.java index 2218047a1..800890fd8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyFile.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyFile.java @@ -12,6 +12,19 @@ public class SftpExtensionCopyFile extends SftpExtensionWithVersion { + public SftpExtensionCopyFile() { + super(); + } + + public SftpExtensionCopyFile(SftpExtensionCopyFile other) { + super(other); + } + + @Override + public SftpExtensionCopyFile createCopy() { + return new SftpExtensionCopyFile(this); + } + @Override public SftpExtensionCopyFileHandler getHandler(SshContext context) { return new SftpExtensionCopyFileHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionExpandPath.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionExpandPath.java index 5e4013e41..3e0c4f5ea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionExpandPath.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionExpandPath.java @@ -12,6 +12,19 @@ public class SftpExtensionExpandPath extends SftpExtensionWithVersion { + public SftpExtensionExpandPath() { + super(); + } + + public SftpExtensionExpandPath(SftpExtensionExpandPath other) { + super(other); + } + + @Override + public SftpExtensionExpandPath createCopy() { + return new SftpExtensionExpandPath(this); + } + @Override public SftpExtensionExpandPathHandler getHandler(SshContext context) { return new SftpExtensionExpandPathHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileStatVfs.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileStatVfs.java index b442a92fe..446970419 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileStatVfs.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileStatVfs.java @@ -12,6 +12,19 @@ public class SftpExtensionFileStatVfs extends SftpExtensionWithVersion { + public SftpExtensionFileStatVfs() { + super(); + } + + public SftpExtensionFileStatVfs(SftpExtensionFileStatVfs other) { + super(other); + } + + @Override + public SftpExtensionFileStatVfs createCopy() { + return new SftpExtensionFileStatVfs(this); + } + @Override public SftpExtensionFileStatVfsHandler getHandler(SshContext context) { return new SftpExtensionFileStatVfsHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileSync.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileSync.java index 3dd98f2ad..608c223e8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileSync.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileSync.java @@ -12,6 +12,19 @@ public class SftpExtensionFileSync extends SftpExtensionWithVersion { + public SftpExtensionFileSync() { + super(); + } + + public SftpExtensionFileSync(SftpExtensionFileSync other) { + super(other); + } + + @Override + public SftpExtensionFileSync createCopy() { + return new SftpExtensionFileSync(this); + } + @Override public SftpExtensionFileSyncHandler getHandler(SshContext context) { return new SftpExtensionFileSyncHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionGetTempFolder.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionGetTempFolder.java index fd9b431cc..44d356fa4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionGetTempFolder.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionGetTempFolder.java @@ -13,6 +13,19 @@ public class SftpExtensionGetTempFolder extends SftpExtensionWithVersion { + public SftpExtensionGetTempFolder() { + super(); + } + + public SftpExtensionGetTempFolder(SftpExtensionGetTempFolder other) { + super(other); + } + + @Override + public SftpExtensionGetTempFolder createCopy() { + return new SftpExtensionGetTempFolder(this); + } + @Override public SftpExtensionGetTempFolderHandler getHandler(SshContext context) { return new SftpExtensionGetTempFolderHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHardlink.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHardlink.java index 52fbd0fb6..d83d2caa8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHardlink.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHardlink.java @@ -12,6 +12,19 @@ public class SftpExtensionHardlink extends SftpExtensionWithVersion { + public SftpExtensionHardlink() { + super(); + } + + public SftpExtensionHardlink(SftpExtensionHardlink other) { + super(other); + } + + @Override + public SftpExtensionHardlink createCopy() { + return new SftpExtensionHardlink(this); + } + @Override public SftpExtensionHardlinkHandler getHandler(SshContext context) { return new SftpExtensionHardlinkHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHomeDirectory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHomeDirectory.java index d9e752b1d..0185adbf9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHomeDirectory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHomeDirectory.java @@ -13,6 +13,19 @@ public class SftpExtensionHomeDirectory extends SftpExtensionWithVersion { + public SftpExtensionHomeDirectory() { + super(); + } + + public SftpExtensionHomeDirectory(SftpExtensionHomeDirectory other) { + super(other); + } + + @Override + public SftpExtensionHomeDirectory createCopy() { + return new SftpExtensionHomeDirectory(this); + } + @Override public SftpExtensionHomeDirectoryHandler getHandler(SshContext context) { return new SftpExtensionHomeDirectoryHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLimits.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLimits.java index 1e7a96a3a..2496a9855 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLimits.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLimits.java @@ -12,6 +12,19 @@ public class SftpExtensionLimits extends SftpExtensionWithVersion { + public SftpExtensionLimits() { + super(); + } + + public SftpExtensionLimits(SftpExtensionLimits other) { + super(other); + } + + @Override + public SftpExtensionLimits createCopy() { + return new SftpExtensionLimits(this); + } + @Override public SftpExtensionLimitsHandler getHandler(SshContext context) { return new SftpExtensionLimitsHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLinkSetStat.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLinkSetStat.java index fe70edfa8..5e6c06f4b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLinkSetStat.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLinkSetStat.java @@ -12,6 +12,19 @@ public class SftpExtensionLinkSetStat extends SftpExtensionWithVersion { + public SftpExtensionLinkSetStat() { + super(); + } + + public SftpExtensionLinkSetStat(SftpExtensionLinkSetStat other) { + super(other); + } + + @Override + public SftpExtensionLinkSetStat createCopy() { + return new SftpExtensionLinkSetStat(this); + } + @Override public SftpExtensionLinkSetStatHandler getHandler(SshContext context) { return new SftpExtensionLinkSetStatHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionMakeTempFolder.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionMakeTempFolder.java index e68cbe29a..ff44fb518 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionMakeTempFolder.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionMakeTempFolder.java @@ -13,6 +13,19 @@ public class SftpExtensionMakeTempFolder extends SftpExtensionWithVersion { + public SftpExtensionMakeTempFolder() { + super(); + } + + public SftpExtensionMakeTempFolder(SftpExtensionMakeTempFolder other) { + super(other); + } + + @Override + public SftpExtensionMakeTempFolder createCopy() { + return new SftpExtensionMakeTempFolder(this); + } + @Override public SftpExtensionMakeTempFolderHandler getHandler(SshContext context) { return new SftpExtensionMakeTempFolderHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java index c5b4a334f..5611a5e99 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java @@ -20,6 +20,25 @@ public class SftpExtensionNewline extends SftpAbstractExtension { + public SftpExtensionPosixRename() { + super(); + } + + public SftpExtensionPosixRename(SftpExtensionPosixRename other) { + super(other); + } + + @Override + public SftpExtensionPosixRename createCopy() { + return new SftpExtensionPosixRename(this); + } + @Override public SftpExtensionPosixRenameHandler getHandler(SshContext context) { return new SftpExtensionPosixRenameHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionSpaceAvailable.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionSpaceAvailable.java index 4d89ae6a4..5467d048b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionSpaceAvailable.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionSpaceAvailable.java @@ -13,6 +13,19 @@ public class SftpExtensionSpaceAvailable extends SftpExtensionWithVersion { + public SftpExtensionSpaceAvailable() { + super(); + } + + public SftpExtensionSpaceAvailable(SftpExtensionSpaceAvailable other) { + super(other); + } + + @Override + public SftpExtensionSpaceAvailable createCopy() { + return new SftpExtensionSpaceAvailable(this); + } + @Override public SftpExtensionSpaceAvailableHandler getHandler(SshContext context) { return new SftpExtensionSpaceAvailableHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionStatVfs.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionStatVfs.java index 0c5606e55..0b0609ddc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionStatVfs.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionStatVfs.java @@ -12,6 +12,19 @@ public class SftpExtensionStatVfs extends SftpExtensionWithVersion { + public SftpExtensionStatVfs() { + super(); + } + + public SftpExtensionStatVfs(SftpExtensionStatVfs other) { + super(other); + } + + @Override + public SftpExtensionStatVfs createCopy() { + return new SftpExtensionStatVfs(this); + } + @Override public SftpExtensionStatVfsHandler getHandler(SshContext context) { return new SftpExtensionStatVfsHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionTextSeek.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionTextSeek.java index a778afa76..dee2508f3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionTextSeek.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionTextSeek.java @@ -12,6 +12,19 @@ public class SftpExtensionTextSeek extends SftpExtensionWithVersion { + public SftpExtensionTextSeek() { + super(); + } + + public SftpExtensionTextSeek(SftpExtensionTextSeek other) { + super(other); + } + + @Override + public SftpExtensionTextSeek createCopy() { + return new SftpExtensionTextSeek(this); + } + @Override public SftpExtensionTextSeekHandler getHandler(SshContext context) { return new SftpExtensionTextSeekHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUnknown.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUnknown.java index 779a36427..75f4995bf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUnknown.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUnknown.java @@ -20,6 +20,21 @@ public class SftpExtensionUnknown extends SftpAbstractExtension { + public SftpExtensionUsersGroupsById() { + super(); + } + + public SftpExtensionUsersGroupsById(SftpExtensionUsersGroupsById other) { + super(other); + } + + @Override + public SftpExtensionUsersGroupsById createCopy() { + return new SftpExtensionUsersGroupsById(this); + } + @Override public SftpExtensionUsersGroupsByIdHandler getHandler(SshContext context) { return new SftpExtensionUsersGroupsByIdHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java index 7edeaa47c..5792b5670 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java @@ -27,6 +27,34 @@ public class SftpExtensionVendorId extends SftpAbstractExtension other) { + super(other); + version = other.version != null ? other.version.createCopy() : null; + versionLength = other.versionLength != null ? other.versionLength.createCopy() : null; + } + public ModifiableInteger getVersionLength() { return versionLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpAclEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpAclEntry.java index a2b7370fa..c4155850c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpAclEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpAclEntry.java @@ -30,6 +30,24 @@ public class SftpAclEntry extends ModifiableVariableHolder { private ModifiableString who; private ModifiableInteger whoLength; + public SftpAclEntry() { + super(); + } + + public SftpAclEntry(SftpAclEntry other) { + super(other); + type = other.type != null ? other.type.createCopy() : null; + flags = other.flags != null ? other.flags.createCopy() : null; + mask = other.mask != null ? other.mask.createCopy() : null; + who = other.who != null ? other.who.createCopy() : null; + whoLength = other.whoLength != null ? other.whoLength.createCopy() : null; + } + + @Override + public SftpAclEntry createCopy() { + return new SftpAclEntry(this); + } + public ModifiableInteger getType() { return type; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java index 9cb081bfc..c87cb111c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java @@ -40,7 +40,7 @@ public class SftpFileAttributes extends ModifiableVariableHolder { @XmlElementWrapper @XmlElements( @XmlElement(type = SftpFileExtendedAttribute.class, name = "SftpFileExtendedAttribute")) - private List extendedAttributes = new ArrayList<>(); + private ArrayList extendedAttributes = new ArrayList<>(); // SFTP V4 @@ -59,7 +59,48 @@ public class SftpFileAttributes extends ModifiableVariableHolder { @HoldsModifiableVariable @XmlElementWrapper @XmlElements(@XmlElement(type = SftpAclEntry.class, name = "SftpAclEntry")) - private List aclEntries = new ArrayList<>(); + private ArrayList aclEntries = new ArrayList<>(); + + public SftpFileAttributes() { + super(); + } + + public SftpFileAttributes(SftpFileAttributes other) { + super(other); + flags = other.flags != null ? other.flags.createCopy() : null; + size = other.size != null ? other.size.createCopy() : null; + userId = other.userId != null ? other.userId.createCopy() : null; + groupId = other.groupId != null ? other.groupId.createCopy() : null; + permissions = other.permissions != null ? other.permissions.createCopy() : null; + accessTime = other.accessTime != null ? other.accessTime.createCopy() : null; + modifyTime = other.modifyTime != null ? other.modifyTime.createCopy() : null; + extendedCount = other.extendedCount != null ? other.extendedCount.createCopy() : null; + if (other.extendedAttributes != null) { + extendedAttributes = new ArrayList<>(); + for (SftpFileExtendedAttribute item : other.extendedAttributes) { + extendedAttributes.add(item != null ? item.createCopy() : null); + } + } + type = other.type != null ? other.type.createCopy() : null; + ownerLength = other.ownerLength != null ? other.ownerLength.createCopy() : null; + owner = other.owner != null ? other.owner.createCopy() : null; + groupLength = other.groupLength != null ? other.groupLength.createCopy() : null; + group = other.group != null ? other.group.createCopy() : null; + createTime = other.createTime != null ? other.createTime.createCopy() : null; + aclLength = other.aclLength != null ? other.aclLength.createCopy() : null; + aclEntriesCount = other.aclEntriesCount != null ? other.aclEntriesCount.createCopy() : null; + if (other.aclEntries != null) { + aclEntries = new ArrayList<>(); + for (SftpAclEntry item : other.aclEntries) { + aclEntries.add(item != null ? item.createCopy() : null); + } + } + } + + @Override + public SftpFileAttributes createCopy() { + return new SftpFileAttributes(this); + } public ModifiableInteger getFlags() { return flags; @@ -253,12 +294,12 @@ public List getExtendedAttributes() { return extendedAttributes; } - public void setExtendedAttributes(List extendedAttributes) { + public void setExtendedAttributes(ArrayList extendedAttributes) { setExtendedAttributes(extendedAttributes, false); } public void setExtendedAttributes( - List extendedAttributes, boolean adjustLengthField) { + ArrayList extendedAttributes, boolean adjustLengthField) { if (adjustLengthField) { setExtendedCount(extendedAttributes.size()); } @@ -499,11 +540,11 @@ public List getAclEntries() { return aclEntries; } - public void setAclEntries(List aclEntries) { + public void setAclEntries(ArrayList aclEntries) { setAclEntries(aclEntries, false); } - public void setAclEntries(List aclEntries, boolean adjustLengthField) { + public void setAclEntries(ArrayList aclEntries, boolean adjustLengthField) { if (adjustLengthField) { setAclEntriesCount(aclEntries.size()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileExtendedAttribute.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileExtendedAttribute.java index 78a285d4c..fdad9dd5f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileExtendedAttribute.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileExtendedAttribute.java @@ -27,6 +27,23 @@ public class SftpFileExtendedAttribute extends ModifiableVariableHolder { private ModifiableInteger dataLength; private ModifiableByteArray data; + public SftpFileExtendedAttribute() { + super(); + } + + public SftpFileExtendedAttribute(SftpFileExtendedAttribute other) { + super(other); + typeLength = other.typeLength != null ? other.typeLength.createCopy() : null; + type = other.type != null ? other.type.createCopy() : null; + dataLength = other.dataLength != null ? other.dataLength.createCopy() : null; + data = other.data != null ? other.data.createCopy() : null; + } + + @Override + public SftpFileExtendedAttribute createCopy() { + return new SftpFileExtendedAttribute(this); + } + public ModifiableInteger getTypeLength() { return typeLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java index 8fe2a6fdf..b92b3cd7a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java @@ -30,6 +30,24 @@ public class SftpFileNameEntry extends ModifiableVariableHolder { @HoldsModifiableVariable private SftpFileAttributes attributes = new SftpFileAttributes(); + public SftpFileNameEntry() { + super(); + } + + public SftpFileNameEntry(SftpFileNameEntry other) { + super(other); + filenameLength = other.filenameLength != null ? other.filenameLength.createCopy() : null; + filename = other.filename != null ? other.filename.createCopy() : null; + longNameLength = other.longNameLength != null ? other.longNameLength.createCopy() : null; + longName = other.longName != null ? other.longName.createCopy() : null; + attributes = other.attributes != null ? other.attributes.createCopy() : null; + } + + @Override + public SftpFileNameEntry createCopy() { + return new SftpFileNameEntry(this); + } + public ModifiableInteger getFilenameLength() { return filenameLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java index ab68a7b76..6c029f576 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java @@ -20,6 +20,16 @@ public class SftpIdEntry extends ModifiableVariableHolder { private ModifiableInteger id; + public SftpIdEntry(SftpIdEntry other) { + super(other); + id = other.id != null ? other.id.createCopy() : null; + } + + @Override + public SftpIdEntry createCopy() { + return new SftpIdEntry(this); + } + public SftpIdEntry() { super(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java index 5c61871d7..a5f0db793 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java @@ -24,6 +24,17 @@ public class SftpNameEntry extends ModifiableVariableHolder { private ModifiableInteger nameLength; private ModifiableString name; + public SftpNameEntry(SftpNameEntry other) { + super(other); + nameLength = other.nameLength != null ? other.nameLength.createCopy() : null; + name = other.name != null ? other.name.createCopy() : null; + } + + @Override + public SftpNameEntry createCopy() { + return new SftpNameEntry(this); + } + public SftpNameEntry() { super(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestCloseMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestCloseMessage.java index da7e103a3..61ecb0f07 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestCloseMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestCloseMessage.java @@ -12,6 +12,19 @@ public class SftpRequestCloseMessage extends SftpRequestWithHandleMessage { + public SftpRequestCloseMessage() { + super(); + } + + public SftpRequestCloseMessage(SftpRequestCloseMessage other) { + super(other); + } + + @Override + public SftpRequestCloseMessage createCopy() { + return new SftpRequestCloseMessage(this); + } + @Override public SftpRequestCloseMessageHandler getHandler(SshContext context) { return new SftpRequestCloseMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java index 247ca7e11..e3993ae4e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java @@ -19,6 +19,20 @@ public class SftpRequestFileSetStatMessage @HoldsModifiableVariable private SftpFileAttributes attributes = new SftpFileAttributes(); + public SftpRequestFileSetStatMessage() { + super(); + } + + public SftpRequestFileSetStatMessage(SftpRequestFileSetStatMessage other) { + super(other); + attributes = other.attributes != null ? other.attributes.createCopy() : null; + } + + @Override + public SftpRequestFileSetStatMessage createCopy() { + return new SftpRequestFileSetStatMessage(this); + } + public SftpFileAttributes getAttributes() { return attributes; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java index 32330b1be..1146ead8b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java @@ -18,6 +18,20 @@ public class SftpRequestFileStatMessage private ModifiableInteger flags; + public SftpRequestFileStatMessage() { + super(); + } + + public SftpRequestFileStatMessage(SftpRequestFileStatMessage other) { + super(other); + flags = other.flags != null ? other.flags.createCopy() : null; + } + + @Override + public SftpRequestFileStatMessage createCopy() { + return new SftpRequestFileStatMessage(this); + } + public ModifiableInteger getFlags() { return flags; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestLinkStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestLinkStatMessage.java index a6a1af069..2dd82b7c3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestLinkStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestLinkStatMessage.java @@ -13,6 +13,19 @@ public class SftpRequestLinkStatMessage extends SftpRequestWithPathMessage { + public SftpRequestLinkStatMessage() { + super(); + } + + public SftpRequestLinkStatMessage(SftpRequestLinkStatMessage other) { + super(other); + } + + @Override + public SftpRequestLinkStatMessage createCopy() { + return new SftpRequestLinkStatMessage(this); + } + @Override public SftpRequestLinkStatMessageHandler getHandler(SshContext context) { return new SftpRequestLinkStatMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java index 7365984fc..4bd396aee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java @@ -19,6 +19,20 @@ public class SftpRequestMakeDirMessage @HoldsModifiableVariable private SftpFileAttributes attributes = new SftpFileAttributes(); + public SftpRequestMakeDirMessage() { + super(); + } + + public SftpRequestMakeDirMessage(SftpRequestMakeDirMessage other) { + super(other); + attributes = other.attributes != null ? other.attributes.createCopy() : null; + } + + @Override + public SftpRequestMakeDirMessage createCopy() { + return new SftpRequestMakeDirMessage(this); + } + public SftpFileAttributes getAttributes() { return attributes; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMessage.java index a12c0ebcc..8308e8ba4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMessage.java @@ -15,6 +15,15 @@ public abstract class SftpRequestMessage> extend private ModifiableInteger requestId; + protected SftpRequestMessage() { + super(); + } + + protected SftpRequestMessage(SftpRequestMessage other) { + super(other); + requestId = other.requestId != null ? other.requestId.createCopy() : null; + } + public ModifiableInteger getRequestId() { return requestId; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenDirMessage.java index 1db2d8b02..1d8658e22 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenDirMessage.java @@ -13,6 +13,19 @@ public class SftpRequestOpenDirMessage extends SftpRequestWithPathMessage { + public SftpRequestOpenDirMessage() { + super(); + } + + public SftpRequestOpenDirMessage(SftpRequestOpenDirMessage other) { + super(other); + } + + @Override + public SftpRequestOpenDirMessage createCopy() { + return new SftpRequestOpenDirMessage(this); + } + @Override public SftpRequestOpenDirMessageHandler getHandler(SshContext context) { return new SftpRequestOpenDirMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java index b27f29995..54b60864b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java @@ -25,6 +25,21 @@ public class SftpRequestOpenMessage extends SftpRequestWithPathMessage { + public SftpRequestReadDirMessage() { + super(); + } + + public SftpRequestReadDirMessage(SftpRequestReadDirMessage other) { + super(other); + } + + @Override + public SftpRequestReadDirMessage createCopy() { + return new SftpRequestReadDirMessage(this); + } + @Override public SftpRequestReadDirMessageHandler getHandler(SshContext context) { return new SftpRequestReadDirMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadLinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadLinkMessage.java index 19b923f51..875a0c305 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadLinkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadLinkMessage.java @@ -13,6 +13,19 @@ public class SftpRequestReadLinkMessage extends SftpRequestWithPathMessage { + public SftpRequestReadLinkMessage() { + super(); + } + + public SftpRequestReadLinkMessage(SftpRequestReadLinkMessage other) { + super(other); + } + + @Override + public SftpRequestReadLinkMessage createCopy() { + return new SftpRequestReadLinkMessage(this); + } + @Override public SftpRequestReadLinkMessageHandler getHandler(SshContext context) { return new SftpRequestReadLinkMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadMessage.java index e19e5ee20..fb9b6cf7c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadMessage.java @@ -18,6 +18,21 @@ public class SftpRequestReadMessage extends SftpRequestWithHandleMessage { + public SftpRequestRealPathMessage() { + super(); + } + + public SftpRequestRealPathMessage(SftpRequestRealPathMessage other) { + super(other); + } + + @Override + public SftpRequestRealPathMessage createCopy() { + return new SftpRequestRealPathMessage(this); + } + @Override public SftpRequestRealPathMessageHandler getHandler(SshContext context) { return new SftpRequestRealPathMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveMessage.java index 06d6abaee..a1cd7ccdc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveMessage.java @@ -14,6 +14,19 @@ public class SftpRequestRemoveMessage extends SftpRequestWithPathMessage { + public SftpRequestRmdirMessage() { + super(); + } + + public SftpRequestRmdirMessage(SftpRequestRmdirMessage other) { + super(other); + } + + @Override + public SftpRequestRmdirMessage createCopy() { + return new SftpRequestRmdirMessage(this); + } + @Override public SftpRequestRemoveDirMessageHandler getHandler(SshContext context) { return new SftpRequestRemoveDirMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java index 4aed05ea6..caf3f55fa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java @@ -19,6 +19,20 @@ public class SftpRequestSetStatMessage @HoldsModifiableVariable private SftpFileAttributes attributes = new SftpFileAttributes(); + public SftpRequestSetStatMessage() { + super(); + } + + public SftpRequestSetStatMessage(SftpRequestSetStatMessage other) { + super(other); + attributes = other.attributes != null ? other.attributes.createCopy() : null; + } + + @Override + public SftpRequestSetStatMessage createCopy() { + return new SftpRequestSetStatMessage(this); + } + public SftpFileAttributes getAttributes() { return attributes; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java index 41e1cc957..94c3be96b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java @@ -17,6 +17,20 @@ public class SftpRequestStatMessage extends SftpRequestWithPathMessage other) { + super(other); + handle = other.handle != null ? other.handle.createCopy() : null; + handleLength = other.handleLength != null ? other.handleLength.createCopy() : null; + } + public ModifiableInteger getHandleLength() { return handleLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java index 4da55b964..f3fc9ce9b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java @@ -19,6 +19,16 @@ public abstract class SftpRequestWithPathMessage other) { + super(other); + path = other.path != null ? other.path.createCopy() : null; + pathLength = other.pathLength != null ? other.pathLength.createCopy() : null; + } + public ModifiableInteger getPathLength() { return pathLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWriteMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWriteMessage.java index 90599f97d..fcd8675c4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWriteMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWriteMessage.java @@ -21,6 +21,22 @@ public class SftpRequestWriteMessage extends SftpRequestWithHandleMessage> exte private ModifiableInteger requestId; + protected SftpResponseMessage() { + super(); + } + + protected SftpResponseMessage(SftpResponseMessage other) { + super(other); + requestId = other.requestId != null ? other.requestId.createCopy() : null; + } + public ModifiableInteger getRequestId() { return requestId; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java index 33e9a4a2e..18fdafa94 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java @@ -27,8 +27,29 @@ public class SftpResponseNameMessage extends SftpResponseMessage nameEntries = new ArrayList<>(); + @XmlElements(@XmlElement(type = SftpFileNameEntry.class, name = "SftpResponseNameEntry")) + private ArrayList nameEntries = new ArrayList<>(); + + public SftpResponseNameMessage() { + super(); + } + + public SftpResponseNameMessage(SftpResponseNameMessage other) { + super(other); + nameEntriesCount = + other.nameEntriesCount != null ? other.nameEntriesCount.createCopy() : null; + if (other.nameEntries != null) { + nameEntries = new ArrayList<>(); + for (SftpFileNameEntry item : other.nameEntries) { + nameEntries.add(item != null ? item.createCopy() : null); + } + } + } + + @Override + public SftpResponseNameMessage createCopy() { + return new SftpResponseNameMessage(this); + } public ModifiableInteger getNameEntriesCount() { return nameEntriesCount; @@ -57,11 +78,12 @@ public List getNameEntries() { return nameEntries; } - public void setNameEntries(List nameEntries) { + public void setNameEntries(ArrayList nameEntries) { setNameEntries(nameEntries, false); } - public void setNameEntries(List nameEntries, boolean adjustLengthField) { + public void setNameEntries( + ArrayList nameEntries, boolean adjustLengthField) { if (adjustLengthField) { setNameEntriesCount(nameEntries.size()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseStatusMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseStatusMessage.java index e4ddcf45d..0f8401084 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseStatusMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseStatusMessage.java @@ -24,6 +24,26 @@ public class SftpResponseStatusMessage extends SftpResponseMessage { private ModifiableString data; + public StringDataMessage() { + super(); + } + + public StringDataMessage(StringDataMessage other) { + super(); + data = other.data != null ? other.data.createCopy() : null; + } + + @Override + public StringDataMessage createCopy() { + return new StringDataMessage(this); + } + public ModifiableString getData() { return data; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessage.java index 80c8d1caa..5e7a27842 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessage.java @@ -16,6 +16,20 @@ public class UnknownDataMessage extends DataMessage { private ModifiableByteArray payload; + public UnknownDataMessage() { + super(); + } + + public UnknownDataMessage(UnknownDataMessage other) { + super(); + payload = other.payload != null ? other.payload.createCopy() : null; + } + + @Override + public UnknownDataMessage createCopy() { + return new UnknownDataMessage(this); + } + public ModifiableByteArray getPayload() { return payload; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/AbstractPacket.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/AbstractPacket.java index 3a7c6fe6b..9ecc65f37 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/AbstractPacket.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/AbstractPacket.java @@ -43,6 +43,20 @@ public abstract class AbstractPacket extends ModifiableVariableHolder { @ModifiableVariableProperty(type = ModifiableVariableProperty.Type.PLAIN_PROTOCOL_MESSAGE) private ModifiableByteArray payload; + protected AbstractPacket() { + super(); + } + + protected AbstractPacket(AbstractPacket other) { + super(other); + completePacketBytes = + other.completePacketBytes != null ? other.completePacketBytes.createCopy() : null; + ciphertext = other.ciphertext != null ? other.ciphertext.createCopy() : null; + compressedPayload = + other.compressedPayload != null ? other.compressedPayload.createCopy() : null; + payload = other.payload != null ? other.payload.createCopy() : null; + } + public ModifiableByteArray getCompletePacketBytes() { return completePacketBytes; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/BinaryPacket.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/BinaryPacket.java index 026b9594b..11bfca5d6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/BinaryPacket.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/BinaryPacket.java @@ -53,6 +53,25 @@ public class BinaryPacket extends AbstractPacket { /** A holder instance for all temporary fields used during crypto computations. */ private PacketCryptoComputations computations; + public BinaryPacket() { + super(); + } + + public BinaryPacket(BinaryPacket other) { + super(other); + length = other.length != null ? other.length.createCopy() : null; + paddingLength = other.paddingLength != null ? other.paddingLength.createCopy() : null; + padding = other.padding != null ? other.padding.createCopy() : null; + mac = other.mac != null ? other.mac.createCopy() : null; + sequenceNumber = other.sequenceNumber != null ? other.sequenceNumber.createCopy() : null; + computations = other.computations != null ? other.computations.createCopy() : null; + } + + @Override + public BinaryPacket createCopy() { + return new BinaryPacket(this); + } + public ModifiableInteger getLength() { return length; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/BlobPacket.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/BlobPacket.java index ef9f5fba9..cae3e275b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/BlobPacket.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/BlobPacket.java @@ -16,6 +16,20 @@ import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class BlobPacket extends AbstractPacket { + + public BlobPacket() { + super(); + } + + public BlobPacket(BlobPacket other) { + super(other); + } + + @Override + public BlobPacket createCopy() { + return new BlobPacket(this); + } + @Override public BlobPacketPreparator getPacketPreparator( Chooser chooser, AbstractPacketEncryptor encryptor, PacketCompressor compressor) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/PacketCryptoComputations.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/PacketCryptoComputations.java index 0712fde2e..b74349821 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/PacketCryptoComputations.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/PacketCryptoComputations.java @@ -11,8 +11,7 @@ import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.sshattacker.core.constants.BinaryPacketField; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; -import java.util.Objects; -import java.util.Set; +import java.util.*; public class PacketCryptoComputations extends ModifiableVariableHolder { @@ -43,7 +42,7 @@ public class PacketCryptoComputations extends ModifiableVariableHolder { private ModifiableByteArray iv; /** The set of binary packet fields covered by the encryption */ - private Set encryptedPacketFields; + private EnumSet encryptedPacketFields; /** A flag indicating whether the padding is considered valid */ private Boolean paddingValid; @@ -51,6 +50,39 @@ public class PacketCryptoComputations extends ModifiableVariableHolder { /** A flag indicating whether the mac is considered valid */ private Boolean macValid; + public PacketCryptoComputations() { + super(); + } + + public PacketCryptoComputations(PacketCryptoComputations other) { + super(other); + encryptionKey = other.encryptionKey != null ? other.encryptionKey.createCopy() : null; + integrityKey = other.integrityKey != null ? other.integrityKey.createCopy() : null; + plainPacketBytesFirstBlockOnly = other.plainPacketBytesFirstBlockOnly; + plainPacketBytes = + other.plainPacketBytes != null ? other.plainPacketBytes.createCopy() : null; + authenticatedPacketBytes = + other.authenticatedPacketBytes != null + ? other.authenticatedPacketBytes.createCopy() + : null; + additionalAuthenticatedData = + other.additionalAuthenticatedData != null + ? other.additionalAuthenticatedData.createCopy() + : null; + iv = other.iv != null ? other.iv.createCopy() : null; + encryptedPacketFields = + other.encryptedPacketFields != null + ? EnumSet.copyOf(other.encryptedPacketFields) + : null; + paddingValid = other.paddingValid; + macValid = other.macValid; + } + + @Override + public PacketCryptoComputations createCopy() { + return new PacketCryptoComputations(this); + } + @Override public void reset() { super.reset(); @@ -156,7 +188,7 @@ public Set getEncryptedPacketFields() { return encryptedPacketFields; } - public void setEncryptedPacketFields(Set encryptedPacketFields) { + public void setEncryptedPacketFields(EnumSet encryptedPacketFields) { this.encryptedPacketFields = encryptedPacketFields; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketChaCha20Poly1305Cipher.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketChaCha20Poly1305Cipher.java index 14af16625..45f9ad308 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketChaCha20Poly1305Cipher.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketChaCha20Poly1305Cipher.java @@ -18,6 +18,7 @@ import de.rub.nds.sshattacker.core.packet.cipher.keys.KeySet; import de.rub.nds.sshattacker.core.state.SshContext; import java.util.Arrays; +import java.util.EnumSet; import java.util.stream.Collectors; import java.util.stream.Stream; import javax.crypto.AEADBadTagException; @@ -121,7 +122,9 @@ protected void encrypt(BinaryPacket packet) throws CryptoException { BinaryPacketField.PADDING_LENGTH, BinaryPacketField.PAYLOAD, BinaryPacketField.PADDING) - .collect(Collectors.toSet())); + .collect( + Collectors.toCollection( + () -> EnumSet.noneOf(BinaryPacketField.class)))); computations.setPaddingValid(true); computations.setMacValid(true); } @@ -178,7 +181,9 @@ protected void decrypt(BinaryPacket packet) throws CryptoException { BinaryPacketField.PADDING_LENGTH, BinaryPacketField.PAYLOAD, BinaryPacketField.PADDING) - .collect(Collectors.toSet())); + .collect( + Collectors.toCollection( + () -> EnumSet.noneOf(BinaryPacketField.class)))); DecryptionParser parser = new DecryptionParser(computations.getPlainPacketBytes().getValue(), 0); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketGCMCipher.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketGCMCipher.java index 63a42ada5..be9675ecb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketGCMCipher.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketGCMCipher.java @@ -19,6 +19,7 @@ import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; import java.util.Arrays; +import java.util.EnumSet; import java.util.stream.Collectors; import java.util.stream.Stream; import javax.crypto.AEADBadTagException; @@ -113,7 +114,9 @@ public void encrypt(BinaryPacket packet) throws CryptoException { BinaryPacketField.PADDING_LENGTH, BinaryPacketField.PAYLOAD, BinaryPacketField.PADDING) - .collect(Collectors.toSet())); + .collect( + Collectors.toCollection( + () -> EnumSet.noneOf(BinaryPacketField.class)))); computations.setPaddingValid(true); computations.setMacValid(true); @@ -162,7 +165,9 @@ public void decrypt(BinaryPacket packet) throws CryptoException { BinaryPacketField.PADDING_LENGTH, BinaryPacketField.PAYLOAD, BinaryPacketField.PADDING) - .collect(Collectors.toSet())); + .collect( + Collectors.toCollection( + () -> EnumSet.noneOf(BinaryPacketField.class)))); DecryptionParser parser = new DecryptionParser(computations.getPlainPacketBytes().getValue(), 0); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketMacedCipher.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketMacedCipher.java index 95e90c026..ec5eb9ff4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketMacedCipher.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketMacedCipher.java @@ -23,6 +23,7 @@ import java.math.BigInteger; import java.security.NoSuchAlgorithmException; import java.util.Arrays; +import java.util.EnumSet; import java.util.stream.Collectors; import java.util.stream.Stream; import org.apache.logging.log4j.LogManager; @@ -120,7 +121,9 @@ public void encrypt(BinaryPacket packet) throws CryptoException { BinaryPacketField.PADDING_LENGTH, BinaryPacketField.PAYLOAD, BinaryPacketField.PADDING) - .collect(Collectors.toSet())); + .collect( + Collectors.toCollection( + () -> EnumSet.noneOf(BinaryPacketField.class)))); // Integrity protection computations.setAuthenticatedPacketBytes( @@ -144,7 +147,9 @@ public void encrypt(BinaryPacket packet) throws CryptoException { BinaryPacketField.PADDING_LENGTH, BinaryPacketField.PAYLOAD, BinaryPacketField.PADDING) - .collect(Collectors.toSet())); + .collect( + Collectors.toCollection( + () -> EnumSet.noneOf(BinaryPacketField.class)))); // Integrity protection computations.setAuthenticatedPacketBytes( @@ -227,7 +232,9 @@ public void decrypt(BinaryPacket packet) throws CryptoException { BinaryPacketField.PADDING_LENGTH, BinaryPacketField.PAYLOAD, BinaryPacketField.PADDING) - .collect(Collectors.toSet())); + .collect( + Collectors.toCollection( + () -> EnumSet.noneOf(BinaryPacketField.class)))); computations.setAuthenticatedPacketBytes( ArrayConverter.concatenate( @@ -241,7 +248,9 @@ public void decrypt(BinaryPacket packet) throws CryptoException { BinaryPacketField.PADDING, BinaryPacketField.PAYLOAD, BinaryPacketField.PADDING_LENGTH) - .collect(Collectors.toSet())); + .collect( + Collectors.toCollection( + () -> EnumSet.noneOf(BinaryPacketField.class)))); computations.setAuthenticatedPacketBytes( ArrayConverter.concatenate( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationPrompt.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationPrompt.java deleted file mode 100644 index be55a92bf..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationPrompt.java +++ /dev/null @@ -1,228 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.protocol.authentication; - -import de.rub.nds.modifiablevariable.ModifiableVariableFactory; -import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; -import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.config.Config; -import de.rub.nds.sshattacker.core.util.Converter; -import jakarta.xml.bind.annotation.*; -import java.io.Serializable; -import java.nio.charset.StandardCharsets; -import java.util.*; - -@SuppressWarnings({"SlowListContainsAll", "StandardVariableNames"}) -@XmlRootElement -@XmlAccessorType(XmlAccessType.FIELD) -public class AuthenticationPrompt implements List, Serializable { - - @XmlElementWrapper - @XmlElement(name = "promptEntry") - private final List promptEntries = new ArrayList<>(); - - @XmlAccessorType(XmlAccessType.FIELD) - public static class PromptEntry { - - private ModifiableInteger promptLength; - private ModifiableString prompt; - private ModifiableByte echo; - - public ModifiableInteger getPromptLength() { - return promptLength; - } - - public void setPromptLength(ModifiableInteger promptLength) { - this.promptLength = promptLength; - } - - public void setPromptLength(int promptLength) { - this.promptLength = - ModifiableVariableFactory.safelySetValue(this.promptLength, promptLength); - } - - public ModifiableString getPrompt() { - return prompt; - } - - public void setPrompt(ModifiableString prompt) { - this.prompt = prompt; - } - - public void setPrompt(String prompt) { - this.prompt = ModifiableVariableFactory.safelySetValue(this.prompt, prompt); - } - - public void setPrompt(ModifiableString prompt, boolean adjustLengthField) { - if (adjustLengthField) { - setPromptLength(prompt.getValue().getBytes(StandardCharsets.UTF_8).length); - } - this.prompt = prompt; - } - - public void setPrompt(String prompt, boolean adjustLengthField) { - this.prompt = ModifiableVariableFactory.safelySetValue(this.prompt, prompt); - if (adjustLengthField) { - setPromptLength(this.prompt.getValue().getBytes(StandardCharsets.UTF_8).length); - } - } - - public void setSoftlyPrompt(String prompt, boolean adjustLengthField, Config config) { - if (this.prompt == null || this.prompt.getOriginalValue() == null) { - this.prompt = ModifiableVariableFactory.safelySetValue(this.prompt, prompt); - } - if (adjustLengthField) { - if (config.getAlwaysPrepareLengthFields() - || promptLength == null - || promptLength.getOriginalValue() == null) { - setPromptLength(this.prompt.getValue().getBytes(StandardCharsets.UTF_8).length); - } - } - } - - public ModifiableByte getEcho() { - return echo; - } - - public void setEcho(ModifiableByte echo) { - this.echo = echo; - } - - public void setEcho(byte echo) { - this.echo = ModifiableVariableFactory.safelySetValue(this.echo, echo); - } - - public void setSoftlyEcho(byte echo) { - if (this.echo == null || this.echo.getOriginalValue() == null) { - this.echo = ModifiableVariableFactory.safelySetValue(this.echo, echo); - } - } - - public void setEcho(boolean echo) { - setEcho(Converter.booleanToByte(echo)); - } - } - - // region List interface methods - @Override - public int size() { - return promptEntries.size(); - } - - @Override - public boolean isEmpty() { - return promptEntries.isEmpty(); - } - - @Override - public boolean contains(Object o) { - return promptEntries.contains(o); - } - - @Override - public Iterator iterator() { - return promptEntries.iterator(); - } - - @Override - public Object[] toArray() { - return promptEntries.toArray(); - } - - @Override - public T[] toArray(T[] a) { - return promptEntries.toArray(a); - } - - @Override - public boolean add(PromptEntry promptEntry) { - return promptEntries.add(promptEntry); - } - - @Override - public boolean remove(Object o) { - return promptEntries.remove(o); - } - - @Override - public boolean containsAll(Collection c) { - return promptEntries.containsAll(c); - } - - @Override - public boolean addAll(Collection c) { - return promptEntries.addAll(c); - } - - @Override - public boolean addAll(int index, Collection c) { - return promptEntries.addAll(c); - } - - @Override - public boolean removeAll(Collection c) { - return promptEntries.removeAll(c); - } - - @Override - public boolean retainAll(Collection c) { - return promptEntries.retainAll(c); - } - - @Override - public void clear() { - promptEntries.clear(); - } - - @Override - public PromptEntry get(int index) { - return promptEntries.get(index); - } - - @Override - public PromptEntry set(int index, PromptEntry element) { - return promptEntries.set(index, element); - } - - @Override - public void add(int index, PromptEntry element) { - promptEntries.add(index, element); - } - - @Override - public PromptEntry remove(int index) { - return promptEntries.remove(index); - } - - @Override - public int indexOf(Object o) { - return promptEntries.indexOf(o); - } - - @Override - public int lastIndexOf(Object o) { - return promptEntries.lastIndexOf(o); - } - - @Override - public ListIterator listIterator() { - return promptEntries.listIterator(); - } - - @Override - public ListIterator listIterator(int index) { - return promptEntries.listIterator(index); - } - - @Override - public List subList(int fromIndex, int toIndex) { - return promptEntries.subList(fromIndex, toIndex); - } - // endregion -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationPromptEntries.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationPromptEntries.java new file mode 100644 index 000000000..6cf1fb93e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationPromptEntries.java @@ -0,0 +1,56 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.authentication; + +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationPromptEntry; +import jakarta.xml.bind.annotation.*; +import java.io.Serializable; +import java.util.*; + +/** Helper class for pre-configured AuthenticationPromptEntries */ +@XmlRootElement +@XmlAccessorType(XmlAccessType.FIELD) +public class AuthenticationPromptEntries implements Serializable { + + @XmlElementWrapper + @XmlElement(name = "promptEntry") + private ArrayList promptEntries; + + public AuthenticationPromptEntries() { + super(); + } + + public AuthenticationPromptEntries(ArrayList promptEntries) { + super(); + this.promptEntries = promptEntries; + } + + public AuthenticationPromptEntries(AuthenticationPromptEntries other) { + super(); + if (other.promptEntries != null) { + promptEntries = new ArrayList<>(); + for (AuthenticationPromptEntry item : other.promptEntries) { + promptEntries.add(item != null ? item.createCopy() : null); + } + } else { + promptEntries = null; + } + } + + public AuthenticationPromptEntries createCopy() { + return new AuthenticationPromptEntries(this); + } + + public ArrayList getPromptEntries() { + return promptEntries; + } + + public void setPromptEntries(ArrayList promptEntries) { + this.promptEntries = promptEntries; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationResponse.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationResponse.java deleted file mode 100644 index 8371d3457..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationResponse.java +++ /dev/null @@ -1,229 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.protocol.authentication; - -import de.rub.nds.modifiablevariable.ModifiableVariableFactory; -import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.config.Config; -import jakarta.xml.bind.annotation.*; -import java.io.Serializable; -import java.nio.charset.StandardCharsets; -import java.util.*; - -@SuppressWarnings({"SlowListContainsAll", "StandardVariableNames"}) -@XmlRootElement -@XmlAccessorType(XmlAccessType.FIELD) -public class AuthenticationResponse - implements List, Serializable { - - @XmlElementWrapper - @XmlElement(name = "responseEntry") - private final List responseEntries = new ArrayList<>(); - - @XmlAccessorType(XmlAccessType.FIELD) - public static class ResponseEntry implements Serializable { - - private ModifiableInteger responseLength; - private ModifiableString response; - private boolean executed; - - public ResponseEntry() { - super(); - } - - public ResponseEntry(boolean executed) { - super(); - this.executed = executed; - } - - public ResponseEntry(String response, boolean executed) { - super(); - setResponse(response, true); - this.executed = executed; - } - - public ModifiableInteger getResponseLength() { - return responseLength; - } - - public void setResponseLength(ModifiableInteger responseLength) { - this.responseLength = responseLength; - } - - public void setResponseLength(int responseLength) { - this.responseLength = - ModifiableVariableFactory.safelySetValue(this.responseLength, responseLength); - } - - public ModifiableString getResponse() { - return response; - } - - public void setResponse(ModifiableString response) { - this.response = response; - } - - public void setResponse(String response) { - this.response = ModifiableVariableFactory.safelySetValue(this.response, response); - } - - public void setResponse(ModifiableString response, boolean adjustLengthField) { - if (adjustLengthField) { - setResponseLength(response.getValue().getBytes(StandardCharsets.UTF_8).length); - } - this.response = response; - } - - public void setResponse(String response, boolean adjustLengthField) { - this.response = ModifiableVariableFactory.safelySetValue(this.response, response); - if (adjustLengthField) { - setResponseLength(this.response.getValue().getBytes(StandardCharsets.UTF_8).length); - } - } - - public void setSoftlyResponse(String response, boolean adjustLengthField, Config config) { - if (this.response == null || this.response.getOriginalValue() == null) { - this.response = ModifiableVariableFactory.safelySetValue(this.response, response); - } - if (adjustLengthField) { - if (config.getAlwaysPrepareLengthFields() - || responseLength == null - || responseLength.getOriginalValue() == null) { - setResponseLength( - this.response.getValue().getBytes(StandardCharsets.UTF_8).length); - } - } - } - - public boolean isExecuted() { - return executed; - } - - public void setExecuted(boolean executed) { - this.executed = executed; - } - } - - // region List interface methods - @Override - public int size() { - return responseEntries.size(); - } - - @Override - public boolean isEmpty() { - return responseEntries.isEmpty(); - } - - @Override - public boolean contains(Object o) { - return responseEntries.contains(o); - } - - @Override - public Iterator iterator() { - return responseEntries.iterator(); - } - - @Override - public Object[] toArray() { - return responseEntries.toArray(); - } - - @Override - public T[] toArray(T[] a) { - return responseEntries.toArray(a); - } - - @Override - public boolean add(ResponseEntry responseEntry) { - return responseEntries.add(responseEntry); - } - - @Override - public boolean remove(Object o) { - return responseEntries.remove(o); - } - - @Override - public boolean containsAll(Collection c) { - return responseEntries.containsAll(c); - } - - @Override - public boolean addAll(Collection c) { - return responseEntries.addAll(c); - } - - @Override - public boolean addAll(int index, Collection c) { - return responseEntries.addAll(c); - } - - @Override - public boolean removeAll(Collection c) { - return responseEntries.removeAll(c); - } - - @Override - public boolean retainAll(Collection c) { - return responseEntries.retainAll(c); - } - - @Override - public void clear() { - responseEntries.clear(); - } - - @Override - public ResponseEntry get(int index) { - return responseEntries.get(index); - } - - @Override - public ResponseEntry set(int index, ResponseEntry element) { - return responseEntries.set(index, element); - } - - @Override - public void add(int index, ResponseEntry element) { - responseEntries.add(index, element); - } - - @Override - public ResponseEntry remove(int index) { - return responseEntries.remove(index); - } - - @Override - public int indexOf(Object o) { - return responseEntries.indexOf(o); - } - - @Override - public int lastIndexOf(Object o) { - return responseEntries.lastIndexOf(o); - } - - @Override - public ListIterator listIterator() { - return responseEntries.listIterator(); - } - - @Override - public ListIterator listIterator(int index) { - return responseEntries.listIterator(index); - } - - @Override - public List subList(int fromIndex, int toIndex) { - return responseEntries.subList(fromIndex, toIndex); - } - // endregion -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationResponseEntries.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationResponseEntries.java new file mode 100644 index 000000000..bb8f6b720 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/AuthenticationResponseEntries.java @@ -0,0 +1,56 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.authentication; + +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationResponseEntry; +import jakarta.xml.bind.annotation.*; +import java.io.Serializable; +import java.util.*; + +/** Helper class for pre-configured AuthenticationResponseEntries */ +@XmlRootElement +@XmlAccessorType(XmlAccessType.FIELD) +public class AuthenticationResponseEntries implements Serializable { + + @XmlElementWrapper + @XmlElement(name = "responseEntry") + private ArrayList responseEntries; + + public AuthenticationResponseEntries() { + super(); + } + + public AuthenticationResponseEntries(ArrayList responseEntries) { + super(); + this.responseEntries = responseEntries; + } + + public AuthenticationResponseEntries(AuthenticationResponseEntries other) { + super(); + if (other.responseEntries != null) { + responseEntries = new ArrayList<>(); + for (AuthenticationResponseEntry item : other.responseEntries) { + responseEntries.add(item != null ? item.createCopy() : null); + } + } else { + responseEntries = null; + } + } + + public AuthenticationResponseEntries createCopy() { + return new AuthenticationResponseEntries(this); + } + + public ArrayList getResponseEntries() { + return responseEntries; + } + + public void setResponseEntries(ArrayList responseEntries) { + this.responseEntries = responseEntries; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthBannerMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthBannerMessage.java index 20ed02e41..bd7ad62e1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthBannerMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthBannerMessage.java @@ -23,6 +23,24 @@ public class UserAuthBannerMessage extends SshMessage { private ModifiableInteger languageTagLength; private ModifiableString languageTag; + public UserAuthBannerMessage() { + super(); + } + + public UserAuthBannerMessage(UserAuthBannerMessage other) { + super(other); + messageLength = other.messageLength != null ? other.messageLength.createCopy() : null; + message = other.message != null ? other.message.createCopy() : null; + languageTagLength = + other.languageTagLength != null ? other.languageTagLength.createCopy() : null; + languageTag = other.languageTag != null ? other.languageTag.createCopy() : null; + } + + @Override + public UserAuthBannerMessage createCopy() { + return new UserAuthBannerMessage(this); + } + public ModifiableInteger getMessageLength() { return messageLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java index 38db57aa2..52ec96c3b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java @@ -28,6 +28,28 @@ public class UserAuthFailureMessage extends SshMessage { private ModifiableString possibleAuthenticationMethods; private ModifiableByte partialSuccess; + public UserAuthFailureMessage() { + super(); + } + + public UserAuthFailureMessage(UserAuthFailureMessage other) { + super(other); + possibleAuthenticationMethodsLength = + other.possibleAuthenticationMethodsLength != null + ? other.possibleAuthenticationMethodsLength.createCopy() + : null; + possibleAuthenticationMethods = + other.possibleAuthenticationMethods != null + ? other.possibleAuthenticationMethods.createCopy() + : null; + partialSuccess = other.partialSuccess != null ? other.partialSuccess.createCopy() : null; + } + + @Override + public UserAuthFailureMessage createCopy() { + return new UserAuthFailureMessage(this); + } + public ModifiableInteger getPossibleAuthenticationMethodsLength() { return possibleAuthenticationMethodsLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthHostbasedMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthHostbasedMessage.java index 206780cc5..2781289e9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthHostbasedMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthHostbasedMessage.java @@ -34,6 +34,34 @@ public class UserAuthHostbasedMessage extends UserAuthRequestMessage { @@ -25,8 +32,42 @@ public class UserAuthInfoRequestMessage extends SshMessage promptEntries = new ArrayList<>(); + + public UserAuthInfoRequestMessage() { + super(); + } + + public UserAuthInfoRequestMessage(UserAuthInfoRequestMessage other) { + super(other); + userNameLength = other.userNameLength != null ? other.userNameLength.createCopy() : null; + userName = other.userName != null ? other.userName.createCopy() : null; + instructionLength = + other.instructionLength != null ? other.instructionLength.createCopy() : null; + instruction = other.instruction != null ? other.instruction.createCopy() : null; + languageTagLength = + other.languageTagLength != null ? other.languageTagLength.createCopy() : null; + languageTag = other.languageTag != null ? other.languageTag.createCopy() : null; + promptEntriesCount = + other.promptEntriesCount != null ? other.promptEntriesCount.createCopy() : null; + if (other.promptEntries != null) { + promptEntries = new ArrayList<>(); + for (AuthenticationPromptEntry item : other.promptEntries) { + promptEntries.add(item != null ? item.createCopy() : null); + } + } + } + + @Override + public UserAuthInfoRequestMessage createCopy() { + return new UserAuthInfoRequestMessage(this); + } public ModifiableInteger getUserNameLength() { return userNameLength; @@ -192,29 +233,68 @@ public void setSoftlyLanguageTag(String languageTag, boolean adjustLengthField, } } - public ModifiableInteger getPromptEntryCount() { - return promptEntryCount; + public ModifiableInteger getPromptEntriesCount() { + return promptEntriesCount; } - public void setPromptEntryCount(ModifiableInteger promptEntryCount) { - this.promptEntryCount = promptEntryCount; + public void setPromptEntriesCount(ModifiableInteger promptEntriesCount) { + this.promptEntriesCount = promptEntriesCount; } - public void setPromptEntryCount(int promptEntryCount) { - this.promptEntryCount = - ModifiableVariableFactory.safelySetValue(this.promptEntryCount, promptEntryCount); + public void setPromptEntriesCount(int promptEntriesCount) { + this.promptEntriesCount = + ModifiableVariableFactory.safelySetValue( + this.promptEntriesCount, promptEntriesCount); } - public AuthenticationPrompt getPrompt() { - return prompt; + public void setSoftlyPromptEntriesCount(int promptEntriesCount, Config config) { + if (config.getAlwaysPrepareLengthFields() + || this.promptEntriesCount == null + || this.promptEntriesCount.getOriginalValue() == null) { + this.promptEntriesCount = + ModifiableVariableFactory.safelySetValue( + this.promptEntriesCount, promptEntriesCount); + } + } + + public ArrayList getPromptEntries() { + return promptEntries; } - public void setPrompt(AuthenticationPrompt prompt) { - this.prompt = prompt; + public void setPromptEntries(ArrayList promptEntries) { + setPromptEntries(promptEntries, false); + } + + public void setPromptEntries( + ArrayList promptEntries, boolean adjustLengthField) { + if (adjustLengthField) { + setPromptEntriesCount(promptEntries.size()); + } + this.promptEntries = promptEntries; + } + + public void addPromptEntry(AuthenticationPromptEntry promptEntry) { + addPromptEntry(promptEntry, false); + } + + public void addPromptEntry(AuthenticationPromptEntry promptEntry, boolean adjustLengthField) { + promptEntries.add(promptEntry); + if (adjustLengthField) { + setPromptEntriesCount(promptEntries.size()); + } } @Override public UserAuthInfoRequestMessageHandler getHandler(SshContext context) { return new UserAuthInfoRequestMessageHandler(context, this); } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + if (promptEntries != null) { + holders.addAll(promptEntries); + } + return holders; + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthInfoResponseMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthInfoResponseMessage.java index 5cc009595..51d928bd9 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthInfoResponseMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthInfoResponseMessage.java @@ -7,42 +7,117 @@ */ package de.rub.nds.sshattacker.core.protocol.authentication.message; +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationResponse; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.authentication.handler.UserAuthInfoResponseMessageHandler; +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationResponseEntry; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import de.rub.nds.sshattacker.core.state.SshContext; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElementWrapper; +import jakarta.xml.bind.annotation.XmlElements; +import java.util.ArrayList; +import java.util.List; public class UserAuthInfoResponseMessage extends SshMessage { - private ModifiableInteger responseEntryCount; - private AuthenticationResponse response = new AuthenticationResponse(); + private ModifiableInteger responseEntriesCount; - public ModifiableInteger getResponseEntryCount() { - return responseEntryCount; + @HoldsModifiableVariable + @XmlElementWrapper + @XmlElements( + @XmlElement( + type = AuthenticationResponseEntry.class, + name = "AuthenticationResponseEntry")) + private ArrayList responseEntries = new ArrayList<>(); + + public UserAuthInfoResponseMessage() { + super(); + } + + public UserAuthInfoResponseMessage(UserAuthInfoResponseMessage other) { + super(other); + responseEntriesCount = + other.responseEntriesCount != null ? other.responseEntriesCount.createCopy() : null; + if (other.responseEntries != null) { + responseEntries = new ArrayList<>(); + for (AuthenticationResponseEntry item : other.responseEntries) { + responseEntries.add(item != null ? item.createCopy() : null); + } + } + } + + @Override + public UserAuthInfoResponseMessage createCopy() { + return new UserAuthInfoResponseMessage(this); + } + + public ModifiableInteger getResponseEntriesCount() { + return responseEntriesCount; } - public void setResponseEntryCount(ModifiableInteger responseEntryCount) { - this.responseEntryCount = responseEntryCount; + public void setResponseEntriesCount(ModifiableInteger responseEntriesCount) { + this.responseEntriesCount = responseEntriesCount; } - public void setResponseEntryCount(int responseEntryCount) { - this.responseEntryCount = + public void setResponseEntriesCount(int responseEntriesCount) { + this.responseEntriesCount = ModifiableVariableFactory.safelySetValue( - this.responseEntryCount, responseEntryCount); + this.responseEntriesCount, responseEntriesCount); + } + + public void setSoftlyResponseEntriesCount(int responseEntriesCount, Config config) { + if (config.getAlwaysPrepareLengthFields() + || this.responseEntriesCount == null + || this.responseEntriesCount.getOriginalValue() == null) { + this.responseEntriesCount = + ModifiableVariableFactory.safelySetValue( + this.responseEntriesCount, responseEntriesCount); + } } - public AuthenticationResponse getResponse() { - return response; + public ArrayList getResponseEntries() { + return responseEntries; } - public void setResponse(AuthenticationResponse response) { - this.response = response; + public void setResponseEntries(ArrayList responseEntries) { + setResponseEntries(responseEntries, false); + } + + public void setResponseEntries( + ArrayList responseEntries, boolean adjustLengthField) { + if (adjustLengthField) { + setResponseEntriesCount(responseEntries.size()); + } + this.responseEntries = responseEntries; + } + + public void addResponseEntry(AuthenticationResponseEntry responseEntry) { + addResponseEntry(responseEntry, false); + } + + public void addResponseEntry( + AuthenticationResponseEntry responseEntry, boolean adjustLengthField) { + responseEntries.add(responseEntry); + if (adjustLengthField) { + setResponseEntriesCount(responseEntries.size()); + } } @Override public UserAuthInfoResponseMessageHandler getHandler(SshContext context) { return new UserAuthInfoResponseMessageHandler(context, this); } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + if (responseEntries != null) { + holders.addAll(responseEntries); + } + return holders; + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthKeyboardInteractiveMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthKeyboardInteractiveMessage.java index 34485921c..d50be6b5e 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthKeyboardInteractiveMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthKeyboardInteractiveMessage.java @@ -23,6 +23,25 @@ public class UserAuthKeyboardInteractiveMessage private ModifiableInteger subMethodsLength; private ModifiableString subMethods; + public UserAuthKeyboardInteractiveMessage() { + super(); + } + + public UserAuthKeyboardInteractiveMessage(UserAuthKeyboardInteractiveMessage other) { + super(other); + languageTagLength = + other.languageTagLength != null ? other.languageTagLength.createCopy() : null; + languageTag = other.languageTag != null ? other.languageTag.createCopy() : null; + subMethodsLength = + other.subMethodsLength != null ? other.subMethodsLength.createCopy() : null; + subMethods = other.subMethods != null ? other.subMethods.createCopy() : null; + } + + @Override + public UserAuthKeyboardInteractiveMessage createCopy() { + return new UserAuthKeyboardInteractiveMessage(this); + } + public ModifiableInteger getLanguageTagLength() { return languageTagLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthNoneMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthNoneMessage.java index 37143171d..560f11398 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthNoneMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthNoneMessage.java @@ -12,6 +12,19 @@ public class UserAuthNoneMessage extends UserAuthRequestMessage { + public UserAuthNoneMessage() { + super(); + } + + public UserAuthNoneMessage(UserAuthNoneMessage other) { + super(other); + } + + @Override + public UserAuthNoneMessage createCopy() { + return new UserAuthNoneMessage(this); + } + @Override public UserAuthNoneMessageHandler getHandler(SshContext context) { return new UserAuthNoneMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPasswordMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPasswordMessage.java index 0dd74a95f..1d5a70f53 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPasswordMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPasswordMessage.java @@ -25,6 +25,25 @@ public class UserAuthPasswordMessage extends UserAuthRequestMessage { private ModifiableInteger pubkeyLength; private ModifiableString pubkey; + public UserAuthPkOkMessage() { + super(); + } + + public UserAuthPkOkMessage(UserAuthPkOkMessage other) { + super(other); + pubkeyAlgNameLength = + other.pubkeyAlgNameLength != null ? other.pubkeyAlgNameLength.createCopy() : null; + pubkeyAlgName = other.pubkeyAlgName != null ? other.pubkeyAlgName.createCopy() : null; + pubkeyLength = other.pubkeyLength != null ? other.pubkeyLength.createCopy() : null; + pubkey = other.pubkey != null ? other.pubkey.createCopy() : null; + } + + @Override + public UserAuthPkOkMessage createCopy() { + return new UserAuthPkOkMessage(this); + } + public ModifiableInteger getPubkeyAlgNameLength() { return pubkeyAlgNameLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPubkeyMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPubkeyMessage.java index cd1d46a7d..133a1f486 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPubkeyMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPubkeyMessage.java @@ -28,6 +28,27 @@ public class UserAuthPubkeyMessage extends UserAuthRequestMessage protected ModifiableInteger methodNameLength; protected ModifiableString methodName; + protected UserAuthRequestMessage() { + super(); + } + + protected UserAuthRequestMessage(UserAuthRequestMessage other) { + super(other); + userNameLength = other.userNameLength != null ? other.userNameLength.createCopy() : null; + userName = other.userName != null ? other.userName.createCopy() : null; + serviceNameLength = + other.serviceNameLength != null ? other.serviceNameLength.createCopy() : null; + serviceName = other.serviceName != null ? other.serviceName.createCopy() : null; + methodNameLength = + other.methodNameLength != null ? other.methodNameLength.createCopy() : null; + methodName = other.methodName != null ? other.methodName.createCopy() : null; + } + public ModifiableInteger getUserNameLength() { return userNameLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthSuccessMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthSuccessMessage.java index 9f3ba0390..5735f8204 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthSuccessMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthSuccessMessage.java @@ -13,6 +13,19 @@ public class UserAuthSuccessMessage extends SshMessage { + public UserAuthSuccessMessage() { + super(); + } + + public UserAuthSuccessMessage(UserAuthSuccessMessage other) { + super(other); + } + + @Override + public UserAuthSuccessMessage createCopy() { + return new UserAuthSuccessMessage(this); + } + @Override public UserAuthSuccessMessageHandler getHandler(SshContext context) { return new UserAuthSuccessMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthUnknownMessage.java index cca42a33b..cf4c1da9b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthUnknownMessage.java @@ -15,6 +15,21 @@ public class UserAuthUnknownMessage extends UserAuthRequestMessage { private ModifiableByteArray methodSpecificFields; + public UserAuthUnknownMessage() { + super(); + } + + public UserAuthUnknownMessage(UserAuthUnknownMessage other) { + super(other); + methodSpecificFields = + other.methodSpecificFields != null ? other.methodSpecificFields.createCopy() : null; + } + + @Override + public UserAuthUnknownMessage createCopy() { + return new UserAuthUnknownMessage(this); + } + public ModifiableByteArray getMethodSpecificFields() { return methodSpecificFields; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoRequestMessageParser.java index b4c214059..531f54f1c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoRequestMessageParser.java @@ -10,10 +10,9 @@ import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationPrompt; import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthInfoRequestMessage; +import de.rub.nds.sshattacker.core.protocol.authentication.parser.holder.AuthenticationPromptEntryParser; import de.rub.nds.sshattacker.core.protocol.common.SshMessageParser; -import de.rub.nds.sshattacker.core.util.Converter; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -62,24 +61,19 @@ private void parseLanguageTag() { } private void parsePromptEntries() { - int promptEntryCount = parseIntField(DataFormatConstants.UINT32_SIZE); - message.setPromptEntryCount(promptEntryCount); - LOGGER.debug("Number of prompt entries: {}", promptEntryCount); + int promptEntriesCount = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setPromptEntriesCount(promptEntriesCount); + LOGGER.debug("Number of prompt entries: {}", promptEntriesCount); - for (int i = 0; i < message.getPromptEntryCount().getValue(); i++) { - AuthenticationPrompt.PromptEntry entry = new AuthenticationPrompt.PromptEntry(); - entry.setPromptLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Prompt entry [{}] length: {}", i, entry.getPromptLength().getValue()); - entry.setPrompt(parseByteString(entry.getPromptLength().getValue())); - LOGGER.debug( - "Prompt entry [{}]: {}", - i, - backslashEscapeString(entry.getPrompt().getValue())); - byte echo = parseByteField(1); - entry.setEcho(echo); - LOGGER.debug("Prompt entry [{}] wants echo:{}", i, Converter.byteToBoolean(echo)); + for (int promptEntryIdx = 0, promptEntryStartPointer = getPointer(); + promptEntryIdx < promptEntriesCount; + promptEntryIdx++, promptEntryStartPointer = getPointer()) { - message.getPrompt().add(entry); + AuthenticationPromptEntryParser promptEntryParser = + new AuthenticationPromptEntryParser(getArray(), promptEntryStartPointer); + + message.addPromptEntry(promptEntryParser.parse()); + setPointer(promptEntryParser.getPointer()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoResponseMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoResponseMessageParser.java index c8c975ca7..c4ed3b9a5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoResponseMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthInfoResponseMessageParser.java @@ -8,8 +8,8 @@ package de.rub.nds.sshattacker.core.protocol.authentication.parser; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationResponse; import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthInfoResponseMessage; +import de.rub.nds.sshattacker.core.protocol.authentication.parser.holder.AuthenticationResponseEntryParser; import de.rub.nds.sshattacker.core.protocol.common.SshMessageParser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -33,16 +33,19 @@ protected UserAuthInfoResponseMessage createMessage() { } private void parseResponseEntries() { - int responseEntryCount = parseIntField(DataFormatConstants.UINT32_SIZE); - message.setResponseEntryCount(responseEntryCount); - LOGGER.debug("Number of response entries: {}", responseEntryCount); - for (int i = 0; i < message.getResponseEntryCount().getValue(); i++) { - AuthenticationResponse.ResponseEntry entry = new AuthenticationResponse.ResponseEntry(); - entry.setResponseLength(parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug("Response entry [{}] length: {}", i, entry.getResponseLength().getValue()); - entry.setResponse(parseByteString(entry.getResponseLength().getValue())); - LOGGER.debug("Response entry [{}]: {}", i, entry.getResponse().getValue()); - message.getResponse().add(entry); + int responseEntriesCount = parseIntField(DataFormatConstants.UINT32_SIZE); + message.setResponseEntriesCount(responseEntriesCount); + LOGGER.debug("Number of response entries: {}", responseEntriesCount); + + for (int responseEntryIdx = 0, responseEntryStartPointer = getPointer(); + responseEntryIdx < responseEntriesCount; + responseEntryIdx++, responseEntryStartPointer = getPointer()) { + + AuthenticationResponseEntryParser responseEntryParser = + new AuthenticationResponseEntryParser(getArray(), responseEntryStartPointer); + + message.addResponseEntry(responseEntryParser.parse()); + setPointer(responseEntryParser.getPointer()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java index 0988b821c..6a6abb2ce 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java @@ -25,6 +25,6 @@ public void prepareMessageSpecificContents() { getObject().setUserName("", true); getObject().setInstruction("", true); getObject().setLanguageTag("", true); - getObject().setPromptEntryCount(0); + getObject().setPromptEntriesCount(0); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java index 5ea17780c..3bf206508 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java @@ -8,10 +8,11 @@ package de.rub.nds.sshattacker.core.protocol.authentication.preparator; import de.rub.nds.sshattacker.core.constants.MessageIdConstant; -import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationResponse; import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthInfoResponseMessage; +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationResponseEntry; import de.rub.nds.sshattacker.core.protocol.common.SshMessagePreparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import java.util.ArrayList; public class UserAuthInfoResponseMessagePreparator extends SshMessagePreparator { @@ -23,18 +24,12 @@ public UserAuthInfoResponseMessagePreparator( @Override public void prepareMessageSpecificContents() { - getObject().setResponseEntryCount(0); - for (int i = 0; i < chooser.getConfig().getPreConfiguredAuthResponses().size(); i++) { - AuthenticationResponse authenticationResponse = - chooser.getConfig().getPreConfiguredAuthResponses().get(i); - if (authenticationResponse.get(0).isExecuted()) { - i++; - } else { - getObject().setResponse(authenticationResponse); - getObject().setResponseEntryCount(authenticationResponse.size()); - authenticationResponse.get(0).setExecuted(true); - break; - } + getObject().setResponseEntriesCount(0); + ArrayList nextResponses = + chooser.getNextPreConfiguredAuthResponses(); + + if (nextResponses != null) { + getObject().setResponseEntries(nextResponses, true); } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java index 61e09d536..1666bd432 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoRequestMessageSerializer.java @@ -10,10 +10,8 @@ import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationPrompt; import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthInfoRequestMessage; import de.rub.nds.sshattacker.core.protocol.common.SshMessageSerializer; -import de.rub.nds.sshattacker.core.util.Converter; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -54,22 +52,15 @@ private void serializeLanguageTag() { } private void serializePrompt() { - Integer promptEntryCount = message.getPromptEntryCount().getValue(); + Integer promptEntryCount = message.getPromptEntriesCount().getValue(); LOGGER.debug("Number of prompt entries: {}", promptEntryCount); appendInt(promptEntryCount, DataFormatConstants.UINT32_SIZE); - for (int i = 0; i < message.getPromptEntryCount().getValue(); i++) { - AuthenticationPrompt.PromptEntry entry = message.getPrompt().get(i); - LOGGER.debug("Prompt entry [{}] length: {}", i, entry.getPromptLength().getValue()); - appendInt(entry.getPromptLength().getValue(), DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Prompt entry [{}]: {}", i, entry.getPrompt().getValue()); - appendString(entry.getPrompt().getValue()); - LOGGER.debug( - "Prompt entry [{}] wants echo: {}", - i, - Converter.byteToBoolean(entry.getEcho().getValue())); - appendByte(entry.getEcho().getValue()); - } + message.getPromptEntries() + .forEach( + promptEntry -> + appendBytes( + promptEntry.getHandler(null).getSerializer().serialize())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoResponseMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoResponseMessageSerializer.java index bc0145535..0cb3b4148 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoResponseMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthInfoResponseMessageSerializer.java @@ -8,10 +8,8 @@ package de.rub.nds.sshattacker.core.protocol.authentication.serializer; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationResponse; import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthInfoResponseMessage; import de.rub.nds.sshattacker.core.protocol.common.SshMessageSerializer; -import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -24,17 +22,18 @@ public UserAuthInfoResponseMessageSerializer(UserAuthInfoResponseMessage message } private void serializeResponse() { - Integer responseEntryCount = message.getResponseEntryCount().getValue(); + Integer responseEntryCount = message.getResponseEntriesCount().getValue(); LOGGER.debug("Number of response entries: {}", responseEntryCount); appendInt(responseEntryCount, DataFormatConstants.UINT32_SIZE); - for (int i = 0; i < message.getResponseEntryCount().getValue(); i++) { - AuthenticationResponse.ResponseEntry entry = message.getResponse().get(i); - LOGGER.debug("Response entry [{}] length: {}", i, entry.getResponseLength().getValue()); - appendInt(entry.getResponseLength().getValue(), DataFormatConstants.UINT32_SIZE); - LOGGER.debug("Response entry [{}]: {}", i, entry.getResponse().getValue()); - appendString(entry.getResponse().getValue(), StandardCharsets.UTF_8); - } + message.getResponseEntries() + .forEach( + responseEntry -> + appendBytes( + responseEntry + .getHandler(null) + .getSerializer() + .serialize())); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ModifiableVariableHolder.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ModifiableVariableHolder.java index e2fb3729b..4d61f3883 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ModifiableVariableHolder.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ModifiableVariableHolder.java @@ -26,6 +26,17 @@ protected ModifiableVariableHolder() { super(); } + protected ModifiableVariableHolder(ModifiableVariableHolder other) { + super(); + } + + /** + * Copies this ModifiableVariableHolder + * + * @return A copy of this ModifiableVariableHolder + */ + public abstract ModifiableVariableHolder createCopy(); + /** * Lists all the modifiable variables declared in the class * diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ProtocolMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ProtocolMessage.java index 0de1857a3..c754c9ea8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ProtocolMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ProtocolMessage.java @@ -45,6 +45,21 @@ public abstract class ProtocolMessage> @ModifiableVariableProperty(type = ModifiableVariableProperty.Type.PLAIN_PROTOCOL_MESSAGE) protected ModifiableByteArray completeResultingMessage; + protected ProtocolMessage() { + super(); + } + + protected ProtocolMessage(ProtocolMessage other) { + super(other); + required = other.required != null ? other.required.createCopy() : null; + goingToBeSent = other.goingToBeSent != null ? other.goingToBeSent.createCopy() : null; + adjustContext = other.adjustContext != null ? other.adjustContext.createCopy() : null; + completeResultingMessage = + other.completeResultingMessage != null + ? other.completeResultingMessage.createCopy() + : null; + } + public boolean isRequired() { if (required == null || required.getValue() == null) { return REQUIRED_DEFAULT; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessage.java index 27e4d4f67..cbb47cd3e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessage.java @@ -21,6 +21,15 @@ public abstract class SshMessage> extends ProtocolMessag protected ModifiableByte messageId; + protected SshMessage() { + super(); + } + + protected SshMessage(SshMessage other) { + super(other); + messageId = other.messageId != null ? other.messageId.createCopy() : null; + } + public ModifiableByte getMessageId() { return messageId; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelCloseMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelCloseMessage.java index bd6eeeb75..9cfb36a08 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelCloseMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelCloseMessage.java @@ -12,6 +12,19 @@ public class ChannelCloseMessage extends ChannelMessage { + public ChannelCloseMessage() { + super(); + } + + public ChannelCloseMessage(ChannelCloseMessage other) { + super(other); + } + + @Override + public ChannelCloseMessage createCopy() { + return new ChannelCloseMessage(this); + } + @Override public ChannelCloseMessageHandler getHandler(SshContext context) { return new ChannelCloseMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelDataMessage.java index 465308808..2e744f0f9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelDataMessage.java @@ -19,6 +19,21 @@ public class ChannelDataMessage extends ChannelMessage { private ModifiableInteger dataLength; private ModifiableByteArray data; + public ChannelDataMessage() { + super(); + } + + public ChannelDataMessage(ChannelDataMessage other) { + super(other); + dataLength = other.dataLength != null ? other.dataLength.createCopy() : null; + data = other.data != null ? other.data.createCopy() : null; + } + + @Override + public ChannelDataMessage createCopy() { + return new ChannelDataMessage(this); + } + public ModifiableInteger getDataLength() { return dataLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelEofMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelEofMessage.java index 378a627af..54d7899a5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelEofMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelEofMessage.java @@ -12,6 +12,19 @@ public class ChannelEofMessage extends ChannelMessage { + public ChannelEofMessage() { + super(); + } + + public ChannelEofMessage(ChannelEofMessage other) { + super(other); + } + + @Override + public ChannelEofMessage createCopy() { + return new ChannelEofMessage(this); + } + @Override public ChannelEofMessageHandler getHandler(SshContext context) { return new ChannelEofMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelExtendedDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelExtendedDataMessage.java index d211c507c..fa167af07 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelExtendedDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelExtendedDataMessage.java @@ -21,6 +21,22 @@ public class ChannelExtendedDataMessage extends ChannelMessage { + public ChannelFailureMessage() { + super(); + } + + public ChannelFailureMessage(ChannelFailureMessage other) { + super(other); + } + + @Override + public ChannelFailureMessage createCopy() { + return new ChannelFailureMessage(this); + } + @Override public ChannelFailureMessageHandler getHandler(SshContext context) { return new ChannelFailureMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelMessage.java index 2261e88fc..2241eea94 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelMessage.java @@ -22,6 +22,18 @@ public abstract class ChannelMessage> extends SshMes @XmlAttribute(name = "remoteChannel") protected Integer configRemoteChannelId; + protected ChannelMessage() { + super(); + } + + protected ChannelMessage(ChannelMessage other) { + super(other); + recipientChannelId = + other.recipientChannelId != null ? other.recipientChannelId.createCopy() : null; + configLocalChannelId = other.configLocalChannelId; + configRemoteChannelId = other.configRemoteChannelId; + } + public ModifiableInteger getRecipientChannelId() { return recipientChannelId; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenConfirmationMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenConfirmationMessage.java index d19140335..1ca9cc9e0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenConfirmationMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenConfirmationMessage.java @@ -18,6 +18,22 @@ public class ChannelOpenConfirmationMessage extends ChannelMessage> extend @XmlAttribute(name = "localChannel") private Integer configLocalChannelId; + protected ChannelOpenMessage() { + super(); + } + + protected ChannelOpenMessage(ChannelOpenMessage other) { + super(other); + channelTypeLength = + other.channelTypeLength != null ? other.channelTypeLength.createCopy() : null; + channelType = other.channelType != null ? other.channelType.createCopy() : null; + windowSize = other.windowSize != null ? other.windowSize.createCopy() : null; + packetSize = other.packetSize != null ? other.packetSize.createCopy() : null; + senderChannelId = other.senderChannelId != null ? other.senderChannelId.createCopy() : null; + configLocalChannelId = other.configLocalChannelId; + } + public ModifiableInteger getChannelTypeLength() { return channelTypeLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenSessionMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenSessionMessage.java index 42feed292..d2d3fd62a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenSessionMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenSessionMessage.java @@ -11,6 +11,20 @@ import de.rub.nds.sshattacker.core.state.SshContext; public class ChannelOpenSessionMessage extends ChannelOpenMessage { + + public ChannelOpenSessionMessage() { + super(); + } + + public ChannelOpenSessionMessage(ChannelOpenSessionMessage other) { + super(other); + } + + @Override + public ChannelOpenSessionMessage createCopy() { + return new ChannelOpenSessionMessage(this); + } + @Override public ChannelOpenSessionMessageHandler getHandler(SshContext context) { return new ChannelOpenSessionMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenUnknownMessage.java index a64d4e4f8..8d7715a9f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenUnknownMessage.java @@ -16,6 +16,21 @@ public class ChannelOpenUnknownMessage extends ChannelOpenMessage { + public ChannelRequestAuthAgentMessage() { + super(); + } + + public ChannelRequestAuthAgentMessage(ChannelRequestAuthAgentMessage other) { + super(other); + } + + @Override + public ChannelRequestAuthAgentMessage createCopy() { + return new ChannelRequestAuthAgentMessage(this); + } + @Override public ChannelRequestAuthAgentMessageHandler getHandler(SshContext context) { return new ChannelRequestAuthAgentMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestBreakMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestBreakMessage.java index f0d72ba00..e96f2531b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestBreakMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestBreakMessage.java @@ -16,6 +16,20 @@ public class ChannelRequestBreakMessage extends ChannelRequestMessage> private ModifiableString requestType; private ModifiableByte wantReply; + protected ChannelRequestMessage() { + super(); + } + + protected ChannelRequestMessage(ChannelRequestMessage other) { + super(other); + requestTypeLength = + other.requestTypeLength != null ? other.requestTypeLength.createCopy() : null; + requestType = other.requestType != null ? other.requestType.createCopy() : null; + wantReply = other.wantReply != null ? other.wantReply.createCopy() : null; + } + public ModifiableInteger getRequestTypeLength() { return requestTypeLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestPtyMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestPtyMessage.java index a7a14b5cc..dad0d551e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestPtyMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestPtyMessage.java @@ -27,6 +27,34 @@ public class ChannelRequestPtyMessage extends ChannelRequestMessage { + public ChannelRequestShellMessage() { + super(); + } + + public ChannelRequestShellMessage(ChannelRequestShellMessage other) { + super(other); + } + + @Override + public ChannelRequestShellMessage createCopy() { + return new ChannelRequestShellMessage(this); + } + @Override public ChannelRequestShellMessageHandler getHandler(SshContext context) { return new ChannelRequestShellMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSignalMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSignalMessage.java index 0eac49bb0..349195265 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSignalMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSignalMessage.java @@ -22,6 +22,22 @@ public class ChannelRequestSignalMessage private ModifiableInteger signalNameLength; private ModifiableString signalName; + public ChannelRequestSignalMessage() { + super(); + } + + public ChannelRequestSignalMessage(ChannelRequestSignalMessage other) { + super(other); + signalNameLength = + other.signalNameLength != null ? other.signalNameLength.createCopy() : null; + signalName = other.signalName != null ? other.signalName.createCopy() : null; + } + + @Override + public ChannelRequestSignalMessage createCopy() { + return new ChannelRequestSignalMessage(this); + } + public ModifiableInteger getSignalNameLength() { return signalNameLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSubsystemMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSubsystemMessage.java index ea6a86fc1..3fae772ab 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSubsystemMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSubsystemMessage.java @@ -21,6 +21,22 @@ public class ChannelRequestSubsystemMessage private ModifiableInteger subsystemNameLength; private ModifiableString subsystemName; + public ChannelRequestSubsystemMessage() { + super(); + } + + public ChannelRequestSubsystemMessage(ChannelRequestSubsystemMessage other) { + super(other); + subsystemNameLength = + other.subsystemNameLength != null ? other.subsystemNameLength.createCopy() : null; + subsystemName = other.subsystemName != null ? other.subsystemName.createCopy() : null; + } + + @Override + public ChannelRequestSubsystemMessage createCopy() { + return new ChannelRequestSubsystemMessage(this); + } + public ModifiableInteger getSubsystemNameLength() { return subsystemNameLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestUnknownMessage.java index beed47de2..2737d1929 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestUnknownMessage.java @@ -17,6 +17,21 @@ public class ChannelRequestUnknownMessage private ModifiableByteArray typeSpecificData; + public ChannelRequestUnknownMessage() { + super(); + } + + public ChannelRequestUnknownMessage(ChannelRequestUnknownMessage other) { + super(other); + typeSpecificData = + other.typeSpecificData != null ? other.typeSpecificData.createCopy() : null; + } + + @Override + public ChannelRequestUnknownMessage createCopy() { + return new ChannelRequestUnknownMessage(this); + } + public ModifiableByteArray getTypeSpecificData() { return typeSpecificData; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestWindowChangeMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestWindowChangeMessage.java index 10fa0f8bc..dc229ca9f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestWindowChangeMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestWindowChangeMessage.java @@ -20,6 +20,23 @@ public class ChannelRequestWindowChangeMessage private ModifiableInteger widthPixels; private ModifiableInteger heightPixels; + public ChannelRequestWindowChangeMessage() { + super(); + } + + public ChannelRequestWindowChangeMessage(ChannelRequestWindowChangeMessage other) { + super(other); + widthColumns = other.widthColumns != null ? other.widthColumns.createCopy() : null; + heightRows = other.heightRows != null ? other.heightRows.createCopy() : null; + widthPixels = other.widthPixels != null ? other.widthPixels.createCopy() : null; + heightPixels = other.heightPixels != null ? other.heightPixels.createCopy() : null; + } + + @Override + public ChannelRequestWindowChangeMessage createCopy() { + return new ChannelRequestWindowChangeMessage(this); + } + public ModifiableInteger getWidthColumns() { return widthColumns; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestX11Message.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestX11Message.java index 49ad014fc..0fa338336 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestX11Message.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestX11Message.java @@ -26,6 +26,38 @@ public class ChannelRequestX11Message extends ChannelRequestMessage { + public ChannelSuccessMessage() { + super(); + } + + public ChannelSuccessMessage(ChannelSuccessMessage other) { + super(other); + } + + @Override + public ChannelSuccessMessage createCopy() { + return new ChannelSuccessMessage(this); + } + @Override public ChannelSuccessMessageHandler getHandler(SshContext context) { return new ChannelSuccessMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelWindowAdjustMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelWindowAdjustMessage.java index 8bf43fa5d..e7330cea8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelWindowAdjustMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelWindowAdjustMessage.java @@ -16,6 +16,20 @@ public class ChannelWindowAdjustMessage extends ChannelMessage { + public GlobalRequestFailureMessage() { + super(); + } + + public GlobalRequestFailureMessage(GlobalRequestFailureMessage other) { + super(other); + } + + @Override + public GlobalRequestFailureMessage createCopy() { + return new GlobalRequestFailureMessage(this); + } + @Override public GlobalRequestFailureMessageHandler getHandler(SshContext context) { return new GlobalRequestFailureMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java index b837852ab..956fefa0a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java @@ -24,6 +24,18 @@ public abstract class GlobalRequestMessage> private ModifiableString requestName; private ModifiableByte wantReply; + protected GlobalRequestMessage() { + super(); + } + + protected GlobalRequestMessage(GlobalRequestMessage other) { + super(other); + requestNameLength = + other.requestNameLength != null ? other.requestNameLength.createCopy() : null; + requestName = other.requestName != null ? other.requestName.createCopy() : null; + wantReply = other.wantReply != null ? other.wantReply.createCopy() : null; + } + public ModifiableInteger getRequestNameLength() { return requestNameLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestNoMoreSessionsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestNoMoreSessionsMessage.java index 4c33dc322..c339ae3ce 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestNoMoreSessionsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestNoMoreSessionsMessage.java @@ -13,6 +13,19 @@ public class GlobalRequestNoMoreSessionsMessage extends GlobalRequestMessage { + public GlobalRequestNoMoreSessionsMessage() { + super(); + } + + public GlobalRequestNoMoreSessionsMessage(GlobalRequestNoMoreSessionsMessage other) { + super(other); + } + + @Override + public GlobalRequestNoMoreSessionsMessage createCopy() { + return new GlobalRequestNoMoreSessionsMessage(this); + } + @Override public GlobalRequestNoMoreSessionsMessageHandler getHandler(SshContext context) { return new GlobalRequestNoMoreSessionsMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestOpenSshHostKeysMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestOpenSshHostKeysMessage.java index c617b33b6..a95e9d582 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestOpenSshHostKeysMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestOpenSshHostKeysMessage.java @@ -22,6 +22,20 @@ public class GlobalRequestOpenSshHostKeysMessage private ModifiableByteArray hostKeys; + public GlobalRequestOpenSshHostKeysMessage() { + super(); + } + + public GlobalRequestOpenSshHostKeysMessage(GlobalRequestOpenSshHostKeysMessage other) { + super(other); + hostKeys = other.hostKeys != null ? other.hostKeys.createCopy() : null; + } + + @Override + public GlobalRequestOpenSshHostKeysMessage createCopy() { + return new GlobalRequestOpenSshHostKeysMessage(this); + } + public ModifiableByteArray getHostKeys() { return hostKeys; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestSuccessMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestSuccessMessage.java index 8a7e07d84..6cb9a834e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestSuccessMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestSuccessMessage.java @@ -17,6 +17,21 @@ public class GlobalRequestSuccessMessage extends SshMessage { private ModifiableString text; private ModifiableString endOfMessageSequence; + public AsciiMessage() { + super(); + } + + public AsciiMessage(AsciiMessage other) { + super(other); + text = other.text != null ? other.text.createCopy() : null; + endOfMessageSequence = + other.endOfMessageSequence != null ? other.endOfMessageSequence.createCopy() : null; + } + + @Override + public AsciiMessage createCopy() { + return new AsciiMessage(this); + } + public ModifiableString getText() { return text; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DebugMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DebugMessage.java index 801564907..ea0b246ac 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DebugMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DebugMessage.java @@ -26,6 +26,25 @@ public class DebugMessage extends SshMessage { private ModifiableInteger languageTagLength; private ModifiableString languageTag; + public DebugMessage() { + super(); + } + + public DebugMessage(DebugMessage other) { + super(other); + alwaysDisplay = other.alwaysDisplay != null ? other.alwaysDisplay.createCopy() : null; + messageLength = other.messageLength != null ? other.messageLength.createCopy() : null; + message = other.message != null ? other.message.createCopy() : null; + languageTagLength = + other.languageTagLength != null ? other.languageTagLength.createCopy() : null; + languageTag = other.languageTag != null ? other.languageTag.createCopy() : null; + } + + @Override + public DebugMessage createCopy() { + return new DebugMessage(this); + } + public ModifiableByte getAlwaysDisplay() { return alwaysDisplay; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeGroupMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeGroupMessage.java index e1b354c26..39b670432 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeGroupMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DhGexKeyExchangeGroupMessage.java @@ -22,6 +22,25 @@ public class DhGexKeyExchangeGroupMessage extends SshMessage { private ModifiableInteger languageTagLength; private ModifiableString languageTag; + public DisconnectMessage() { + super(); + } + + public DisconnectMessage(DisconnectMessage other) { + super(other); + reasonCode = other.reasonCode != null ? other.reasonCode.createCopy() : null; + descriptionLength = + other.descriptionLength != null ? other.descriptionLength.createCopy() : null; + description = other.description != null ? other.description.createCopy() : null; + languageTagLength = + other.languageTagLength != null ? other.languageTagLength.createCopy() : null; + languageTag = other.languageTag != null ? other.languageTag.createCopy() : null; + } + + @Override + public DisconnectMessage createCopy() { + return new DisconnectMessage(this); + } + public ModifiableInteger getReasonCode() { return reasonCode; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/EcdhKeyExchangeInitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/EcdhKeyExchangeInitMessage.java index 8d752b295..a18a157dc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/EcdhKeyExchangeInitMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/EcdhKeyExchangeInitMessage.java @@ -20,6 +20,25 @@ public class EcdhKeyExchangeInitMessage extends SshMessage { name = "PublicKeyAlgorithmsRoumenPetrovExtension"), @XmlElement(type = UnknownExtension.class, name = "UnknownExtension") }) - private List> extensions = new ArrayList<>(); + private ArrayList> extensions = new ArrayList<>(); + + public ExtensionInfoMessage() { + super(); + } + + public ExtensionInfoMessage(ExtensionInfoMessage other) { + super(other); + extensionCount = other.extensionCount != null ? other.extensionCount.createCopy() : null; + extensions = other.extensions != null ? new ArrayList<>(other.extensions) : null; + } + + @Override + public ExtensionInfoMessage createCopy() { + return new ExtensionInfoMessage(this); + } public ModifiableInteger getExtensionCount() { return extensionCount; @@ -51,15 +66,16 @@ public void setExtensionCount(int extensionCount) { ModifiableVariableFactory.safelySetValue(this.extensionCount, extensionCount); } - public List> getExtensions() { + public ArrayList> getExtensions() { return extensions; } - public void setExtensions(List> extensions) { + public void setExtensions(ArrayList> extensions) { setExtensions(extensions, false); } - public void setExtensions(List> extensions, boolean adjustLengthField) { + public void setExtensions( + ArrayList> extensions, boolean adjustLengthField) { if (adjustLengthField) { setExtensionCount(extensions.size()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/HybridKeyExchangeInitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/HybridKeyExchangeInitMessage.java index 18be2a55c..79a4fc855 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/HybridKeyExchangeInitMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/HybridKeyExchangeInitMessage.java @@ -27,6 +27,41 @@ public class HybridKeyExchangeInitMessage extends SshMessage { private ModifiableInteger dataLength; private ModifiableByteArray data; + public IgnoreMessage() { + super(); + } + + public IgnoreMessage(IgnoreMessage other) { + super(other); + dataLength = other.dataLength != null ? other.dataLength.createCopy() : null; + data = other.data != null ? other.data.createCopy() : null; + } + + @Override + public IgnoreMessage createCopy() { + return new IgnoreMessage(this); + } + public ModifiableInteger getDataLength() { return dataLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/KeyExchangeInitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/KeyExchangeInitMessage.java index 8f0103657..e1d3b78c9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/KeyExchangeInitMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/KeyExchangeInitMessage.java @@ -48,6 +48,105 @@ public class KeyExchangeInitMessage extends SshMessage { private ModifiableByte firstKeyExchangePacketFollows; private ModifiableInteger reserved; + public KeyExchangeInitMessage() { + super(); + } + + public KeyExchangeInitMessage(KeyExchangeInitMessage other) { + super(other); + cookie = other.cookie != null ? other.cookie.createCopy() : null; + keyExchangeAlgorithmsLength = + other.keyExchangeAlgorithmsLength != null + ? other.keyExchangeAlgorithmsLength.createCopy() + : null; + keyExchangeAlgorithms = + other.keyExchangeAlgorithms != null + ? other.keyExchangeAlgorithms.createCopy() + : null; + serverHostKeyAlgorithmsLength = + other.serverHostKeyAlgorithmsLength != null + ? other.serverHostKeyAlgorithmsLength.createCopy() + : null; + serverHostKeyAlgorithms = + other.serverHostKeyAlgorithms != null + ? other.serverHostKeyAlgorithms.createCopy() + : null; + encryptionAlgorithmsClientToServerLength = + other.encryptionAlgorithmsClientToServerLength != null + ? other.encryptionAlgorithmsClientToServerLength.createCopy() + : null; + encryptionAlgorithmsClientToServer = + other.encryptionAlgorithmsClientToServer != null + ? other.encryptionAlgorithmsClientToServer.createCopy() + : null; + encryptionAlgorithmsServerToClientLength = + other.encryptionAlgorithmsServerToClientLength != null + ? other.encryptionAlgorithmsServerToClientLength.createCopy() + : null; + encryptionAlgorithmsServerToClient = + other.encryptionAlgorithmsServerToClient != null + ? other.encryptionAlgorithmsServerToClient.createCopy() + : null; + macAlgorithmsClientToServerLength = + other.macAlgorithmsClientToServerLength != null + ? other.macAlgorithmsClientToServerLength.createCopy() + : null; + macAlgorithmsClientToServer = + other.macAlgorithmsClientToServer != null + ? other.macAlgorithmsClientToServer.createCopy() + : null; + macAlgorithmsServerToClientLength = + other.macAlgorithmsServerToClientLength != null + ? other.macAlgorithmsServerToClientLength.createCopy() + : null; + macAlgorithmsServerToClient = + other.macAlgorithmsServerToClient != null + ? other.macAlgorithmsServerToClient.createCopy() + : null; + compressionMethodsClientToServerLength = + other.compressionMethodsClientToServerLength != null + ? other.compressionMethodsClientToServerLength.createCopy() + : null; + compressionMethodsClientToServer = + other.compressionMethodsClientToServer != null + ? other.compressionMethodsClientToServer.createCopy() + : null; + compressionMethodsServerToClientLength = + other.compressionMethodsServerToClientLength != null + ? other.compressionMethodsServerToClientLength.createCopy() + : null; + compressionMethodsServerToClient = + other.compressionMethodsServerToClient != null + ? other.compressionMethodsServerToClient.createCopy() + : null; + languagesClientToServerLength = + other.languagesClientToServerLength != null + ? other.languagesClientToServerLength.createCopy() + : null; + languagesClientToServer = + other.languagesClientToServer != null + ? other.languagesClientToServer.createCopy() + : null; + languagesServerToClientLength = + other.languagesServerToClientLength != null + ? other.languagesServerToClientLength.createCopy() + : null; + languagesServerToClient = + other.languagesServerToClient != null + ? other.languagesServerToClient.createCopy() + : null; + firstKeyExchangePacketFollows = + other.firstKeyExchangePacketFollows != null + ? other.firstKeyExchangePacketFollows.createCopy() + : null; + reserved = other.reserved != null ? other.reserved.createCopy() : null; + } + + @Override + public KeyExchangeInitMessage createCopy() { + return new KeyExchangeInitMessage(this); + } + public ModifiableByteArray getCookie() { return cookie; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/NewCompressMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/NewCompressMessage.java index 91b53ba5f..e27610607 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/NewCompressMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/NewCompressMessage.java @@ -13,6 +13,19 @@ public class NewCompressMessage extends SshMessage { + public NewCompressMessage() { + super(); + } + + public NewCompressMessage(NewCompressMessage other) { + super(other); + } + + @Override + public NewCompressMessage createCopy() { + return new NewCompressMessage(this); + } + @Override public NewCompressMessageHandler getHandler(SshContext context) { return new NewCompressMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/NewKeysMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/NewKeysMessage.java index b116219cb..f15c1672f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/NewKeysMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/NewKeysMessage.java @@ -13,6 +13,19 @@ public class NewKeysMessage extends SshMessage { + public NewKeysMessage() { + super(); + } + + public NewKeysMessage(NewKeysMessage other) { + super(other); + } + + @Override + public NewKeysMessage createCopy() { + return new NewKeysMessage(this); + } + @Override public NewKeysMessageHandler getHandler(SshContext context) { return new NewKeysMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PingMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PingMessage.java index 45e40516c..11bacc5f5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PingMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PingMessage.java @@ -20,6 +20,21 @@ public class PingMessage extends SshMessage { private ModifiableInteger dataLength; private ModifiableByteArray data; + public PingMessage() { + super(); + } + + public PingMessage(PingMessage other) { + super(other); + dataLength = other.dataLength != null ? other.dataLength.createCopy() : null; + data = other.data != null ? other.data.createCopy() : null; + } + + @Override + public PingMessage createCopy() { + return new PingMessage(this); + } + public ModifiableInteger getDataLength() { return dataLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PongMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PongMessage.java index bc4f8d95e..100576b44 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PongMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/PongMessage.java @@ -20,6 +20,21 @@ public class PongMessage extends SshMessage { private ModifiableInteger dataLength; private ModifiableByteArray data; + public PongMessage() { + super(); + } + + public PongMessage(PongMessage other) { + super(other); + dataLength = other.dataLength != null ? other.dataLength.createCopy() : null; + data = other.data != null ? other.data.createCopy() : null; + } + + @Override + public PongMessage createCopy() { + return new PongMessage(this); + } + public ModifiableInteger getDataLength() { return dataLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/RsaKeyExchangeDoneMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/RsaKeyExchangeDoneMessage.java index 26e8fe4be..ac57a3e06 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/RsaKeyExchangeDoneMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/RsaKeyExchangeDoneMessage.java @@ -22,6 +22,21 @@ public class RsaKeyExchangeDoneMessage extends SshMessage { private ModifiableInteger serviceNameLength; private ModifiableString serviceName; + public ServiceAcceptMessage() { + super(); + } + + public ServiceAcceptMessage(ServiceAcceptMessage other) { + super(other); + serviceNameLength = + other.serviceNameLength != null ? other.serviceNameLength.createCopy() : null; + serviceName = other.serviceName != null ? other.serviceName.createCopy() : null; + } + + @Override + public ServiceAcceptMessage createCopy() { + return new ServiceAcceptMessage(this); + } + public ModifiableInteger getServiceNameLength() { return serviceNameLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceRequestMessage.java index 41223099a..27a4d5824 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceRequestMessage.java @@ -22,6 +22,22 @@ public class ServiceRequestMessage extends SshMessage { private ModifiableInteger serviceNameLength; private ModifiableString serviceName; + public ServiceRequestMessage() { + super(); + } + + public ServiceRequestMessage(ServiceRequestMessage other) { + super(other); + serviceNameLength = + other.serviceNameLength != null ? other.serviceNameLength.createCopy() : null; + serviceName = other.serviceName != null ? other.serviceName.createCopy() : null; + } + + @Override + public ServiceRequestMessage createCopy() { + return new ServiceRequestMessage(this); + } + public ModifiableInteger getServiceNameLength() { return serviceNameLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnimplementedMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnimplementedMessage.java index 4971b2125..9d8a94e5e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnimplementedMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnimplementedMessage.java @@ -17,6 +17,20 @@ public class UnimplementedMessage extends SshMessage { private ModifiableInteger sequenceNumber; + public UnimplementedMessage() { + super(); + } + + public UnimplementedMessage(UnimplementedMessage other) { + super(other); + sequenceNumber = other.sequenceNumber != null ? other.sequenceNumber.createCopy() : null; + } + + @Override + public UnimplementedMessage createCopy() { + return new UnimplementedMessage(this); + } + public ModifiableInteger getSequenceNumber() { return sequenceNumber; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnknownMessage.java index 75e11d1e1..82a1c0749 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnknownMessage.java @@ -18,6 +18,20 @@ public class UnknownMessage extends SshMessage { private ModifiableByteArray payload; + public UnknownMessage() { + super(); + } + + public UnknownMessage(UnknownMessage other) { + super(other); + payload = other.payload != null ? other.payload.createCopy() : null; + } + + @Override + public UnknownMessage createCopy() { + return new UnknownMessage(this); + } + public ModifiableByteArray getPayload() { return payload; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/VersionExchangeMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/VersionExchangeMessage.java index 2ae39b067..1f1152c5d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/VersionExchangeMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/VersionExchangeMessage.java @@ -20,6 +20,23 @@ public class VersionExchangeMessage extends ProtocolMessage> protected ModifiableString name; + protected AbstractExtension() { + super(); + } + + protected AbstractExtension(AbstractExtension other) { + super(other); + nameLength = other.nameLength != null ? other.nameLength.createCopy() : null; + name = other.name != null ? other.name.createCopy() : null; + } + public ModifiableInteger getNameLength() { return nameLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/DelayCompressionExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/DelayCompressionExtension.java index 7dd905e17..550852a0c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/DelayCompressionExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/DelayCompressionExtension.java @@ -32,6 +32,39 @@ public class DelayCompressionExtension extends AbstractExtension { private ModifiableInteger versionLength; private ModifiableString version; + public PingExtension() { + super(); + } + + public PingExtension(PingExtension other) { + super(other); + versionLength = other.versionLength != null ? other.versionLength.createCopy() : null; + version = other.version != null ? other.version.createCopy() : null; + } + + @Override + public PingExtension createCopy() { + return new PingExtension(this); + } + public ModifiableInteger getVersionLength() { return versionLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/PublicKeyAlgorithmsRoumenPetrovExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/PublicKeyAlgorithmsRoumenPetrovExtension.java index c496df6dd..ea941466e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/PublicKeyAlgorithmsRoumenPetrovExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/PublicKeyAlgorithmsRoumenPetrovExtension.java @@ -23,6 +23,26 @@ public class PublicKeyAlgorithmsRoumenPetrovExtension private ModifiableInteger publicKeyAlgorithmsLength; private ModifiableString publicKeyAlgorithms; + public PublicKeyAlgorithmsRoumenPetrovExtension() { + super(); + } + + public PublicKeyAlgorithmsRoumenPetrovExtension( + PublicKeyAlgorithmsRoumenPetrovExtension other) { + super(other); + publicKeyAlgorithmsLength = + other.publicKeyAlgorithmsLength != null + ? other.publicKeyAlgorithmsLength.createCopy() + : null; + publicKeyAlgorithms = + other.publicKeyAlgorithms != null ? other.publicKeyAlgorithms.createCopy() : null; + } + + @Override + public PublicKeyAlgorithmsRoumenPetrovExtension createCopy() { + return new PublicKeyAlgorithmsRoumenPetrovExtension(this); + } + public ModifiableInteger getPublicKeyAlgorithmsLength() { return publicKeyAlgorithmsLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/ServerSigAlgsExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/ServerSigAlgsExtension.java index eab42c2ac..e4da02e14 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/ServerSigAlgsExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/ServerSigAlgsExtension.java @@ -32,6 +32,27 @@ public class ServerSigAlgsExtension extends AbstractExtension { private ModifiableByteArray value; + public UnknownExtension() { + super(); + } + + public UnknownExtension(UnknownExtension other) { + super(other); + valueLength = other.valueLength != null ? other.valueLength.createCopy() : null; + value = other.value != null ? other.value.createCopy() : null; + } + + @Override + public UnknownExtension createCopy() { + return new UnknownExtension(this); + } + public ModifiableInteger getValueLength() { return valueLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java index 2d0a9f0b5..70ac38fe9 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java @@ -33,6 +33,7 @@ import de.rub.nds.tlsattacker.transport.TransportHandler; import de.rub.nds.tlsattacker.transport.TransportHandlerFactory; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -289,10 +290,10 @@ public class SshContext { // region SSH Extensions /** List of extensions supported by the client */ - private List> clientSupportedExtensions; + private ArrayList> clientSupportedExtensions; /** List of extensions supported by the server */ - private List> serverSupportedExtensions; + private ArrayList> serverSupportedExtensions; /** Add this new field for supported public key algorithms */ private String supportedPublicKeyAlgorithms; @@ -335,6 +336,11 @@ public class SshContext { // endregion + // region Authentication + private int nextPreConfiguredAuthResponsIndex; + + // endregion + // region Connection Protocol private ChannelManager channelManager; @@ -362,10 +368,10 @@ public class SshContext { // region SFTP Extensions /** List of SFTP extensions supported by the client */ - private List> sftpClientSupportedExtensions; + private ArrayList> sftpClientSupportedExtensions; /** List of SFTP extensions supported by the server */ - private List> sftpServerSupportedExtensions; + private ArrayList> sftpServerSupportedExtensions; // endregion @@ -417,6 +423,9 @@ public void init(Config config, AliasedConnection connection) { writeSequenceNumber = 0; readSequenceNumber = 0; handleAsClient = connection.getLocalConnectionEndType() == ConnectionEndType.CLIENT; + + nextPreConfiguredAuthResponsIndex = 0; + channelManager = new ChannelManager(this); sftpManager = new SftpManager(this); } @@ -1092,11 +1101,11 @@ public void setKeySet(KeySet transportKeySet) { // region Getters for SSH Extensions // section general extensions - public Optional>> getClientSupportedExtensions() { + public Optional>> getClientSupportedExtensions() { return Optional.ofNullable(clientSupportedExtensions); } - public Optional>> getServerSupportedExtensions() { + public Optional>> getServerSupportedExtensions() { return Optional.ofNullable(serverSupportedExtensions); } @@ -1148,11 +1157,11 @@ public boolean delayCompressionExtensionSent() { // region Setters for SSH Extensions // section general extensions - public void setClientSupportedExtensions(List> extensions) { + public void setClientSupportedExtensions(ArrayList> extensions) { clientSupportedExtensions = extensions; } - public void setServerSupportedExtensions(List> extensions) { + public void setServerSupportedExtensions(ArrayList> extensions) { serverSupportedExtensions = extensions; } @@ -1209,6 +1218,18 @@ public void setDelayCompressionExtensionSent(boolean sent) { // endregion + // region for Authentication + + public int getNextPreConfiguredAuthResponsIndex() { + return nextPreConfiguredAuthResponsIndex; + } + + public void setNextPreConfiguredAuthResponsIndex(int nextPreConfiguredAuthResponsIndex) { + this.nextPreConfiguredAuthResponsIndex = nextPreConfiguredAuthResponsIndex; + } + + // endregion + // region for Connection Protocol Fields public ChannelManager getChannelManager() { @@ -1297,11 +1318,11 @@ public void setSftpNegotiatedVersion(Integer sftpNegotiatedVersion) { // region Getters for SFTP Extensions // section general SFTP extensions - public Optional>> getSftpClientSupportedExtensions() { + public Optional>> getSftpClientSupportedExtensions() { return Optional.ofNullable(sftpClientSupportedExtensions); } - public Optional>> getSftpServerSupportedExtensions() { + public Optional>> getSftpServerSupportedExtensions() { return Optional.ofNullable(sftpServerSupportedExtensions); } @@ -1310,11 +1331,11 @@ public Optional>> getSftpServerSupportedExtensions // region Setters for SFTP Extensions // section general SFTP extensions - public void setSftpClientSupportedExtensions(List> extensions) { + public void setSftpClientSupportedExtensions(ArrayList> extensions) { sftpClientSupportedExtensions = extensions; } - public void setSftpServerSupportedExtensions(List> extensions) { + public void setSftpServerSupportedExtensions(ArrayList> extensions) { sftpServerSupportedExtensions = extensions; } // endregion diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java index 281b46fc9..8f4975f22 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java @@ -15,8 +15,10 @@ import de.rub.nds.sshattacker.core.crypto.kex.RsaKeyExchange; import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationResponseEntry; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.AbstractExtension; import de.rub.nds.sshattacker.core.state.SshContext; +import java.util.ArrayList; import java.util.List; public abstract class Chooser { @@ -115,9 +117,9 @@ public SshContext getContext() { // region SSH Extensions // section general extensions - public abstract List> getClientSupportedExtensions(); + public abstract ArrayList> getClientSupportedExtensions(); - public abstract List> getServerSupportedExtensions(); + public abstract ArrayList> getServerSupportedExtensions(); // section server-sig-algs extension public abstract List @@ -250,8 +252,14 @@ public CompressionMethod getReceiveCompressionMethod() { // endregion + // region Authentication + public abstract AuthenticationMethod getAuthenticationMethod(); + public abstract ArrayList getNextPreConfiguredAuthResponses(); + + // endregion + // region SFTP Version Exchange public abstract Integer getSftpClientVersion(); @@ -263,9 +271,9 @@ public CompressionMethod getReceiveCompressionMethod() { // region SFTP Extensions // section general extensions - public abstract List> getSftpClientSupportedExtensions(); + public abstract ArrayList> getSftpClientSupportedExtensions(); - public abstract List> getSftpServerSupportedExtensions(); + public abstract ArrayList> getSftpServerSupportedExtensions(); // endregion diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java index 263ab2bc4..807517bc2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java @@ -15,6 +15,7 @@ import de.rub.nds.sshattacker.core.crypto.kex.RsaKeyExchange; import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationResponseEntry; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.AbstractExtension; import de.rub.nds.sshattacker.core.protocol.util.AlgorithmPicker; import de.rub.nds.sshattacker.core.state.SshContext; @@ -492,7 +493,7 @@ public int getServerReserved() { * * @return List of client supported extensions */ - public List> getClientSupportedExtensions() { + public ArrayList> getClientSupportedExtensions() { return context.getClientSupportedExtensions().orElse(config.getClientSupportedExtensions()); } @@ -503,7 +504,7 @@ public List> getClientSupportedExtensions() { * * @return List of server supported extensions */ - public List> getServerSupportedExtensions() { + public ArrayList> getServerSupportedExtensions() { return context.getServerSupportedExtensions().orElse(config.getServerSupportedExtensions()); } @@ -1009,6 +1010,7 @@ public Integer getMaximalDhGroupSize() { // endregion + // region Authentication /** * Retrieves the primary authentication method from config. A context field for authentication * method does not yet exist as the authentication protocol is only implemented for SSH-Attacker @@ -1021,6 +1023,21 @@ public AuthenticationMethod getAuthenticationMethod() { return config.getAuthenticationMethod(); } + /** + * @return The next pre-configured authentication responses + */ + @Override + public ArrayList getNextPreConfiguredAuthResponses() { + int nextIndex = context.getNextPreConfiguredAuthResponsIndex(); + if (nextIndex < config.getPreConfiguredAuthResponses().size()) { + nextIndex++; + return config.getPreConfiguredAuthResponses().get(nextIndex).getResponseEntries(); + } + return null; + } + + // endregion + // region SFTP /** * Retrieves the SFTP client version from context. If no version was received (i.e. out-of-order @@ -1067,7 +1084,7 @@ public Integer getSftpNegotiatedVersion() { * * @return List of client supported SFTP extensions */ - public List> getSftpClientSupportedExtensions() { + public ArrayList> getSftpClientSupportedExtensions() { return context.getSftpClientSupportedExtensions() .orElse(config.getSftpClientSupportedExtensions()); } @@ -1079,7 +1096,7 @@ public List> getSftpClientSupportedExtensions() { * * @return List of server supported SFTP extensions */ - public List> getSftpServerSupportedExtensions() { + public ArrayList> getSftpServerSupportedExtensions() { return context.getSftpServerSupportedExtensions() .orElse(config.getSftpServerSupportedExtensions()); } diff --git a/resources/configs/default_config.xml b/resources/configs/default_config.xml index a5b52d4ad..caaf75541 100644 --- a/resources/configs/default_config.xml +++ b/resources/configs/default_config.xml @@ -305,15 +305,12 @@ secret - false - - false - + From 188179ae9e74c3440013c673890fa468a2bed868 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 2 Dec 2024 10:36:33 +0100 Subject: [PATCH 055/203] Add AuthenticationPrompt and AuthenticationResponse Holders --- .../AuthenticationPromptEntryHandler.java | 57 ++++++++ .../AuthenticationResponseEntryHandler.java | 57 ++++++++ .../holder/AuthenticationPromptEntry.java | 123 ++++++++++++++++++ .../holder/AuthenticationResponseEntry.java | 102 +++++++++++++++ .../AuthenticationPromptEntryParser.java | 55 ++++++++ .../AuthenticationResponseEntryParser.java | 48 +++++++ .../AuthenticationPromptEntryPreparator.java | 26 ++++ ...AuthenticationResponseEntryPreparator.java | 25 ++++ .../AuthenticationPromptEntrySerializer.java | 51 ++++++++ ...AuthenticationResponseEntrySerializer.java | 44 +++++++ 10 files changed, 588 insertions(+) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/handler/holder/AuthenticationPromptEntryHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/handler/holder/AuthenticationResponseEntryHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/holder/AuthenticationPromptEntryParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/holder/AuthenticationResponseEntryParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationPromptEntryPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationResponseEntryPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/holder/AuthenticationPromptEntrySerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/holder/AuthenticationResponseEntrySerializer.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/handler/holder/AuthenticationPromptEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/handler/holder/AuthenticationPromptEntryHandler.java new file mode 100644 index 000000000..21bae1d40 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/handler/holder/AuthenticationPromptEntryHandler.java @@ -0,0 +1,57 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.authentication.handler.holder; + +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationPromptEntry; +import de.rub.nds.sshattacker.core.protocol.authentication.parser.holder.AuthenticationPromptEntryParser; +import de.rub.nds.sshattacker.core.protocol.authentication.preparator.holder.AuthenticationPromptEntryPreparator; +import de.rub.nds.sshattacker.core.protocol.authentication.serializer.holder.AuthenticationPromptEntrySerializer; +import de.rub.nds.sshattacker.core.protocol.common.Handler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class AuthenticationPromptEntryHandler implements Handler { + + private final SshContext context; + + private final AuthenticationPromptEntry authenticationPromptEntry; + + public AuthenticationPromptEntryHandler(SshContext context) { + this(context, null); + } + + public AuthenticationPromptEntryHandler( + SshContext context, AuthenticationPromptEntry authenticationPromptEntry) { + super(); + this.context = context; + this.authenticationPromptEntry = authenticationPromptEntry; + } + + @Override + public void adjustContext() {} + + @Override + public AuthenticationPromptEntryParser getParser(byte[] array) { + return new AuthenticationPromptEntryParser(array); + } + + @Override + public AuthenticationPromptEntryParser getParser(byte[] array, int startPosition) { + return new AuthenticationPromptEntryParser(array, startPosition); + } + + @Override + public AuthenticationPromptEntryPreparator getPreparator() { + return new AuthenticationPromptEntryPreparator( + context.getChooser(), authenticationPromptEntry); + } + + @Override + public AuthenticationPromptEntrySerializer getSerializer() { + return new AuthenticationPromptEntrySerializer(authenticationPromptEntry); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/handler/holder/AuthenticationResponseEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/handler/holder/AuthenticationResponseEntryHandler.java new file mode 100644 index 000000000..9657e4eb8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/handler/holder/AuthenticationResponseEntryHandler.java @@ -0,0 +1,57 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.authentication.handler.holder; + +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationResponseEntry; +import de.rub.nds.sshattacker.core.protocol.authentication.parser.holder.AuthenticationResponseEntryParser; +import de.rub.nds.sshattacker.core.protocol.authentication.preparator.holder.AuthenticationResponseEntryPreparator; +import de.rub.nds.sshattacker.core.protocol.authentication.serializer.holder.AuthenticationResponseEntrySerializer; +import de.rub.nds.sshattacker.core.protocol.common.Handler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class AuthenticationResponseEntryHandler implements Handler { + + private final SshContext context; + + private final AuthenticationResponseEntry authenticationResponseEntry; + + public AuthenticationResponseEntryHandler(SshContext context) { + this(context, null); + } + + public AuthenticationResponseEntryHandler( + SshContext context, AuthenticationResponseEntry authenticationResponseEntry) { + super(); + this.context = context; + this.authenticationResponseEntry = authenticationResponseEntry; + } + + @Override + public void adjustContext() {} + + @Override + public AuthenticationResponseEntryParser getParser(byte[] array) { + return new AuthenticationResponseEntryParser(array); + } + + @Override + public AuthenticationResponseEntryParser getParser(byte[] array, int startPosition) { + return new AuthenticationResponseEntryParser(array, startPosition); + } + + @Override + public AuthenticationResponseEntryPreparator getPreparator() { + return new AuthenticationResponseEntryPreparator( + context.getChooser(), authenticationResponseEntry); + } + + @Override + public AuthenticationResponseEntrySerializer getSerializer() { + return new AuthenticationResponseEntrySerializer(authenticationResponseEntry); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java new file mode 100644 index 000000000..ce10d6b40 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java @@ -0,0 +1,123 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.authentication.message.holder; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; +import de.rub.nds.sshattacker.core.protocol.authentication.handler.holder.AuthenticationPromptEntryHandler; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.util.Converter; +import jakarta.xml.bind.annotation.*; +import java.nio.charset.StandardCharsets; +import java.util.*; + +@XmlAccessorType(XmlAccessType.FIELD) +public class AuthenticationPromptEntry extends ModifiableVariableHolder { + + private ModifiableInteger promptLength; + private ModifiableString prompt; + private ModifiableByte echo; + + public AuthenticationPromptEntry() { + super(); + } + + public AuthenticationPromptEntry(AuthenticationPromptEntry other) { + super(other); + promptLength = other.promptLength != null ? other.promptLength.createCopy() : null; + prompt = other.prompt != null ? other.prompt.createCopy() : null; + echo = other.echo != null ? other.echo.createCopy() : null; + } + + @Override + public AuthenticationPromptEntry createCopy() { + return new AuthenticationPromptEntry(this); + } + + public ModifiableInteger getPromptLength() { + return promptLength; + } + + public void setPromptLength(ModifiableInteger promptLength) { + this.promptLength = promptLength; + } + + public void setPromptLength(int promptLength) { + this.promptLength = + ModifiableVariableFactory.safelySetValue(this.promptLength, promptLength); + } + + public ModifiableString getPrompt() { + return prompt; + } + + public void setPrompt(ModifiableString prompt) { + this.prompt = prompt; + } + + public void setPrompt(String prompt) { + this.prompt = ModifiableVariableFactory.safelySetValue(this.prompt, prompt); + } + + public void setPrompt(ModifiableString prompt, boolean adjustLengthField) { + if (adjustLengthField) { + setPromptLength(prompt.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.prompt = prompt; + } + + public void setPrompt(String prompt, boolean adjustLengthField) { + this.prompt = ModifiableVariableFactory.safelySetValue(this.prompt, prompt); + if (adjustLengthField) { + setPromptLength(this.prompt.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyPrompt(String prompt, boolean adjustLengthField, Config config) { + if (this.prompt == null || this.prompt.getOriginalValue() == null) { + this.prompt = ModifiableVariableFactory.safelySetValue(this.prompt, prompt); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || promptLength == null + || promptLength.getOriginalValue() == null) { + setPromptLength(this.prompt.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + + public ModifiableByte getEcho() { + return echo; + } + + public void setEcho(ModifiableByte echo) { + this.echo = echo; + } + + public void setEcho(byte echo) { + this.echo = ModifiableVariableFactory.safelySetValue(this.echo, echo); + } + + public void setSoftlyEcho(byte echo) { + if (this.echo == null || this.echo.getOriginalValue() == null) { + this.echo = ModifiableVariableFactory.safelySetValue(this.echo, echo); + } + } + + public void setEcho(boolean echo) { + setEcho(Converter.booleanToByte(echo)); + } + + public AuthenticationPromptEntryHandler getHandler(SshContext context) { + return new AuthenticationPromptEntryHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java new file mode 100644 index 000000000..38340eb6a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java @@ -0,0 +1,102 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.authentication.message.holder; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; +import de.rub.nds.sshattacker.core.protocol.authentication.handler.holder.AuthenticationResponseEntryHandler; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import jakarta.xml.bind.annotation.*; +import java.nio.charset.StandardCharsets; +import java.util.*; + +@XmlAccessorType(XmlAccessType.FIELD) +public class AuthenticationResponseEntry extends ModifiableVariableHolder { + + private ModifiableInteger responseLength; + private ModifiableString response; + + public AuthenticationResponseEntry() { + super(); + } + + public AuthenticationResponseEntry(String response) { + super(); + setResponse(response, true); + } + + public AuthenticationResponseEntry(AuthenticationResponseEntry other) { + super(other); + responseLength = other.responseLength != null ? other.responseLength.createCopy() : null; + response = other.response != null ? other.response.createCopy() : null; + } + + @Override + public AuthenticationResponseEntry createCopy() { + return new AuthenticationResponseEntry(this); + } + + public ModifiableInteger getResponseLength() { + return responseLength; + } + + public void setResponseLength(ModifiableInteger responseLength) { + this.responseLength = responseLength; + } + + public void setResponseLength(int responseLength) { + this.responseLength = + ModifiableVariableFactory.safelySetValue(this.responseLength, responseLength); + } + + public ModifiableString getResponse() { + return response; + } + + public void setResponse(ModifiableString response) { + this.response = response; + } + + public void setResponse(String response) { + this.response = ModifiableVariableFactory.safelySetValue(this.response, response); + } + + public void setResponse(ModifiableString response, boolean adjustLengthField) { + if (adjustLengthField) { + setResponseLength(response.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.response = response; + } + + public void setResponse(String response, boolean adjustLengthField) { + this.response = ModifiableVariableFactory.safelySetValue(this.response, response); + if (adjustLengthField) { + setResponseLength(this.response.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void setSoftlyResponse(String response, boolean adjustLengthField, Config config) { + if (this.response == null || this.response.getOriginalValue() == null) { + this.response = ModifiableVariableFactory.safelySetValue(this.response, response); + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || responseLength == null + || responseLength.getOriginalValue() == null) { + setResponseLength(this.response.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + } + + public AuthenticationResponseEntryHandler getHandler(SshContext context) { + return new AuthenticationResponseEntryHandler(context, this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/holder/AuthenticationPromptEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/holder/AuthenticationPromptEntryParser.java new file mode 100644 index 000000000..5dd5d6e61 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/holder/AuthenticationPromptEntryParser.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.authentication.parser.holder; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationPromptEntry; +import de.rub.nds.sshattacker.core.protocol.common.Parser; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class AuthenticationPromptEntryParser extends Parser { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final AuthenticationPromptEntry authenticationPromptEntry = + new AuthenticationPromptEntry(); + + public AuthenticationPromptEntryParser(byte[] array) { + super(array); + } + + public AuthenticationPromptEntryParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseEcho() { + byte echo = parseByteField(1); + authenticationPromptEntry.setEcho(echo); + LOGGER.debug("Echo: {}", echo); + } + + private void parsePrompt() { + int promptLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + authenticationPromptEntry.setPromptLength(promptLength); + LOGGER.debug("Prompt length: {}", promptLength); + String prompt = parseByteString(promptLength, StandardCharsets.UTF_8); + authenticationPromptEntry.setPrompt(prompt); + LOGGER.debug("Prompt: {}", () -> backslashEscapeString(prompt)); + } + + @Override + public final AuthenticationPromptEntry parse() { + parsePrompt(); + parseEcho(); + return authenticationPromptEntry; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/holder/AuthenticationResponseEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/holder/AuthenticationResponseEntryParser.java new file mode 100644 index 000000000..6ab1dab6e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/holder/AuthenticationResponseEntryParser.java @@ -0,0 +1,48 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.authentication.parser.holder; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationResponseEntry; +import de.rub.nds.sshattacker.core.protocol.common.Parser; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class AuthenticationResponseEntryParser extends Parser { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final AuthenticationResponseEntry authenticationResponseEntry = + new AuthenticationResponseEntry(); + + public AuthenticationResponseEntryParser(byte[] array) { + super(array); + } + + public AuthenticationResponseEntryParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseResponse() { + int responseLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + authenticationResponseEntry.setResponseLength(responseLength); + LOGGER.debug("Response length: {}", responseLength); + String response = parseByteString(responseLength, StandardCharsets.UTF_8); + authenticationResponseEntry.setResponse(response); + LOGGER.debug("Response: {}", () -> backslashEscapeString(response)); + } + + @Override + public final AuthenticationResponseEntry parse() { + parseResponse(); + return authenticationResponseEntry; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationPromptEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationPromptEntryPreparator.java new file mode 100644 index 000000000..26852a2fa --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationPromptEntryPreparator.java @@ -0,0 +1,26 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.authentication.preparator.holder; + +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationPromptEntry; +import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class AuthenticationPromptEntryPreparator extends Preparator { + + public AuthenticationPromptEntryPreparator( + Chooser chooser, AuthenticationPromptEntry authenticationPromptEntry) { + super(chooser, authenticationPromptEntry); + } + + @Override + public final void prepare() { + getObject().setPrompt("Response: "); + getObject().setEcho(true); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationResponseEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationResponseEntryPreparator.java new file mode 100644 index 000000000..8577bb955 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationResponseEntryPreparator.java @@ -0,0 +1,25 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.authentication.preparator.holder; + +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationResponseEntry; +import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class AuthenticationResponseEntryPreparator extends Preparator { + + public AuthenticationResponseEntryPreparator( + Chooser chooser, AuthenticationResponseEntry authenticationResponseEntry) { + super(chooser, authenticationResponseEntry); + } + + @Override + public final void prepare() { + getObject().setResponse("6d757575"); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/holder/AuthenticationPromptEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/holder/AuthenticationPromptEntrySerializer.java new file mode 100644 index 000000000..56c544624 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/holder/AuthenticationPromptEntrySerializer.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.authentication.serializer.holder; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationPromptEntry; +import de.rub.nds.sshattacker.core.protocol.common.Serializer; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class AuthenticationPromptEntrySerializer extends Serializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final AuthenticationPromptEntry authenticationPromptEntry; + + public AuthenticationPromptEntrySerializer( + AuthenticationPromptEntry authenticationPromptEntry) { + super(); + this.authenticationPromptEntry = authenticationPromptEntry; + } + + private void serializeEcho() { + byte echo = authenticationPromptEntry.getEcho().getValue(); + LOGGER.debug("Echo: {}", echo); + appendInt(echo, DataFormatConstants.UINT32_SIZE); + } + + private void serializePrompt() { + Integer promptLength = authenticationPromptEntry.getPromptLength().getValue(); + LOGGER.debug("Prompt length: {}", promptLength); + appendInt(promptLength, DataFormatConstants.STRING_SIZE_LENGTH); + String prompt = authenticationPromptEntry.getPrompt().getValue(); + LOGGER.debug("Prompt: {}", () -> backslashEscapeString(prompt)); + appendString(prompt, StandardCharsets.UTF_8); + } + + @Override + protected final void serializeBytes() { + serializePrompt(); + serializeEcho(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/holder/AuthenticationResponseEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/holder/AuthenticationResponseEntrySerializer.java new file mode 100644 index 000000000..1b61fd75d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/holder/AuthenticationResponseEntrySerializer.java @@ -0,0 +1,44 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.authentication.serializer.holder; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationResponseEntry; +import de.rub.nds.sshattacker.core.protocol.common.Serializer; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class AuthenticationResponseEntrySerializer extends Serializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final AuthenticationResponseEntry authenticationResponseEntry; + + public AuthenticationResponseEntrySerializer( + AuthenticationResponseEntry authenticationResponseEntry) { + super(); + this.authenticationResponseEntry = authenticationResponseEntry; + } + + private void serializeResponse() { + Integer responseLength = authenticationResponseEntry.getResponseLength().getValue(); + LOGGER.debug("Response length: {}", responseLength); + appendInt(responseLength, DataFormatConstants.STRING_SIZE_LENGTH); + String response = authenticationResponseEntry.getResponse().getValue(); + LOGGER.debug("Response: {}", () -> backslashEscapeString(response)); + appendString(response, StandardCharsets.UTF_8); + } + + @Override + protected final void serializeBytes() { + serializeResponse(); + } +} From bd5f4fad661c9e9c4188bd41bc1efc7a001a9c35 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 2 Dec 2024 11:28:42 +0100 Subject: [PATCH 056/203] Fix Tests and some messages --- .../request/SftpRequestRemoveDirMessageHandler.java | 8 ++++---- ...rMessage.java => SftpRequestRemoveDirMessage.java} | 11 ++++++----- .../request/SftpRequestRemoveDirMessageParser.java | 8 ++++---- .../extension/SftpAbstractExtensionPreparator.java | 2 +- .../extension/SftpExtensionFileStatVfsPreparator.java | 1 - .../extension/SftpExtensionStatVfsPreparator.java | 1 - .../extension/SftpExtensionVendorIdPreparator.java | 4 +--- .../extension/SftpExtensionWithVersionPreparator.java | 7 +------ .../SftpRequestRemoveDirMessagePreparator.java | 10 +++++----- .../SftpRequestRemoveDirMessageSerializer.java | 6 +++--- .../UserAuthInfoRequestMessagePreparator.java | 9 +++++++++ .../UserAuthInfoResponseMessagePreparator.java | 9 +++++++++ .../holder/AuthenticationResponseEntryPreparator.java | 2 +- .../core/workflow/action/MessageAction.java | 2 +- .../core/workflow/action/ReceiveAction.java | 2 +- .../core/workflow/chooser/DefaultChooser.java | 6 ++++-- .../protocol/common/CyclicParserSerializerTest.java | 2 +- 17 files changed, 51 insertions(+), 39 deletions(-) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/{SftpRequestRmdirMessage.java => SftpRequestRemoveDirMessage.java} (67%) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveDirMessageHandler.java index 8264fe7c2..339b0eb4f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveDirMessageHandler.java @@ -7,21 +7,21 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRmdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveDirMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestRemoveDirMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestRemoveDirMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestRemoveDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRemoveDirMessageHandler - extends SftpRequestMessageHandler { + extends SftpRequestMessageHandler { public SftpRequestRemoveDirMessageHandler(SshContext context) { super(context); } - public SftpRequestRemoveDirMessageHandler(SshContext context, SftpRequestRmdirMessage message) { + public SftpRequestRemoveDirMessageHandler( + SshContext context, SftpRequestRemoveDirMessage message) { super(context, message); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRmdirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveDirMessage.java similarity index 67% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRmdirMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveDirMessage.java index 7fa5c1d9c..2bb94dea0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRmdirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveDirMessage.java @@ -10,19 +10,20 @@ import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestRemoveDirMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; -public class SftpRequestRmdirMessage extends SftpRequestWithPathMessage { +public class SftpRequestRemoveDirMessage + extends SftpRequestWithPathMessage { - public SftpRequestRmdirMessage() { + public SftpRequestRemoveDirMessage() { super(); } - public SftpRequestRmdirMessage(SftpRequestRmdirMessage other) { + public SftpRequestRemoveDirMessage(SftpRequestRemoveDirMessage other) { super(other); } @Override - public SftpRequestRmdirMessage createCopy() { - return new SftpRequestRmdirMessage(this); + public SftpRequestRemoveDirMessage createCopy() { + return new SftpRequestRemoveDirMessage(this); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveDirMessageParser.java index 7fab6cae7..7454301c9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveDirMessageParser.java @@ -7,10 +7,10 @@ */ package de.rub.nds.sshattacker.core.data.sftp.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRmdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveDirMessage; public class SftpRequestRemoveDirMessageParser - extends SftpRequestWithPathMessageParser { + extends SftpRequestWithPathMessageParser { public SftpRequestRemoveDirMessageParser(byte[] array) { super(array); @@ -21,8 +21,8 @@ public SftpRequestRemoveDirMessageParser(byte[] array, int startPosition) { } @Override - public SftpRequestRmdirMessage createMessage() { - return new SftpRequestRmdirMessage(); + public SftpRequestRemoveDirMessage createMessage() { + return new SftpRequestRemoveDirMessage(); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java index 62f6f0cae..9fe29f935 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java @@ -35,7 +35,7 @@ protected SftpAbstractExtensionPreparator(Chooser chooser, E extension, String e @Override public void prepare() { if (extensionName != null) { - getObject().setName(extensionName); + getObject().setSoftlyName(extensionName, true, chooser.getConfig()); } prepareExtensionSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java index f1050605c..743e51796 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java @@ -22,6 +22,5 @@ public SftpExtensionFileStatVfsPreparator( @Override public void prepareExtensionSpecificContents() { getObject().setSoftlyVersion("2", true, chooser.getConfig()); - super.prepareExtensionSpecificContents(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java index 00890419d..247f76015 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java @@ -22,6 +22,5 @@ public SftpExtensionStatVfsPreparator( @Override public void prepareExtensionSpecificContents() { getObject().setSoftlyVersion("2", true, chooser.getConfig()); - super.prepareExtensionSpecificContents(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java index 4162c0083..5c5560a77 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java @@ -16,13 +16,11 @@ public class SftpExtensionVendorIdPreparator extends SftpAbstractExtensionPreparator { public SftpExtensionVendorIdPreparator(Chooser chooser, SftpExtensionVendorId extension) { - super(chooser, extension); + super(chooser, extension, SftpExtension.VENDOR_ID); } @Override public void prepareExtensionSpecificContents() { - getObject().setName(SftpExtension.VENDOR_ID, true); - getObject().setSoftlyVendorName("NDS RUB", true, chooser.getConfig()); getObject().setSoftlyProductName("SSH-Attacker", true, chooser.getConfig()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java index 954111696..8f013ccc7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java @@ -14,18 +14,13 @@ public class SftpExtensionWithVersionPreparator> extends SftpAbstractExtensionPreparator { - private final String extensionName; - public SftpExtensionWithVersionPreparator( Chooser chooser, T extension, SftpExtension extensionName) { - super(chooser, extension); - this.extensionName = extensionName.getName(); + super(chooser, extension, extensionName); } @Override public void prepareExtensionSpecificContents() { - getObject().setName(extensionName, true); - getObject().setSoftlyVersion("1", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java index 851aafcdd..d7b775086 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java @@ -8,18 +8,18 @@ package de.rub.nds.sshattacker.core.data.sftp.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRmdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveDirMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestRemoveDirMessagePreparator - extends SftpMessagePreparator { + extends SftpRequestMessagePreparator { - public SftpRequestRemoveDirMessagePreparator(Chooser chooser, SftpRequestRmdirMessage message) { + public SftpRequestRemoveDirMessagePreparator( + Chooser chooser, SftpRequestRemoveDirMessage message) { super(chooser, message, SftpPacketTypeConstant.SSH_FXP_RMDIR); } - public void prepareMessageSpecificContents() { + public void prepareRequestSpecificContents() { getObject().setSoftlyPath("/tmp/ssh-attacker", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveDirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveDirMessageSerializer.java index b41bfcb3e..f4e54ed0e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveDirMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveDirMessageSerializer.java @@ -7,12 +7,12 @@ */ package de.rub.nds.sshattacker.core.data.sftp.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRmdirMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveDirMessage; public class SftpRequestRemoveDirMessageSerializer - extends SftpRequestWithPathMessageSerializer { + extends SftpRequestWithPathMessageSerializer { - public SftpRequestRemoveDirMessageSerializer(SftpRequestRmdirMessage message) { + public SftpRequestRemoveDirMessageSerializer(SftpRequestRemoveDirMessage message) { super(message); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java index 6a6abb2ce..82229a9e8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java @@ -26,5 +26,14 @@ public void prepareMessageSpecificContents() { getObject().setInstruction("", true); getObject().setLanguageTag("", true); getObject().setPromptEntriesCount(0); + + getObject() + .getPromptEntries() + .forEach( + promptEntry -> + promptEntry + .getHandler(chooser.getContext()) + .getPreparator() + .prepare()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java index 3bf206508..683c0a9fa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java @@ -31,5 +31,14 @@ public void prepareMessageSpecificContents() { if (nextResponses != null) { getObject().setResponseEntries(nextResponses, true); } + + getObject() + .getResponseEntries() + .forEach( + responseEntry -> + responseEntry + .getHandler(chooser.getContext()) + .getPreparator() + .prepare()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationResponseEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationResponseEntryPreparator.java index 8577bb955..63036cf20 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationResponseEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationResponseEntryPreparator.java @@ -20,6 +20,6 @@ public AuthenticationResponseEntryPreparator( @Override public final void prepare() { - getObject().setResponse("6d757575"); + getObject().setResponse("6d757575", true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java index dbfbd5c74..3f58a42f5 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java @@ -166,7 +166,7 @@ public abstract class MessageAction extends ConnectionBoundAction { @XmlElement(type = SftpRequestRealPathMessage.class, name = "SftpRequestRealPath"), @XmlElement(type = SftpRequestRemoveMessage.class, name = "SftpRequestRemove"), @XmlElement(type = SftpRequestRenameMessage.class, name = "SftpRequestRename"), - @XmlElement(type = SftpRequestRmdirMessage.class, name = "SftpRequestRmdir"), + @XmlElement(type = SftpRequestRemoveDirMessage.class, name = "SftpRequestRmdir"), @XmlElement(type = SftpRequestSetStatMessage.class, name = "SftpRequestSetStat"), @XmlElement( type = SftpRequestSpaceAvailableMessage.class, diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java index 129f4ea72..24354c2de 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java @@ -177,7 +177,7 @@ public class ReceiveAction extends MessageAction implements ReceivingAction { @XmlElement(type = SftpRequestRealPathMessage.class, name = "SftpRequestRealPath"), @XmlElement(type = SftpRequestRemoveMessage.class, name = "SftpRequestRemove"), @XmlElement(type = SftpRequestRenameMessage.class, name = "SftpRequestRename"), - @XmlElement(type = SftpRequestRmdirMessage.class, name = "SftpRequestRmdir"), + @XmlElement(type = SftpRequestRemoveDirMessage.class, name = "SftpRequestRmdir"), @XmlElement(type = SftpRequestSetStatMessage.class, name = "SftpRequestSetStat"), @XmlElement( type = SftpRequestSpaceAvailableMessage.class, diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java index 807517bc2..788a31f8f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java @@ -1030,8 +1030,10 @@ public AuthenticationMethod getAuthenticationMethod() { public ArrayList getNextPreConfiguredAuthResponses() { int nextIndex = context.getNextPreConfiguredAuthResponsIndex(); if (nextIndex < config.getPreConfiguredAuthResponses().size()) { - nextIndex++; - return config.getPreConfiguredAuthResponses().get(nextIndex).getResponseEntries(); + ArrayList result = + config.getPreConfiguredAuthResponses().get(nextIndex).getResponseEntries(); + context.setNextPreConfiguredAuthResponsIndex(nextIndex + 1); + return result; } return null; } diff --git a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/common/CyclicParserSerializerTest.java b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/common/CyclicParserSerializerTest.java index 9c22ed373..9129ca758 100644 --- a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/common/CyclicParserSerializerTest.java +++ b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/common/CyclicParserSerializerTest.java @@ -50,7 +50,7 @@ public Stream generateCyclicDefaultConstructorPairsDynamicTests() { Set>> excludedClasses = new HashSet<>(); // TODO: Fix HybridKeyExchangeReplyMessagePreparator excludedClasses.add(HybridKeyExchangeReplyMessage.class); - return new Reflections("de.rub.nds.sshattacker.core.protocol") + return new Reflections("de.rub.nds.sshattacker.core") .getSubTypesOf(ProtocolMessage.class).stream() .filter(messageClass -> !Modifier.isAbstract(messageClass.getModifiers())) .filter(messageClass -> !excludedClasses.contains(messageClass)) From b87b67b07f60afd9f6cb53e6aaab07d155ea9b50 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 2 Dec 2024 15:38:24 +0100 Subject: [PATCH 057/203] Add copy methods to all Actions --- .idea/inspectionProfiles/Project_Default.xml | 10 ++- .../sshattacker/core/data/DataMessage.java | 13 +++- .../core/data/sftp/SftpMessage.java | 3 + .../sftp/message/SftpHandshakeMessage.java | 10 ++- .../SftpRequestExtendedMessage.java | 3 + .../SftpRequestExtendedWithHandleMessage.java | 3 + .../SftpRequestExtendedWithPathMessage.java | 3 + .../extension/SftpExtensionWithVersion.java | 3 + .../message/request/SftpRequestMessage.java | 3 + .../request/SftpRequestWithHandleMessage.java | 3 + .../request/SftpRequestWithPathMessage.java | 3 + .../message/response/SftpResponseMessage.java | 3 + .../core/packet/AbstractPacket.java | 3 + .../message/UserAuthRequestMessage.java | 3 + .../core/protocol/common/ProtocolMessage.java | 3 + .../core/protocol/common/SshMessage.java | 3 + .../connection/message/ChannelMessage.java | 3 + .../message/ChannelOpenMessage.java | 3 + .../message/ChannelRequestMessage.java | 3 + .../message/GlobalRequestMessage.java | 3 + .../message/ExtensionInfoMessage.java | 7 +- .../message/extension/AbstractExtension.java | 3 + .../core/workflow/WorkflowTrace.java | 27 +++++--- .../workflow/WorkflowTraceNormalizer.java | 47 ++++++++++--- .../action/ActivateEncryptionAction.java | 9 +++ .../action/ChangeCompressionAction.java | 11 +++ .../action/ChangePacketLayerAction.java | 11 +++ .../action/ConnectionBoundAction.java | 31 +++------ .../action/DeactivateEncryptionAction.java | 9 +++ .../action/DynamicDelayCompressionAction.java | 9 +++ .../DynamicExtensionNegotiationAction.java | 9 +++ .../action/DynamicKeyExchangeAction.java | 9 +++ .../workflow/action/DynamicMessageAction.java | 15 ++++- .../action/ForwardMessagesAction.java | 57 ++++++++++++++-- .../core/workflow/action/GeneralAction.java | 18 +++-- .../core/workflow/action/MessageAction.java | 34 ++++++++-- .../action/ProxyFilterMessagesAction.java | 27 ++++++-- .../core/workflow/action/ReceiveAction.java | 67 ++++++++++++++++--- .../core/workflow/action/SendAction.java | 10 +++ .../core/workflow/action/SshAction.java | 24 +++---- .../action/executor/MessageActionResult.java | 29 ++++---- .../action/executor/ReceiveMessageHelper.java | 7 +- .../action/executor/SendMessageHelper.java | 18 +++-- .../workflow/factory/SshActionFactory.java | 19 +++--- .../factory/WorkflowConfigurationFactory.java | 4 +- 45 files changed, 461 insertions(+), 134 deletions(-) diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 0ad4972f7..4103ec205 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -38,7 +38,6 @@ - @@ -58,6 +57,9 @@ + + @@ -240,7 +242,6 @@ -

Not that this method converts the connections list to an ArrayList. If you want to + * maintain a valid reference to the inner list. Then use the method with an ArrayList. */ public void setConnections(List connections) { this.connections = new ArrayList<>(connections); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceNormalizer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceNormalizer.java index 011b59ac8..93fc167b4 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceNormalizer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceNormalizer.java @@ -41,7 +41,7 @@ public static void normalize(WorkflowTrace trace, Config config) { * @param mode The mode the Trace is run in */ public static void normalize(WorkflowTrace trace, Config config, RunningModeType mode) { - List traceConnections = trace.getConnections(); + ArrayList traceConnections = trace.getConnections(); InboundConnection defaultInCon = config.getDefaultServerConnection().getCopy(); OutboundConnection defaultOutCon = config.getDefaultClientConnection().getCopy(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/filter/DefaultFilter.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/filter/DefaultFilter.java index 95c830329..7b4f480a6 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/filter/DefaultFilter.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/filter/DefaultFilter.java @@ -18,7 +18,6 @@ import de.rub.nds.sshattacker.core.workflow.action.SshAction; import de.rub.nds.tlsattacker.transport.ConnectionEndType; import java.util.ArrayList; -import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -45,8 +44,8 @@ public DefaultFilter(Config config) { public void applyFilter(WorkflowTrace trace) { WorkflowTraceNormalizer.assertNormalizedWorkflowTrace(trace); - List traceConnections = trace.getConnections(); - List strippedTraceConnections = new ArrayList<>(); + ArrayList traceConnections = trace.getConnections(); + ArrayList strippedTraceConnections = new ArrayList<>(); InboundConnection defaultInCon = config.getDefaultServerConnection().getCopy(); OutboundConnection defaultOutCon = config.getDefaultClientConnection().getCopy(); From ee50815246cb94c2f9307e2998711dd7a0216c26 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sun, 15 Dec 2024 19:27:39 +0100 Subject: [PATCH 067/203] Add to some actions toString() methods --- .../core/workflow/action/ActivateEncryptionAction.java | 5 +++++ .../core/workflow/action/ChangeCompressionAction.java | 10 ++++++++++ .../core/workflow/action/ChangePacketLayerAction.java | 10 ++++++++++ .../workflow/action/DeactivateEncryptionAction.java | 5 +++++ .../core/workflow/action/DynamicMessageAction.java | 9 ++++++++- 5 files changed, 38 insertions(+), 1 deletion(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ActivateEncryptionAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ActivateEncryptionAction.java index 62bcda118..ddd337ea9 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ActivateEncryptionAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ActivateEncryptionAction.java @@ -84,4 +84,9 @@ public void reset(boolean resetModifiableVariables) { public boolean executedAsPlanned() { return isExecuted(); } + + @Override + public String toString() { + return "ActivateEncryptionAction{" + '}'; + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangeCompressionAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangeCompressionAction.java index c53ef1f89..34a1447a9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangeCompressionAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangeCompressionAction.java @@ -86,4 +86,14 @@ public void reset(boolean resetModifiableVariables) { public boolean executedAsPlanned() { return isExecuted(); } + + @Override + public String toString() { + return "ChangeCompressionAction{" + + "previousAlgorithm=" + + previousAlgorithm + + ", targetAlgorithm=" + + targetAlgorithm + + '}'; + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java index c5ae7a551..bfc4fff40 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java @@ -100,4 +100,14 @@ public void reset(boolean resetModifiableVariables) { public boolean executedAsPlanned() { return isExecuted(); } + + @Override + public String toString() { + return "ChangePacketLayerAction{" + + "packetLayerType=" + + packetLayerType + + ", enableAsciiMode=" + + enableAsciiMode + + '}'; + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DeactivateEncryptionAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DeactivateEncryptionAction.java index 3293e5765..c996187d2 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DeactivateEncryptionAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DeactivateEncryptionAction.java @@ -54,4 +54,9 @@ public void reset(boolean resetModifiableVariables) { public boolean executedAsPlanned() { return isExecuted(); } + + @Override + public String toString() { + return "DeactivateEncryptionAction{" + '}'; + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java index 5512e6cbe..eefc0c2b8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java @@ -101,7 +101,14 @@ protected void initEmptyLists() { @Override public String toString() { - StringBuilder sb = new StringBuilder("Dynamic Actions:\n"); + StringBuilder sb = new StringBuilder(); + + sb.append(getClass().getSimpleName()).append(":"); + if (!isExecuted()) { + sb = new StringBuilder(" (not executed)"); + } + sb.append("\n"); + sb.append("Dynamic Actions:\n"); if (sshActions != null && !sshActions.isEmpty()) { for (SshAction sshAction : sshActions) { sb.append(sshAction.toString()); From 2909f1141278b79637244e5f0e0f0e844e98331d Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sun, 15 Dec 2024 19:42:34 +0100 Subject: [PATCH 068/203] Add "not executed" to created toString() methods from last commit --- .../action/ActivateEncryptionAction.java | 6 +++++- .../action/ChangeCompressionAction.java | 21 +++++++++++++------ .../action/ChangePacketLayerAction.java | 21 +++++++++++++------ .../action/DeactivateEncryptionAction.java | 6 +++++- .../workflow/action/DynamicMessageAction.java | 7 ++++--- 5 files changed, 44 insertions(+), 17 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ActivateEncryptionAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ActivateEncryptionAction.java index ddd337ea9..adfc704f3 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ActivateEncryptionAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ActivateEncryptionAction.java @@ -87,6 +87,10 @@ public boolean executedAsPlanned() { @Override public String toString() { - return "ActivateEncryptionAction{" + '}'; + if (isExecuted()) { + return "ActivateEncryptionAction"; + } else { + return "ActivateEncryptionAction (not executed)"; + } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangeCompressionAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangeCompressionAction.java index 34a1447a9..61d3324c8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangeCompressionAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangeCompressionAction.java @@ -89,11 +89,20 @@ public boolean executedAsPlanned() { @Override public String toString() { - return "ChangeCompressionAction{" - + "previousAlgorithm=" - + previousAlgorithm - + ", targetAlgorithm=" - + targetAlgorithm - + '}'; + if (isExecuted()) { + return "ChangeCompressionAction{" + + "previousAlgorithm=" + + previousAlgorithm + + ", targetAlgorithm=" + + targetAlgorithm + + '}'; + } else { + return "ChangeCompressionAction{" + + "previousAlgorithm=" + + previousAlgorithm + + ", targetAlgorithm=" + + targetAlgorithm + + "} (not executed)"; + } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java index bfc4fff40..067fab047 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java @@ -103,11 +103,20 @@ public boolean executedAsPlanned() { @Override public String toString() { - return "ChangePacketLayerAction{" - + "packetLayerType=" - + packetLayerType - + ", enableAsciiMode=" - + enableAsciiMode - + '}'; + if (isExecuted()) { + return "ChangePacketLayerAction{" + + "packetLayerType=" + + packetLayerType + + ", enableAsciiMode=" + + enableAsciiMode + + '}'; + } else { + return "ChangePacketLayerAction{" + + "packetLayerType=" + + packetLayerType + + ", enableAsciiMode=" + + enableAsciiMode + + "} (not executed)"; + } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DeactivateEncryptionAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DeactivateEncryptionAction.java index c996187d2..55c40b160 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DeactivateEncryptionAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DeactivateEncryptionAction.java @@ -57,6 +57,10 @@ public boolean executedAsPlanned() { @Override public String toString() { - return "DeactivateEncryptionAction{" + '}'; + if (isExecuted()) { + return "DeactivateEncryptionAction"; + } else { + return "DeactivateEncryptionAction (not executed)"; + } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java index eefc0c2b8..e4f3b80b6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java @@ -103,11 +103,12 @@ protected void initEmptyLists() { public String toString() { StringBuilder sb = new StringBuilder(); - sb.append(getClass().getSimpleName()).append(":"); + sb.append(getClass().getSimpleName()); if (!isExecuted()) { - sb = new StringBuilder(" (not executed)"); + sb.append(": (not executed)\n"); + } else { + sb.append(":"); } - sb.append("\n"); sb.append("Dynamic Actions:\n"); if (sshActions != null && !sshActions.isEmpty()) { for (SshAction sshAction : sshActions) { From 955ffe63309a82a10107c42731ad5d8f4a98b344 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sun, 15 Dec 2024 20:40:22 +0100 Subject: [PATCH 069/203] Fix toString() again, use for loop. I thought about streams before (would improve readability, but not necessary here). --- .../core/workflow/WorkflowTrace.java | 5 +-- .../action/ChangeCompressionAction.java | 2 +- .../action/ChangePacketLayerAction.java | 2 +- .../workflow/action/DynamicMessageAction.java | 8 +++-- .../core/workflow/action/MessageAction.java | 10 ++++-- .../core/workflow/action/ReceiveAction.java | 31 +++++++++++-------- .../core/workflow/action/SendAction.java | 21 +++++++------ .../core/workflow/action/SshAction.java | 7 +---- 8 files changed, 48 insertions(+), 38 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTrace.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTrace.java index 2ee1df8e8..4d063ba6f 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTrace.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTrace.java @@ -317,6 +317,7 @@ public String toString() { for (SshAction action : sshActions) { sb.append("\n"); sb.append(action.toString()); + sb.append("\n"); } return sb.toString(); } @@ -339,10 +340,10 @@ public int hashCode() { public boolean executedAsPlanned() { for (SshAction action : sshActions) { if (!action.executedAsPlanned()) { - LOGGER.debug("Action {} did not execute as planned", action.toCompactString()); + LOGGER.debug("Action {} did not execute as planned", action::toCompactString); return false; } else { - LOGGER.debug("Action {} executed as planned", action.toCompactString()); + LOGGER.debug("Action {} executed as planned", action::toCompactString); } } return true; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangeCompressionAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangeCompressionAction.java index 61d3324c8..04e3584b9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangeCompressionAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangeCompressionAction.java @@ -95,7 +95,7 @@ public String toString() { + previousAlgorithm + ", targetAlgorithm=" + targetAlgorithm - + '}'; + + "}"; } else { return "ChangeCompressionAction{" + "previousAlgorithm=" diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java index 067fab047..7ebd19488 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ChangePacketLayerAction.java @@ -109,7 +109,7 @@ public String toString() { + packetLayerType + ", enableAsciiMode=" + enableAsciiMode - + '}'; + + "}"; } else { return "ChangePacketLayerAction{" + "packetLayerType=" diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java index e4f3b80b6..73b151a79 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java @@ -111,9 +111,11 @@ public String toString() { } sb.append("Dynamic Actions:\n"); if (sshActions != null && !sshActions.isEmpty()) { - for (SshAction sshAction : sshActions) { - sb.append(sshAction.toString()); - sb.append("\n"); + for (int i = 0; i < sshActions.size(); i++) { + if (i > 0) { + sb.append("\n"); + } + sb.append(messages.get(i).toString()); } } else { sb.append("(no actions set)"); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java index 42004ab7c..5d179496a 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java @@ -264,7 +264,12 @@ public static String getReadableString(List> messages, Boolea return ""; } StringBuilder builder = new StringBuilder(); - for (ProtocolMessage message : messages) { + + for (int i = 0; i < messages.size(); i++) { + if (i > 0) { + builder.append(", "); + } + ProtocolMessage message = messages.get(i); if (verbose) { builder.append(message.toString()); } else { @@ -273,9 +278,8 @@ public static String getReadableString(List> messages, Boolea if (!message.isRequired()) { builder.append("*"); } - builder.append(", "); } - return builder.deleteCharAt(builder.lastIndexOf(", ")).toString(); + return builder.toString(); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java index dcd134e1d..39907a399 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java @@ -368,25 +368,28 @@ public void execute(State state) throws WorkflowExecutionException { public String toString() { StringBuilder sb = new StringBuilder("Receive Action:\n"); - sb.append("\tExpected:"); + sb.append("\tExpected: "); if (expectedMessages != null) { - for (ProtocolMessage message : expectedMessages) { - sb.append(message.toCompactString()); - sb.append(", "); + for (int i = 0; i < expectedMessages.size(); i++) { + if (i > 0) { + sb.append(", "); + } + sb.append(expectedMessages.get(i).toCompactString()); } } else { sb.append(" (no messages set)"); } - sb.append("\n\tActual:"); + sb.append("\n\tActual: "); if (messages != null && !messages.isEmpty()) { - for (ProtocolMessage message : messages) { - sb.append(message.toCompactString()); - sb.append(", "); + for (int i = 0; i < messages.size(); i++) { + if (i > 0) { + sb.append(", "); + } + sb.append(messages.get(i).toCompactString()); } } else { sb.append(" (no messages set)"); } - sb.append("\n"); return sb.toString(); } @@ -395,11 +398,13 @@ public String toCompactString() { StringBuilder sb = new StringBuilder(super.toCompactString()); if (expectedMessages != null && !expectedMessages.isEmpty()) { sb.append(" ("); - for (ProtocolMessage message : expectedMessages) { - sb.append(message.toCompactString()); - sb.append(","); + for (int i = 0; i < expectedMessages.size(); i++) { + if (i > 0) { + sb.append(", "); + } + sb.append(expectedMessages.get(i).toCompactString()); } - sb.deleteCharAt(sb.lastIndexOf(",")).append(")"); + sb.append(")"); } else { sb.append(" (no messages set)"); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SendAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SendAction.java index c6e7057d8..7135a4073 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SendAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SendAction.java @@ -132,13 +132,14 @@ public String toString() { } else { sb = new StringBuilder("Send Action: (not executed)\n"); } - sb.append("\tMessages:"); + sb.append("\tMessages: "); if (messages != null) { - for (ProtocolMessage message : messages) { - sb.append(message.toCompactString()); - sb.append(", "); + for (int i = 0; i < messages.size(); i++) { + if (i > 0) { + sb.append(", "); + } + sb.append(messages.get(i).toCompactString()); } - sb.append("\n"); } else { sb.append("null (no messages set)"); } @@ -150,11 +151,13 @@ public String toCompactString() { StringBuilder sb = new StringBuilder(super.toCompactString()); if (messages != null && !messages.isEmpty()) { sb.append(" ("); - for (ProtocolMessage message : messages) { - sb.append(message.toCompactString()); - sb.append(","); + for (int i = 0; i < messages.size(); i++) { + if (i > 0) { + sb.append(", "); + } + sb.append(messages.get(i).toCompactString()); } - sb.deleteCharAt(sb.lastIndexOf(",")).append(")"); + sb.append(")"); } else { sb.append(" (no messages set)"); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SshAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SshAction.java index b8829a016..824220ae3 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SshAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SshAction.java @@ -119,12 +119,7 @@ public boolean isMessageAction() { @Override public String aliasesToString() { - StringBuilder sb = new StringBuilder(); - for (String alias : getAllAliases()) { - sb.append(alias).append(","); - } - sb.deleteCharAt(sb.lastIndexOf(",")); - return sb.toString(); + return String.join(",", getAllAliases()); } public String toCompactString() { From 67fd6baa1012cec28771b802df175154108c95d2 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sun, 15 Dec 2024 21:56:35 +0100 Subject: [PATCH 070/203] Add missing XmlElementWrapper --- .../workflow/action/DynamicMessageAction.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java index 73b151a79..46242ae7c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java @@ -10,6 +10,10 @@ import de.rub.nds.sshattacker.core.connection.AliasedConnection; import de.rub.nds.sshattacker.core.packet.AbstractPacket; import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessage; +import de.rub.nds.sshattacker.core.protocol.transport.message.DisconnectMessage; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElementWrapper; +import jakarta.xml.bind.annotation.XmlElements; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -19,6 +23,21 @@ public abstract class DynamicMessageAction extends MessageAction implements ReceivingAction, SendingAction { + @XmlElementWrapper + @XmlElements({ + @XmlElement(type = ActivateEncryptionAction.class, name = "ActivateEncryptionAction"), + @XmlElement(type = ChangeCompressionAction.class, name = "ChangeCompressionAction"), + @XmlElement(type = ChangePacketLayerAction.class, name = "ChangePacketLayerAction"), + @XmlElement(type = DeactivateEncryptionAction.class, name = "DeactivateEncryptionAction"), + @XmlElement(type = DynamicDelayCompressionAction.class, name = "DynamicDelayCompressionAction"), + @XmlElement(type = DynamicExtensionNegotiationAction.class, name = "DynamicExtensionNegotiationAction"), + @XmlElement(type = DynamicKeyExchangeAction.class, name = "DynamicKeyExchangeAction"), + @XmlElement(type = ForwardMessagesAction.class, name = "ForwardMessagesAction"), + @XmlElement(type = ProxyFilterMessagesAction.class, name = "ProxyFilterMessagesAction"), + @XmlElement(type = ReceiveAction.class, name = "ReceiveAction"), + @XmlElement(type = SendAction.class, name = "SendAction"), + @XmlElement(type = SendMangerSecretAction.class, name = "SendMangerSecretAction") + }) protected ArrayList sshActions = new ArrayList<>(); protected DynamicMessageAction() { From 27f88625ec7b2feec2c6dcc683d3adfea81b57b1 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 16 Dec 2024 11:47:35 +0100 Subject: [PATCH 071/203] Allow fallback to no compression too (similar to fallback to no encryption). Change the way the fallback is handled, so you can configure to not allow fallback and skip the packet from parsing. --- .../nds/sshattacker/core/config/Config.java | 39 +++++++++++++++++-- .../core/exceptions/CompressionException.java | 22 +++++++++++ .../exceptions/DecompressionException.java | 22 +++++++++++ .../core/exceptions/DecryptionException.java | 2 +- .../core/packet/cipher/PacketCipher.java | 12 ++++++ .../core/packet/compressor/Decompressor.java | 3 +- .../packet/compressor/PacketCompressor.java | 8 +++- .../packet/compressor/PacketDecompressor.java | 3 +- .../compressor/compression/Compression.java | 6 ++- .../compression/DeflateCompression.java | 38 ++++++------------ .../crypto/AbstractPacketDecryptor.java | 7 ++-- .../core/packet/crypto/PacketDecryptor.java | 30 +++++--------- .../packet/layer/AbstractPacketLayer.java | 38 ++++++++++++++---- .../core/packet/layer/BinaryPacketLayer.java | 13 ++++--- .../core/packet/layer/BlobPacketLayer.java | 6 ++- .../workflow/action/DynamicMessageAction.java | 9 +++-- 16 files changed, 182 insertions(+), 76 deletions(-) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/CompressionException.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/DecompressionException.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index c39147a12..fc4feb09f 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -429,13 +429,25 @@ public class Config implements Serializable { // endregion - // region general SFTP settings + // region general SSH settings /** * Whether the length fields in the messages should be consistent with their corresponding * fields. */ private Boolean alwaysPrepareLengthFields; + /** + * Whether decryption should be omitted if an error occurs during the decryption of a packet. + * Otherwise, the packet is not parsed any further + */ + private Boolean fallbackToNoDecryptionOnError; + + /** + * Whether decompression should be omitted if an error occurs during the decompression of a + * packet. Otherwise, the packet is not parsed any further. + */ + private Boolean fallbackToNoDecompressionOnError; + // endregion // region SFTP Version Exchange @@ -1207,6 +1219,8 @@ public Config() { // region general SSH Settings alwaysPrepareLengthFields = true; + fallbackToNoDecryptionOnError = true; + fallbackToNoDecompressionOnError = true; // endregion // region Workflow settings initialization @@ -1443,6 +1457,8 @@ public Config(Config other) { defaultSubsystemName = other.defaultSubsystemName; defaultBreakLength = other.defaultBreakLength; alwaysPrepareLengthFields = other.alwaysPrepareLengthFields; + fallbackToNoDecryptionOnError = other.fallbackToNoDecryptionOnError; + fallbackToNoDecompressionOnError = other.fallbackToNoDecompressionOnError; sftpClientVersion = other.sftpClientVersion; sftpServerVersion = other.sftpServerVersion; sftpNegotiatedVersion = other.sftpNegotiatedVersion; @@ -2233,12 +2249,29 @@ public void setDefaultBreakLength(int defaultBreakLength) { // endregion // region general SSH settings + + public Boolean getAlwaysPrepareLengthFields() { + return alwaysPrepareLengthFields; + } + public void setAlwaysPrepareLengthFields(Boolean alwaysPrepareLengthFields) { this.alwaysPrepareLengthFields = alwaysPrepareLengthFields; } - public Boolean getAlwaysPrepareLengthFields() { - return alwaysPrepareLengthFields; + public Boolean getFallbackToNoDecryptionOnError() { + return fallbackToNoDecryptionOnError; + } + + public void setFallbackToNoDecryptionOnError(Boolean fallbackToNoDecryptionOnError) { + this.fallbackToNoDecryptionOnError = fallbackToNoDecryptionOnError; + } + + public Boolean getFallbackToNoDecompressionOnError() { + return fallbackToNoDecompressionOnError; + } + + public void setFallbackToNoDecompressionOnError(Boolean fallbackToNoDecompressionOnError) { + this.fallbackToNoDecompressionOnError = fallbackToNoDecompressionOnError; } // endregion diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/CompressionException.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/CompressionException.java new file mode 100644 index 000000000..280711647 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/CompressionException.java @@ -0,0 +1,22 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.exceptions; + +public class CompressionException extends Exception { + public CompressionException() { + super(); + } + + public CompressionException(String message) { + super(message); + } + + public CompressionException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/DecompressionException.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/DecompressionException.java new file mode 100644 index 000000000..0c3d082e8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/DecompressionException.java @@ -0,0 +1,22 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.exceptions; + +public class DecompressionException extends Exception { + public DecompressionException() { + super(); + } + + public DecompressionException(String message) { + super(message); + } + + public DecompressionException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/DecryptionException.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/DecryptionException.java index be0c23348..a770cf473 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/DecryptionException.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/exceptions/DecryptionException.java @@ -7,7 +7,7 @@ */ package de.rub.nds.sshattacker.core.exceptions; -public class DecryptionException extends RuntimeException { +public class DecryptionException extends Exception { public DecryptionException() { super(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketCipher.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketCipher.java index 2181d82a4..958822979 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketCipher.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/cipher/PacketCipher.java @@ -181,4 +181,16 @@ public int getBytesLeft() { return super.getBytesLeft(); } } + + @Override + public String toString() { + return "PacketCipher{" + + "encryptionAlgorithm=" + + encryptionAlgorithm + + ", macAlgorithm=" + + macAlgorithm + + ", mode=" + + mode + + '}'; + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/Decompressor.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/Decompressor.java index db7d9eb4f..7fc3584cc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/Decompressor.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/Decompressor.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.packet.compressor; +import de.rub.nds.sshattacker.core.exceptions.DecompressionException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -14,5 +15,5 @@ public abstract class Decompressor { protected static final Logger LOGGER = LogManager.getLogger(); - public abstract void decompress(T object); + public abstract void decompress(T object) throws DecompressionException; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/PacketCompressor.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/PacketCompressor.java index 1ff4cd068..ba1f28224 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/PacketCompressor.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/PacketCompressor.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.packet.compressor; import de.rub.nds.sshattacker.core.constants.CompressionAlgorithm; +import de.rub.nds.sshattacker.core.exceptions.CompressionException; import de.rub.nds.sshattacker.core.packet.AbstractPacket; import de.rub.nds.sshattacker.core.packet.compressor.compression.Compression; import de.rub.nds.sshattacker.core.packet.compressor.compression.DeflateCompression; @@ -24,7 +25,12 @@ public PacketCompressor() { @Override public void compress(AbstractPacket packet) { - packet.setCompressedPayload(compression.compress(packet.getPayload().getValue())); + try { + packet.setCompressedPayload(compression.compress(packet.getPayload().getValue())); + } catch (CompressionException e) { + LOGGER.debug("Fallback to no compression due to:", e); + packet.setCompressedPayload(packet.getPayload().getValue()); + } } public void setCompressionAlgorithm(CompressionAlgorithm algorithm) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/PacketDecompressor.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/PacketDecompressor.java index ee71c5d77..eebeae994 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/PacketDecompressor.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/PacketDecompressor.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.packet.compressor; import de.rub.nds.sshattacker.core.constants.CompressionAlgorithm; +import de.rub.nds.sshattacker.core.exceptions.DecompressionException; import de.rub.nds.sshattacker.core.packet.AbstractPacket; import de.rub.nds.sshattacker.core.packet.compressor.compression.Compression; import de.rub.nds.sshattacker.core.packet.compressor.compression.DeflateCompression; @@ -23,7 +24,7 @@ public PacketDecompressor() { } @Override - public void decompress(AbstractPacket packet) { + public void decompress(AbstractPacket packet) throws DecompressionException { packet.setPayload(compression.decompress(packet.getCompressedPayload().getValue())); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/compression/Compression.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/compression/Compression.java index 72a1912c7..a1f16e8a1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/compression/Compression.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/compression/Compression.java @@ -8,6 +8,8 @@ package de.rub.nds.sshattacker.core.packet.compressor.compression; import de.rub.nds.sshattacker.core.constants.CompressionAlgorithm; +import de.rub.nds.sshattacker.core.exceptions.CompressionException; +import de.rub.nds.sshattacker.core.exceptions.DecompressionException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -21,9 +23,9 @@ protected Compression(CompressionAlgorithm algorithm) { this.algorithm = algorithm; } - public abstract byte[] compress(byte[] data); + public abstract byte[] compress(byte[] data) throws CompressionException; - public abstract byte[] decompress(byte[] data); + public abstract byte[] decompress(byte[] data) throws DecompressionException; public CompressionAlgorithm getAlgorithm() { return algorithm; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/compression/DeflateCompression.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/compression/DeflateCompression.java index 0c603b4fb..843e139b7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/compression/DeflateCompression.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/compressor/compression/DeflateCompression.java @@ -11,8 +11,9 @@ import com.jcraft.jzlib.Inflater; import com.jcraft.jzlib.JZlib; import de.rub.nds.sshattacker.core.constants.CompressionAlgorithm; +import de.rub.nds.sshattacker.core.exceptions.CompressionException; +import de.rub.nds.sshattacker.core.exceptions.DecompressionException; import java.io.ByteArrayOutputStream; -import java.io.IOException; public class DeflateCompression extends Compression { @@ -32,7 +33,7 @@ private void init() { inflater.init(); } - public byte[] compress(byte[] data) { + public byte[] compress(byte[] data) throws CompressionException { ByteArrayOutputStream compressedOutputStream = new ByteArrayOutputStream(); deflater.setInput(data); byte[] buffer = new byte[BUFFER_SIZE]; @@ -40,24 +41,17 @@ public byte[] compress(byte[] data) { deflater.setOutput(buffer, 0, BUFFER_SIZE); int status = deflater.deflate(JZlib.Z_PARTIAL_FLUSH); if (status != JZlib.Z_OK) { - LOGGER.error( - "Unable to compress the provided data, deflate status is not equal to Z_OK: {}", - status); - return null; + throw new CompressionException( + "Unable to compress the provided data, deflate status is not equal to Z_OK: " + + status); } compressedOutputStream.write(buffer, 0, BUFFER_SIZE - deflater.getAvailOut()); } while (deflater.getAvailOut() == 0); - try { - compressedOutputStream.close(); - return compressedOutputStream.toByteArray(); - } catch (IOException e) { - LOGGER.error("Unable to close compressed output stream after payload compression", e); - return null; - } + return compressedOutputStream.toByteArray(); } - public byte[] decompress(byte[] data) { + public byte[] decompress(byte[] data) throws DecompressionException { ByteArrayOutputStream uncompressedOutputStream = new ByteArrayOutputStream(); inflater.setInput(data); byte[] buffer = new byte[BUFFER_SIZE]; @@ -65,21 +59,13 @@ public byte[] decompress(byte[] data) { inflater.setOutput(buffer, 0, BUFFER_SIZE); int status = inflater.inflate(JZlib.Z_PARTIAL_FLUSH); if (status != JZlib.Z_OK) { - LOGGER.error( - "Unable to decompress the provided data, inflate status is not equal to Z_OK: {}", - status); - return null; + throw new DecompressionException( + "Unable to decompress the provided data, inflate status is not equal to Z_OK: " + + status); } uncompressedOutputStream.write(buffer, 0, BUFFER_SIZE - inflater.getAvailOut()); } while (inflater.getAvailOut() == 0); - try { - uncompressedOutputStream.close(); - return uncompressedOutputStream.toByteArray(); - } catch (IOException e) { - LOGGER.error( - "Unable to close decompressed output stream after payload decompression", e); - return null; - } + return uncompressedOutputStream.toByteArray(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/crypto/AbstractPacketDecryptor.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/crypto/AbstractPacketDecryptor.java index baf7e4123..4e6aea405 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/crypto/AbstractPacketDecryptor.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/crypto/AbstractPacketDecryptor.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.packet.crypto; +import de.rub.nds.sshattacker.core.exceptions.DecryptionException; import de.rub.nds.sshattacker.core.packet.AbstractPacket; import de.rub.nds.sshattacker.core.packet.BinaryPacket; import de.rub.nds.sshattacker.core.packet.BlobPacket; @@ -18,7 +19,7 @@ protected AbstractPacketDecryptor(PacketCipher packetCipher) { super(packetCipher); } - public void decrypt(AbstractPacket object) { + public void decrypt(AbstractPacket object) throws DecryptionException { if (object instanceof BinaryPacket) { decrypt((BinaryPacket) object); } else if (object instanceof BlobPacket) { @@ -28,7 +29,7 @@ public void decrypt(AbstractPacket object) { } } - public abstract void decrypt(BinaryPacket packet); + public abstract void decrypt(BinaryPacket packet) throws DecryptionException; - public abstract void decrypt(BlobPacket packet); + public abstract void decrypt(BlobPacket packet) throws DecryptionException; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/crypto/PacketDecryptor.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/crypto/PacketDecryptor.java index 30f10946e..db548656d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/crypto/PacketDecryptor.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/crypto/PacketDecryptor.java @@ -9,10 +9,10 @@ import de.rub.nds.sshattacker.core.constants.CipherMode; import de.rub.nds.sshattacker.core.exceptions.CryptoException; +import de.rub.nds.sshattacker.core.exceptions.DecryptionException; import de.rub.nds.sshattacker.core.packet.BinaryPacket; import de.rub.nds.sshattacker.core.packet.BlobPacket; import de.rub.nds.sshattacker.core.packet.cipher.PacketCipher; -import de.rub.nds.sshattacker.core.packet.cipher.PacketCipherFactory; import de.rub.nds.sshattacker.core.state.SshContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -22,7 +22,6 @@ public class PacketDecryptor extends AbstractPacketDecryptor { private static final Logger LOGGER = LogManager.getLogger(); private final SshContext context; - private final PacketCipher noneCipher; public PacketDecryptor(PacketCipher packetCipher, SshContext context) { super(packetCipher); @@ -31,42 +30,31 @@ public PacketDecryptor(PacketCipher packetCipher, SshContext context) { "A PacketCipher provided to the PacketDecryptor constructor must be in DECRYPT mode"); } this.context = context; - noneCipher = PacketCipherFactory.getNoneCipher(context, CipherMode.DECRYPT); } @Override - public void decrypt(BinaryPacket packet) { + public void decrypt(BinaryPacket packet) throws DecryptionException { PacketCipher packetCipher = getPacketMostRecentCipher(); LOGGER.debug("Decrypting binary packet using packet cipher: {}", packetCipher); try { packet.setSequenceNumber(context.getReadSequenceNumber()); packetCipher.process(packet); - } catch (CryptoException e) { - // Set compressedPayload if decryption failed to do so - LOGGER.warn("Could not decrypt binary packet. Using {}", noneCipher, e); - try { - noneCipher.process(packet); - } catch (CryptoException ex) { - // FIXME Need to set compressedPayload to continue? - LOGGER.error("Could not decrypt with {}", noneCipher, ex); - } + } catch (CryptoException ex) { + throw new DecryptionException( + "Could not decrypt binary packet using " + packetCipher, ex); } context.incrementReadSequenceNumber(); } @Override - public void decrypt(BlobPacket packet) { + public void decrypt(BlobPacket packet) throws DecryptionException { PacketCipher packetCipher = getPacketMostRecentCipher(); LOGGER.debug("Decrypting blob packet using packet cipher: {}", packetCipher); try { packetCipher.process(packet); - } catch (CryptoException e) { - LOGGER.warn("Could not decrypt blob packet. Using {}", noneCipher, e); - try { - noneCipher.process(packet); - } catch (CryptoException ex) { - LOGGER.error("Could not decrypt with {}", noneCipher, ex); - } + } catch (CryptoException ex) { + throw new DecryptionException( + "Could not decrypt blob packet using " + packetCipher, ex); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/AbstractPacketLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/AbstractPacketLayer.java index 1cdbd144d..57effd3d5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/AbstractPacketLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/AbstractPacketLayer.java @@ -9,6 +9,8 @@ import de.rub.nds.sshattacker.core.constants.CipherMode; import de.rub.nds.sshattacker.core.constants.CompressionAlgorithm; +import de.rub.nds.sshattacker.core.exceptions.DecompressionException; +import de.rub.nds.sshattacker.core.exceptions.DecryptionException; import de.rub.nds.sshattacker.core.exceptions.ParserException; import de.rub.nds.sshattacker.core.packet.AbstractPacket; import de.rub.nds.sshattacker.core.packet.cipher.PacketCipher; @@ -31,11 +33,13 @@ public abstract class AbstractPacketLayer { protected final SshContext context; - private final AbstractPacketDecryptor decryptor; private final AbstractPacketEncryptor encryptor; + private final AbstractPacketDecryptor decryptor; + private final AbstractPacketDecryptor fallbackDecryptor; private final PacketCompressor compressor; private final PacketDecompressor decompressor; + private final PacketDecompressor fallbackDecompressor; private int writeEpoch; private int readEpoch; @@ -49,8 +53,12 @@ protected AbstractPacketLayer(SshContext context) { decryptor = new PacketDecryptor( PacketCipherFactory.getNoneCipher(context, CipherMode.DECRYPT), context); + fallbackDecryptor = + new PacketDecryptor( + PacketCipherFactory.getNoneCipher(context, CipherMode.DECRYPT), context); compressor = new PacketCompressor(); decompressor = new PacketDecompressor(); + fallbackDecompressor = new PacketDecompressor(); } /** @@ -79,13 +87,29 @@ public abstract PacketLayerParseResult parsePacket(byte[] rawBytes, int startPos */ public abstract PacketLayerParseResult parsePacketSoftly(byte[] rawBytes, int startPosition); - protected void decryptPacket(AbstractPacket packet) { + protected void decryptPacket(AbstractPacket packet) throws DecryptionException { packet.prepareComputations(); - decryptor.decrypt(packet); - } - - protected void decompressPacket(AbstractPacket packet) { - decompressor.decompress(packet); + try { + decryptor.decrypt(packet); + } catch (DecryptionException ex) { + if (!context.getConfig().getFallbackToNoDecryptionOnError()) { + throw ex; + } + LOGGER.debug("Fallback to no decryption due to:", ex); + fallbackDecryptor.decrypt(packet); + } + } + + protected void decompressPacket(AbstractPacket packet) throws DecompressionException { + try { + decompressor.decompress(packet); + } catch (DecompressionException ex) { + if (!context.getConfig().getFallbackToNoDecompressionOnError()) { + throw ex; + } + LOGGER.debug("Fallback to no decompression due to:", ex); + fallbackDecompressor.decompress(packet); + } } public byte[] preparePacket(AbstractPacket packet) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BinaryPacketLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BinaryPacketLayer.java index ac355cdc9..1fd83b46f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BinaryPacketLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BinaryPacketLayer.java @@ -7,6 +7,8 @@ */ package de.rub.nds.sshattacker.core.packet.layer; +import de.rub.nds.sshattacker.core.exceptions.DecompressionException; +import de.rub.nds.sshattacker.core.exceptions.DecryptionException; import de.rub.nds.sshattacker.core.exceptions.ParserException; import de.rub.nds.sshattacker.core.packet.AbstractPacket; import de.rub.nds.sshattacker.core.packet.BinaryPacket; @@ -39,7 +41,7 @@ public PacketLayerParseResult parsePacket(byte[] rawBytes, int startPosition) decryptPacket(packet); decompressPacket(packet); return new PacketLayerParseResult(packet, parser.getPointer() - startPosition); - } catch (ParserException e) { + } catch (ParserException | DecryptionException | DecompressionException e) { throw new ParserException("Could not parse provided data as binary packet", e); } } @@ -57,7 +59,7 @@ public PacketLayerParseResult parsePacketSoftly(byte[] rawBytes, int startPositi decryptPacket(packet); decompressPacket(packet); return new PacketLayerParseResult(packet, parser.getPointer() - startPosition, true); - } catch (ParserException e) { + } catch (ParserException | DecryptionException | DecompressionException e) { LOGGER.debug("Could not parse binary packet, parsing as blob"); LOGGER.trace(e); try { @@ -67,7 +69,7 @@ public PacketLayerParseResult parsePacketSoftly(byte[] rawBytes, int startPositi decompressPacket(packet); return new PacketLayerParseResult( packet, parser.getPointer() - startPosition, true); - } catch (ParserException ex) { + } catch (ParserException | DecryptionException | DecompressionException ex) { LOGGER.warn("Could not parse data as blob packet, dropping remaining bytes"); LOGGER.trace(ex); return new PacketLayerParseResult(null, rawBytes.length - startPosition, true); @@ -76,9 +78,10 @@ public PacketLayerParseResult parsePacketSoftly(byte[] rawBytes, int startPositi } @Override - protected void decryptPacket(AbstractPacket packet) { + protected void decryptPacket(AbstractPacket packet) throws DecryptionException { if (!(packet instanceof BinaryPacket)) { - LOGGER.warn("Decrypting received non binary packet: {}", packet); + LOGGER.warn( + "Decrypting received non binary packet: {}", packet.getClass().getSimpleName()); } super.decryptPacket(packet); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BlobPacketLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BlobPacketLayer.java index 3ce071db6..9ad43a635 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BlobPacketLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BlobPacketLayer.java @@ -7,6 +7,8 @@ */ package de.rub.nds.sshattacker.core.packet.layer; +import de.rub.nds.sshattacker.core.exceptions.DecompressionException; +import de.rub.nds.sshattacker.core.exceptions.DecryptionException; import de.rub.nds.sshattacker.core.exceptions.ParserException; import de.rub.nds.sshattacker.core.packet.BlobPacket; import de.rub.nds.sshattacker.core.packet.parser.BlobPacketParser; @@ -31,7 +33,7 @@ public PacketLayerParseResult parsePacket(byte[] rawBytes, int startPosition) decryptPacket(packet); decompressPacket(packet); return new PacketLayerParseResult(packet, parser.getPointer() - startPosition); - } catch (ParserException e) { + } catch (ParserException | DecryptionException | DecompressionException e) { throw new ParserException("Could not parse provided data as blob packet", e); } } @@ -44,7 +46,7 @@ public PacketLayerParseResult parsePacketSoftly(byte[] rawBytes, int startPositi decryptPacket(packet); decompressPacket(packet); return new PacketLayerParseResult(packet, parser.getPointer() - startPosition, true); - } catch (ParserException e) { + } catch (ParserException | DecryptionException | DecompressionException e) { LOGGER.warn("Could not parse provided data as blob packet, dropping remaining bytes"); return new PacketLayerParseResult(null, rawBytes.length - startPosition, true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java index 46242ae7c..6b87ae6d5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicMessageAction.java @@ -10,7 +10,6 @@ import de.rub.nds.sshattacker.core.connection.AliasedConnection; import de.rub.nds.sshattacker.core.packet.AbstractPacket; import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessage; -import de.rub.nds.sshattacker.core.protocol.transport.message.DisconnectMessage; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; import jakarta.xml.bind.annotation.XmlElements; @@ -29,8 +28,12 @@ public abstract class DynamicMessageAction extends MessageAction @XmlElement(type = ChangeCompressionAction.class, name = "ChangeCompressionAction"), @XmlElement(type = ChangePacketLayerAction.class, name = "ChangePacketLayerAction"), @XmlElement(type = DeactivateEncryptionAction.class, name = "DeactivateEncryptionAction"), - @XmlElement(type = DynamicDelayCompressionAction.class, name = "DynamicDelayCompressionAction"), - @XmlElement(type = DynamicExtensionNegotiationAction.class, name = "DynamicExtensionNegotiationAction"), + @XmlElement( + type = DynamicDelayCompressionAction.class, + name = "DynamicDelayCompressionAction"), + @XmlElement( + type = DynamicExtensionNegotiationAction.class, + name = "DynamicExtensionNegotiationAction"), @XmlElement(type = DynamicKeyExchangeAction.class, name = "DynamicKeyExchangeAction"), @XmlElement(type = ForwardMessagesAction.class, name = "ForwardMessagesAction"), @XmlElement(type = ProxyFilterMessagesAction.class, name = "ProxyFilterMessagesAction"), From 44e7da7f91df9b3d24c97ebb992c5d39f6b9b390 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 16 Dec 2024 14:01:03 +0100 Subject: [PATCH 072/203] Add missing methods for UserAuthPkOk and UnknownExtension. Fix Preperator of ServerSigAlgsExtension --- .../handler/UserAuthPkOkMessageHandler.java | 7 +-- .../message/UserAuthPkOkMessage.java | 31 +++++------ .../parser/UserAuthPkOkMessageParser.java | 5 +- .../UserAuthPkOkMessagePreparator.java | 34 +++++++++++++ .../UserAuthPkOkMessageSerializer.java | 51 +++++++++++++++++++ .../extension/UnknownExtensionHandler.java | 4 +- ...rithmsRoumenPetrovExtensionPreparator.java | 4 -- .../ServerSigAlgsExtensionPreparator.java | 9 ++-- .../extension/UnknownExtensionPreparator.java | 28 ++++++++++ 9 files changed, 142 insertions(+), 31 deletions(-) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPkOkMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPkOkMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/UnknownExtensionPreparator.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/handler/UserAuthPkOkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/handler/UserAuthPkOkMessageHandler.java index 110087f2b..3d43ae7a1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/handler/UserAuthPkOkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/handler/UserAuthPkOkMessageHandler.java @@ -7,9 +7,10 @@ */ package de.rub.nds.sshattacker.core.protocol.authentication.handler; -import de.rub.nds.sshattacker.core.exceptions.NotImplementedException; import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthPkOkMessage; import de.rub.nds.sshattacker.core.protocol.authentication.parser.UserAuthPkOkMessageParser; +import de.rub.nds.sshattacker.core.protocol.authentication.preparator.UserAuthPkOkMessagePreparator; +import de.rub.nds.sshattacker.core.protocol.authentication.serializer.UserAuthPkOkMessageSerializer; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessagePreparator; import de.rub.nds.sshattacker.core.protocol.common.SshMessageSerializer; @@ -40,11 +41,11 @@ public UserAuthPkOkMessageParser getParser(byte[] array, int startPosition) { @Override public SshMessagePreparator getPreparator() { - throw new NotImplementedException("UserAuthPkOkMessageHandler::getPreparator"); + return new UserAuthPkOkMessagePreparator(context.getChooser(), message); } @Override public SshMessageSerializer getSerializer() { - throw new NotImplementedException("UserAuthPkOkMessageHandler::getSerializer"); + return new UserAuthPkOkMessageSerializer(message); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPkOkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPkOkMessage.java index 70e58824f..9e409b233 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPkOkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPkOkMessage.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.protocol.authentication.message; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.config.Config; @@ -21,7 +22,7 @@ public class UserAuthPkOkMessage extends SshMessage { private ModifiableInteger pubkeyAlgNameLength; private ModifiableString pubkeyAlgName; private ModifiableInteger pubkeyLength; - private ModifiableString pubkey; + private ModifiableByteArray pubkey; public UserAuthPkOkMessage() { super(); @@ -96,34 +97,30 @@ public void setPubkeyAlgName(String pubkeyAlgName) { setPubkeyAlgName(pubkeyAlgName, false); } - public ModifiableInteger getPubkeyLength() { - return pubkeyLength; - } - public void setPubkeyLength(int pubkeyLength) { this.pubkeyLength = ModifiableVariableFactory.safelySetValue(this.pubkeyLength, pubkeyLength); } - public ModifiableString getPubkey() { - return pubkey; + public ModifiableInteger getPubkeyLength() { + return pubkeyLength; } - public void setPubkey(ModifiableString pubkey, boolean adjustLengthField) { + public void setPubkey(ModifiableByteArray pubkey, boolean adjustLengthField) { this.pubkey = pubkey; if (adjustLengthField) { - setPubkeyLength(this.pubkey.getValue().getBytes(StandardCharsets.US_ASCII).length); + setPubkeyLength(this.pubkey.getValue().length); } } - public void setPubkey(String pubkey, boolean adjustLengthField) { + public void setPubkey(byte[] pubkey, boolean adjustLengthField) { this.pubkey = ModifiableVariableFactory.safelySetValue(this.pubkey, pubkey); if (adjustLengthField) { - setPubkeyLength(this.pubkey.getValue().getBytes(StandardCharsets.US_ASCII).length); + setPubkeyLength(this.pubkey.getValue().length); } } - public void setSoftlyPubkey(String pubkey, boolean adjustLengthField, Config config) { + public void setSoftlyPubkey(byte[] pubkey, boolean adjustLengthField, Config config) { if (this.pubkey == null || this.pubkey.getOriginalValue() == null) { this.pubkey = ModifiableVariableFactory.safelySetValue(this.pubkey, pubkey); } @@ -131,19 +128,23 @@ public void setSoftlyPubkey(String pubkey, boolean adjustLengthField, Config con if (config.getAlwaysPrepareLengthFields() || pubkeyLength == null || pubkeyLength.getOriginalValue() == null) { - setPubkeyLength(this.pubkey.getValue().getBytes(StandardCharsets.US_ASCII).length); + setPubkeyLength(this.pubkey.getValue().length); } } } - public void setPubkey(ModifiableString pubkey) { + public void setPubkey(ModifiableByteArray pubkey) { setPubkey(pubkey, false); } - public void setPubkey(String pubkey) { + public void setPubkey(byte[] pubkey) { setPubkey(pubkey, false); } + public ModifiableByteArray getPubkey() { + return pubkey; + } + @Override public UserAuthPkOkMessageHandler getHandler(SshContext context) { return new UserAuthPkOkMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPkOkMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPkOkMessageParser.java index f9c1d1a0b..914429882 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPkOkMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/parser/UserAuthPkOkMessageParser.java @@ -9,6 +9,7 @@ import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthPkOkMessage; import de.rub.nds.sshattacker.core.protocol.common.SshMessageParser; @@ -37,9 +38,9 @@ private void parsePubkey() { int pubkeyLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); message.setPubkeyLength(pubkeyLength); LOGGER.debug("Pubkey length: {}", pubkeyLength); - String pubkey = parseByteString(pubkeyLength, StandardCharsets.US_ASCII); + byte[] pubkey = parseByteArrayField(pubkeyLength); message.setPubkey(pubkey); - LOGGER.debug("Pubkey: {}", () -> backslashEscapeString(pubkey)); + LOGGER.debug("Pubkey: {}", () -> ArrayConverter.bytesToRawHexString(pubkey)); } private void parsePubkeyAlgName() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPkOkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPkOkMessagePreparator.java new file mode 100644 index 000000000..23166dd31 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPkOkMessagePreparator.java @@ -0,0 +1,34 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.authentication.preparator; + +import de.rub.nds.sshattacker.core.constants.MessageIdConstant; +import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; +import de.rub.nds.sshattacker.core.crypto.util.PublicKeyHelper; +import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthPkOkMessage; +import de.rub.nds.sshattacker.core.protocol.common.SshMessagePreparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class UserAuthPkOkMessagePreparator extends SshMessagePreparator { + + public UserAuthPkOkMessagePreparator(Chooser chooser, UserAuthPkOkMessage message) { + super(chooser, message, MessageIdConstant.SSH_MSG_USERAUTH_PK_OK); + } + + @Override + public void prepareMessageSpecificContents() { + SshPublicKey pk = chooser.getSelectedPublicKeyForAuthentication(); + if (pk != null) { + getObject().setPubkeyAlgName(pk.getPublicKeyFormat().getName(), true); + getObject().setPubkey(PublicKeyHelper.encode(pk), true); + } else { + getObject().setPubkeyAlgName("", true); + getObject().setPubkey(new byte[0], true); + } + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPkOkMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPkOkMessageSerializer.java new file mode 100644 index 000000000..a9556b47f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/serializer/UserAuthPkOkMessageSerializer.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.authentication.serializer; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthPkOkMessage; +import de.rub.nds.sshattacker.core.protocol.common.SshMessageSerializer; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class UserAuthPkOkMessageSerializer extends SshMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + public UserAuthPkOkMessageSerializer(UserAuthPkOkMessage message) { + super(message); + } + + private void serializePubkeyAlgName() { + Integer pubkeyAlgNameLength = message.getPubkeyAlgNameLength().getValue(); + LOGGER.debug("Pubkey algorithm name length: {}", pubkeyAlgNameLength); + appendInt(pubkeyAlgNameLength, DataFormatConstants.STRING_SIZE_LENGTH); + String pubkeyAlgName = message.getPubkeyAlgName().getValue(); + LOGGER.debug("Pubkey algorithm name: {}", () -> backslashEscapeString(pubkeyAlgName)); + appendString(pubkeyAlgName, StandardCharsets.US_ASCII); + } + + private void serializePubkey() { + Integer pubkeyLength = message.getPubkeyLength().getValue(); + LOGGER.debug("Pubkey length: {}", pubkeyLength); + appendInt(pubkeyLength, DataFormatConstants.STRING_SIZE_LENGTH); + byte[] pubkey = message.getPubkey().getValue(); + LOGGER.debug("Pubkey: {}", () -> ArrayConverter.bytesToRawHexString(pubkey)); + appendBytes(pubkey); + } + + @Override + protected void serializeMessageSpecificContents() { + serializePubkeyAlgName(); + serializePubkey(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/extension/UnknownExtensionHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/extension/UnknownExtensionHandler.java index 6b07246b3..dc7d99a20 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/extension/UnknownExtensionHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/extension/UnknownExtensionHandler.java @@ -7,10 +7,10 @@ */ package de.rub.nds.sshattacker.core.protocol.transport.handler.extension; -import de.rub.nds.sshattacker.core.exceptions.NotImplementedException; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.UnknownExtension; import de.rub.nds.sshattacker.core.protocol.transport.parser.extension.UnknownExtensionParser; +import de.rub.nds.sshattacker.core.protocol.transport.preparator.extension.UnknownExtensionPreparator; import de.rub.nds.sshattacker.core.protocol.transport.serializer.extension.UnknownExtensionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; @@ -41,7 +41,7 @@ public UnknownExtensionParser getParser(byte[] array, int startPosition) { @Override public Preparator getPreparator() { - throw new NotImplementedException("UnknownExtensionHandler::getPreparator"); + return new UnknownExtensionPreparator(context.getChooser(), extension); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PublicKeyAlgorithmsRoumenPetrovExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PublicKeyAlgorithmsRoumenPetrovExtensionPreparator.java index d3465c078..735d4e9df 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PublicKeyAlgorithmsRoumenPetrovExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PublicKeyAlgorithmsRoumenPetrovExtensionPreparator.java @@ -24,10 +24,6 @@ public PublicKeyAlgorithmsRoumenPetrovExtensionPreparator( @Override protected void prepareExtensionSpecificContents() { - // Hier kannst du spezifische Vorbereitungslogik für die Extension hinzufügen - LOGGER.debug("Preparing PublicKeyAlgorithmsRoumenPetrovExtension..."); - - // Setze den Wert der Algorithmen aus dem Chooser getObject() .setPublicKeyAlgorithms( chooser.getServerSupportedPublicKeyAlgorithmsForAuthentication(), true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java index 484c6fcec..d08584296 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java @@ -28,11 +28,10 @@ public void prepareExtensionSpecificContents() { if (chooser.getContext().isClient()) { LOGGER.warn( "Client prepared ServerSigAlgsExtension which is supposed to be sent by the server only!"); - } else { - getObject().setName(Extension.SERVER_SIG_ALGS.getName(), true); - getObject() - .setAcceptedPublicKeyAlgorithms( - chooser.getServerSupportedPublicKeyAlgorithmsForAuthentication(), true); } + getObject().setName(Extension.SERVER_SIG_ALGS.getName(), true); + getObject() + .setAcceptedPublicKeyAlgorithms( + chooser.getServerSupportedPublicKeyAlgorithmsForAuthentication(), true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/UnknownExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/UnknownExtensionPreparator.java new file mode 100644 index 000000000..97dce80a2 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/UnknownExtensionPreparator.java @@ -0,0 +1,28 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2023 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.transport.preparator.extension; + +import de.rub.nds.sshattacker.core.protocol.transport.message.extension.UnknownExtension; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class UnknownExtensionPreparator extends AbstractExtensionPreparator { + + private static final Logger LOGGER = LogManager.getLogger(); + + public UnknownExtensionPreparator(Chooser chooser, UnknownExtension extension) { + super(chooser, extension); + } + + @Override + public void prepareExtensionSpecificContents() { + getObject().setName("hello-from@ssh-attacker.de", true); + getObject().setValue(new byte[100], true); + } +} From 22f26279202cf9430e8167d85d3997cf39025ac1 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 16 Dec 2024 14:06:20 +0100 Subject: [PATCH 073/203] Fix UserAuthPasswordMessagePreparator --- .../preparator/UserAuthPasswordMessagePreparator.java | 1 + 1 file changed, 1 insertion(+) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPasswordMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPasswordMessagePreparator.java index 258d53b7a..c8e875040 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPasswordMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPasswordMessagePreparator.java @@ -26,5 +26,6 @@ public void prepareUserAuthRequestSpecificContents() { getObject().setMethodName(AuthenticationMethod.PASSWORD, true); getObject().setChangePassword(false); getObject().setPassword(chooser.getConfig().getPassword(), true); + getObject().setNewPassword(chooser.getConfig().getPassword(), true); } } From 7c0f86ddf1478e285cf94a352e1df77498154759 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 16 Dec 2024 15:15:56 +0100 Subject: [PATCH 074/203] add some IllegalStringAdapter Annotations --- .../rub/nds/sshattacker/core/config/Config.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index fc4feb09f..70e403bb1 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.config; import de.rub.nds.modifiablevariable.util.ArrayConverter; +import de.rub.nds.modifiablevariable.util.IllegalStringAdapter; import de.rub.nds.modifiablevariable.util.UnformattedByteArrayAdapter; import de.rub.nds.sshattacker.core.connection.InboundConnection; import de.rub.nds.sshattacker.core.connection.OutboundConnection; @@ -63,21 +64,27 @@ public class Config implements Serializable { // region VersionExchange /** Client protocol and software version string starting with the SSH version (SSH-2.0-...) */ + @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String clientVersion; /** Client comment sent alongside protocol and software version */ + @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String clientComment; /** End-of-message sequence of the clients' VersionExchangeMessage */ + @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String clientEndOfMessageSequence; /** Server protocol and software version string starting with the SSH version (SSH-2.0-...) */ + @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String serverVersion; /** Server comment sent alongside protocol and software version */ + @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String serverComment; /** End-of-message sequence of the servers' VersionExchangeMessage */ + @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String serverEndOfMessageSequence; // endregion @@ -337,12 +344,15 @@ public class Config implements Serializable { private AuthenticationMethod authenticationMethod; /** The service name defines the service to start after authentication */ + @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String serviceName; /** The username used for authentication method password */ + @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String username; /** The password used for authentication method password */ + @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String password; /** The List of responses used for UserAuthInfoResponseMessage */ @@ -359,6 +369,7 @@ public class Config implements Serializable { // region Channel /** Fallback for command of ChannelRequestExecMessage */ + @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String channelCommand; /** Default channel values including local channel id and window size */ @@ -374,12 +385,14 @@ public class Config implements Serializable { * Fallback for variableName of ChannelRequestEnvMessage, to change server-allowed environment * variables */ + @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String defaultVariableName; /** * Fallback for variableValue of ChannelRequestEnvMessage, to change server-allowed environment * variables */ + @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String defaultVariableValue; /** @@ -416,9 +429,11 @@ public class Config implements Serializable { * Default value of TERM environment variable, to specify the terminal handling of a requested * pseudo terminal(pty-req) */ + @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String defaultTermEnvVariable; /** Default name of a predefined subsystem, which should be executed on the remote */ + @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String defaultSubsystemName; /** From 303eec1256cbf5ebabbbc4464f83211862fe8e8b Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 16 Dec 2024 15:43:21 +0100 Subject: [PATCH 075/203] Prepare messages one after the other, for SendActions with multiple messages. --- .../core/workflow/action/ProxyFilterMessagesAction.java | 2 ++ .../rub/nds/sshattacker/core/workflow/action/SendAction.java | 1 - .../core/workflow/action/executor/SendMessageHelper.java | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ProxyFilterMessagesAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ProxyFilterMessagesAction.java index 72abeb895..7d93b6f7f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ProxyFilterMessagesAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ProxyFilterMessagesAction.java @@ -87,6 +87,8 @@ protected void forwardMessages(SshContext forwardToCtx) { "Forwarding messages ({}): {}", forwardToAlias, getReadableString(receivedMessages)); + // TODO: use setSoftly methods in perpetrators of ssh messages, so that forwarded messages + // are not tempered MessageActionResult result = SendMessageHelper.sendMessages(forwardToCtx, filteredMessages.stream()); sendMessages = result.getMessageList(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SendAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SendAction.java index 7135a4073..fe20e3e71 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SendAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SendAction.java @@ -109,7 +109,6 @@ public void execute(State state) throws WorkflowExecutionException { LOGGER.info("Sending messages ({}): {}", connectionAlias, sending); } - messages.forEach(message -> message.getHandler(context).getPreparator().prepare()); MessageActionResult result = SendMessageHelper.sendMessages(context, messages.stream()); // Check if all actions that were expected to be sent were actually diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java index d4a7c4f06..3bcf27db1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java @@ -37,6 +37,9 @@ public static void sendPacket(SshContext context, AbstractPacket packet) throws public static MessageActionResult sendMessage(SshContext context, ProtocolMessage message) { try { + // Prepare message + message.getHandler(context).getPreparator().prepare(); + ProtocolMessage innerMessage = null; if (message instanceof DataMessage) { // Serialize data message to ChannelDataMessage @@ -45,6 +48,7 @@ public static MessageActionResult sendMessage(SshContext context, ProtocolMessag if (handler instanceof MessageSentHandler) { ((MessageSentHandler) handler).adjustContextAfterMessageSent(); } + // serialize also prepares the ChannelDataMessage message = context.getDataMessageLayer().serialize((DataMessage) message); } From 32783562ea695d4534d9e7fd1a1be5e8d461ef4e Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 16 Dec 2024 17:06:44 +0100 Subject: [PATCH 076/203] Add cache for config loaded from file --- .../de/rub/nds/sshattacker/core/config/Config.java | 10 +++++++++- .../rub/nds/sshattacker/core/config/ConfigCache.java | 4 +--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 70e403bb1..ed5f1c2f8 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -48,6 +48,8 @@ public class Config implements Serializable { private static final ConfigCache DEFAULT_CONFIG_CACHE; + private static final HashMap PATH_CONFIG_CACHE = new HashMap<>(); + static { DEFAULT_CONFIG_CACHE = new ConfigCache(createConfig()); Security.addProvider(new BouncyCastleProvider()); @@ -1535,7 +1537,13 @@ public static Config createConfig() { } public static Config createConfig(File file) { - return ConfigIO.read(file); + ConfigCache cachedConfig = PATH_CONFIG_CACHE.get(file); + if (cachedConfig != null) { + return cachedConfig.getCachedCopy(); + } + Config resultConfig = ConfigIO.read(file); + PATH_CONFIG_CACHE.put(file, new ConfigCache(resultConfig.createCopy())); + return resultConfig; } public static Config createConfig(InputStream stream) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigCache.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigCache.java index b7b0248d9..a880f9c16 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigCache.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigCache.java @@ -7,8 +7,6 @@ */ package de.rub.nds.sshattacker.core.config; -import org.apache.commons.lang3.SerializationUtils; - public class ConfigCache { private final Config cachedConfig; @@ -19,6 +17,6 @@ public ConfigCache(Config cachedConfig) { } public Config getCachedCopy() { - return SerializationUtils.clone(cachedConfig); + return cachedConfig.createCopy(); } } From cdcdfa1cc5dae1888a381edc36de0e8fb0e1948c Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 18 Dec 2024 12:54:31 +0100 Subject: [PATCH 077/203] Use setSoftly...() for ssh connection layer messages --- .../nds/sshattacker/core/config/Config.java | 13 +++++++++++++ .../core/data/sftp/SftpMessagePreparator.java | 1 + .../preperator/SftpInitMessagePreparator.java | 6 ++++++ .../SftpVersionMessagePreparator.java | 2 +- .../SftpRequestExtendedMessagePreparator.java | 1 + .../request/SftpRequestMessagePreparator.java | 1 + .../SftpResponseHandleMessagePreparator.java | 3 ++- .../UserAuthRequestMessagePreparator.java | 1 + .../protocol/common/SshMessagePreparator.java | 1 + .../connection/message/ChannelMessage.java | 18 +++++++++++++++--- .../ChannelOpenConfirmationMessage.java | 16 +++++++++++++--- .../connection/message/ChannelOpenMessage.java | 9 +++++++++ .../message/ChannelOpenUnknownMessage.java | 8 ++++++++ .../message/ChannelRequestBreakMessage.java | 7 +++++++ .../ChannelRequestExitSignalMessage.java | 9 +++++++++ .../message/ChannelRequestMessage.java | 4 ++++ .../message/ChannelRequestSignalMessage.java | 5 +++++ .../message/ChannelRequestUnknownMessage.java | 8 ++++++++ .../message/ChannelRequestX11Message.java | 4 ++++ ...GlobalRequestCancelTcpIpForwardMessage.java | 8 +++++++- .../message/GlobalRequestMessage.java | 4 ++++ .../GlobalRequestOpenSshHostKeysMessage.java | 7 +++++++ .../GlobalRequestTcpIpForwardMessage.java | 8 +++++++- .../message/GlobalRequestUnknownMessage.java | 8 ++++++++ .../ChannelDataMessagePreparator.java | 2 +- .../ChannelExtendedDataMessagePreparator.java | 4 ++-- .../preparator/ChannelMessagePreparator.java | 4 +++- ...annelOpenConfirmationMessagePreparator.java | 16 ++++++++++------ .../ChannelOpenFailureMessagePreparator.java | 6 +++--- .../ChannelOpenMessagePreparator.java | 8 ++++---- .../ChannelOpenSessionMessagePreperator.java | 1 + .../ChannelOpenUnknownMessagePreparator.java | 2 +- .../ChannelRequestBreakMessagePreparator.java | 2 +- .../ChannelRequestEnvMessagePreparator.java | 10 +++++++--- .../ChannelRequestExecMessagePreparator.java | 4 +++- ...nnelRequestExitSignalMessagePreparator.java | 8 ++++---- ...nnelRequestExitStatusMessagePreparator.java | 2 +- .../ChannelRequestMessagePreparator.java | 3 ++- .../ChannelRequestPtyMessagePreparator.java | 16 +++++++++------- .../ChannelRequestSignalMessagePreparator.java | 2 +- ...annelRequestSubsystemMessagePreparator.java | 6 ++++-- ...ChannelRequestUnknownMessagePreparator.java | 2 +- ...elRequestWindowChangeMessagePreparator.java | 8 ++++---- .../ChannelRequestX11MessagePreparator.java | 8 ++++---- ...ChannelRequestXonXoffMessagePreparator.java | 2 +- .../ChannelWindowAdjustMessagePreparator.java | 6 ++++-- ...stCancelTcpIpForwardlMessagePreparator.java | 4 ++-- .../GlobalRequestMessagePreparator.java | 3 ++- ...equestOpenSshHostKeysMessagePreparator.java | 2 +- ...alRequestTcpIpForwardMessagePreparator.java | 6 +++--- .../GlobalRequestUnknownMessagePreparator.java | 2 +- 51 files changed, 222 insertions(+), 69 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index ed5f1c2f8..2ec547035 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -447,6 +447,9 @@ public class Config implements Serializable { // endregion // region general SSH settings + /** Whether the channel IDs in the channel messages should always be prepared */ + private Boolean alwaysPrepareChannelIds; + /** * Whether the length fields in the messages should be consistent with their corresponding * fields. @@ -1235,6 +1238,7 @@ public Config() { // endregion // region general SSH Settings + alwaysPrepareChannelIds = true; alwaysPrepareLengthFields = true; fallbackToNoDecryptionOnError = true; fallbackToNoDecompressionOnError = true; @@ -1473,6 +1477,7 @@ public Config(Config other) { defaultTermEnvVariable = other.defaultTermEnvVariable; defaultSubsystemName = other.defaultSubsystemName; defaultBreakLength = other.defaultBreakLength; + alwaysPrepareChannelIds = other.alwaysPrepareChannelIds; alwaysPrepareLengthFields = other.alwaysPrepareLengthFields; fallbackToNoDecryptionOnError = other.fallbackToNoDecryptionOnError; fallbackToNoDecompressionOnError = other.fallbackToNoDecompressionOnError; @@ -2273,6 +2278,14 @@ public void setDefaultBreakLength(int defaultBreakLength) { // region general SSH settings + public Boolean getAlwaysPrepareChannelIds() { + return alwaysPrepareChannelIds; + } + + public void setAlwaysPrepareChannelIds(Boolean alwaysPrepareChannelIds) { + this.alwaysPrepareChannelIds = alwaysPrepareChannelIds; + } + public Boolean getAlwaysPrepareLengthFields() { return alwaysPrepareLengthFields; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessagePreparator.java index 56b14469b..26d2e005d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessagePreparator.java @@ -27,6 +27,7 @@ protected SftpMessagePreparator(Chooser chooser, T message, byte packetType) { @Override public final void prepareProtocolMessageContents() { + // Always set correct packet type -> Don't use soft set getObject().setPacketType(packetType); prepareMessageSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java index bb348f897..e165fbad5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java @@ -21,11 +21,17 @@ public SftpInitMessagePreparator(Chooser chooser, SftpInitMessage message) { public void prepareMessageSpecificContents() { getObject().setSoftlyVersion(chooser.getSftpClientVersion()); if (getObject().getExtensions().isEmpty()) { + // Only load default extensions if none are set in the message if (chooser.getSftpClientVersion() == 3) { // Only Clients with protocol version 3 should send supported extensions, // to stay compatible with servers that use protocol version 1 or 2 getObject().setExtensions(chooser.getSftpClientSupportedExtensions()); } + } else { + if (chooser.getSftpClientVersion() != 3 + && chooser.getConfig().getRespectSftpNegotiatedVersion()) { + getObject().getExtensions().clear(); + } } getObject() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java index 02b22bcd7..f77b49bc7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java @@ -19,10 +19,10 @@ public SftpVersionMessagePreparator(Chooser chooser, SftpVersionMessage message) } public void prepareMessageSpecificContents() { - // Send own server version, but negotiate the version that is the lower if the two getObject().setSoftlyVersion(chooser.getSftpServerVersion()); if (getObject().getExtensions().isEmpty()) { + // Only load default extensions if none are set in the message getObject().setExtensions(chooser.getSftpServerSupportedExtensions()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExtendedMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExtendedMessagePreparator.java index d56238863..2f52f88cd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExtendedMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExtendedMessagePreparator.java @@ -31,6 +31,7 @@ protected SftpRequestExtendedMessagePreparator( @Override public void prepareRequestSpecificContents() { + // Always set correct extended request name -> Don't use soft set getObject().setExtendedRequestName(extendedRequestName, true); prepareRequestExtendedSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMessagePreparator.java index 181efb6ba..a038a1787 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMessagePreparator.java @@ -22,6 +22,7 @@ protected SftpRequestMessagePreparator( @Override public void prepareMessageSpecificContents() { + // Always set correct request id -> Don't use soft set getObject().setRequestId(chooser.getContext().getSftpManager().getNextRequestId()); prepareRequestSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java index 1ecf7abdd..0a6354358 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java @@ -21,7 +21,8 @@ public SftpResponseHandleMessagePreparator(Chooser chooser, SftpResponseHandleMe @Override public void prepareResponseSpecificContents() { if (getObject().getHandle() == null || getObject().getHandle().getOriginalValue() == null) { - // Should be set in SftpManager handleRequestMessage() + // Should be set in SftpManager handleRequestMessage() -> Don't use soft set, because + // soft set in this case would set getObject().setHandle(new byte[100], true); } // This should not be necessary: diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java index f9220be2a..f02d11439 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java @@ -29,6 +29,7 @@ protected UserAuthRequestMessagePreparator( public final void prepareMessageSpecificContents() { getObject().setUserName(chooser.getConfig().getUsername(), true); getObject().setServiceName(ServiceType.SSH_CONNECTION, true); + // Always set correct authentication method -> Don't use soft set getObject().setMethodName(authenticationMethod, true); prepareUserAuthRequestSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessagePreparator.java index fc48a3e5e..0a4280adc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessagePreparator.java @@ -22,6 +22,7 @@ protected SshMessagePreparator(Chooser chooser, T message, MessageIdConstant mes @Override protected final void prepareProtocolMessageContents() { + // Always set correct message id -> Don't use soft set getObject().setMessageId(messageId); prepareMessageSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelMessage.java index a3d8545ec..9651333e4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelMessage.java @@ -9,6 +9,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import jakarta.xml.bind.annotation.XmlAttribute; @@ -45,9 +46,20 @@ public void setRecipientChannelId(ModifiableInteger recipientChannelId) { this.recipientChannelId = recipientChannelId; } - public void setRecipientChannelId(int recipientChannel) { - recipientChannelId = - ModifiableVariableFactory.safelySetValue(recipientChannelId, recipientChannel); + public void setSoftlyRecipientChannelId(int recipientChannelId, Config config) { + if (config.getAlwaysPrepareChannelIds() + || this.recipientChannelId == null + || this.recipientChannelId.getOriginalValue() == null) { + this.recipientChannelId = + ModifiableVariableFactory.safelySetValue( + this.recipientChannelId, recipientChannelId); + } + } + + public void setRecipientChannelId(int recipientChannelId) { + this.recipientChannelId = + ModifiableVariableFactory.safelySetValue( + this.recipientChannelId, recipientChannelId); } public Integer getConfigLocalChannelId() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenConfirmationMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenConfirmationMessage.java index 1ca9cc9e0..4b918e83d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenConfirmationMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenConfirmationMessage.java @@ -9,6 +9,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.protocol.connection.handler.ChannelOpenConfirmationMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -42,9 +43,18 @@ public void setSenderChannelId(ModifiableInteger senderChannelId) { this.senderChannelId = senderChannelId; } - public void setSenderChannelId(int modSenderChannel) { - senderChannelId = - ModifiableVariableFactory.safelySetValue(senderChannelId, modSenderChannel); + public void setSenderChannelId(int senderChannelId) { + this.senderChannelId = + ModifiableVariableFactory.safelySetValue(this.senderChannelId, senderChannelId); + } + + public void setSoftlySenderChannelId(int senderChannelId, Config config) { + if (config.getAlwaysPrepareChannelIds() + || this.senderChannelId == null + || this.senderChannelId.getOriginalValue() == null) { + this.senderChannelId = + ModifiableVariableFactory.safelySetValue(this.senderChannelId, senderChannelId); + } } public ModifiableInteger getWindowSize() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java index 77abc0f65..853d50bf4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java @@ -127,6 +127,15 @@ public void setSenderChannelId(int modSenderChannel) { ModifiableVariableFactory.safelySetValue(senderChannelId, modSenderChannel); } + public void setSoftlySenderChannelId(int senderChannelId, Config config) { + if (config.getAlwaysPrepareChannelIds() + || this.senderChannelId == null + || this.senderChannelId.getOriginalValue() == null) { + this.senderChannelId = + ModifiableVariableFactory.safelySetValue(this.senderChannelId, senderChannelId); + } + } + public ModifiableInteger getWindowSize() { return windowSize; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenUnknownMessage.java index 8d7715a9f..659ba0ecf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenUnknownMessage.java @@ -40,6 +40,14 @@ public void setTypeSpecificData(byte[] typeSpecificData) { ModifiableVariableFactory.safelySetValue(this.typeSpecificData, typeSpecificData); } + public void setSoftlyTypeSpecificData(byte[] typeSpecificData) { + if (this.typeSpecificData == null || this.typeSpecificData.getOriginalValue() == null) { + this.typeSpecificData = + ModifiableVariableFactory.safelySetValue( + this.typeSpecificData, typeSpecificData); + } + } + public void setTypeSpecificData(ModifiableByteArray typeSpecificData) { this.typeSpecificData = typeSpecificData; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestBreakMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestBreakMessage.java index e96f2531b..e46869944 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestBreakMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestBreakMessage.java @@ -42,6 +42,13 @@ public void setBreakLength(int breakLength) { this.breakLength = ModifiableVariableFactory.safelySetValue(this.breakLength, breakLength); } + public void setSoftlyBreakLength(int breakLength) { + if (this.breakLength == null || this.breakLength.getOriginalValue() == null) { + this.breakLength = + ModifiableVariableFactory.safelySetValue(this.breakLength, breakLength); + } + } + @Override public ChannelRequestBreakMessageHandler getHandler(SshContext context) { return new ChannelRequestBreakMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExitSignalMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExitSignalMessage.java index f0b823179..e7963189f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExitSignalMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestExitSignalMessage.java @@ -113,6 +113,11 @@ public void setSignalName(SignalType signalName, boolean adjustLengthField) { setSignalName(signalName.toString(), adjustLengthField); } + public void setSoftlySignalName( + SignalType signalName, boolean adjustLengthField, Config config) { + setSoftlySignalName(signalName.toString(), adjustLengthField, config); + } + public ModifiableByte getCoreDump() { return coreDump; } @@ -125,6 +130,10 @@ public void setCoreDump(boolean coreDump) { setCoreDump(Converter.booleanToByte(coreDump)); } + public void setSoftlyCoreDump(boolean coreDump) { + setSoftlyCoreDump(Converter.booleanToByte(coreDump)); + } + public void setSoftlyCoreDump(byte coreDump) { if (this.coreDump == null || this.coreDump.getOriginalValue() == null) { this.coreDump = ModifiableVariableFactory.safelySetValue(this.coreDump, coreDump); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestMessage.java index a5bfd5600..0352de348 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestMessage.java @@ -123,4 +123,8 @@ public void setSoftlyWantReply(byte wantReply) { public void setWantReply(boolean wantReply) { setWantReply(Converter.booleanToByte(wantReply)); } + + public void setSoftlyWantReply(boolean wantReply) { + setSoftlyWantReply(Converter.booleanToByte(wantReply)); + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSignalMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSignalMessage.java index 349195265..a509452f3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSignalMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestSignalMessage.java @@ -99,6 +99,11 @@ public void setSignalName(SignalType signalName, boolean adjustLengthField) { setSignalName(signalName.toString(), adjustLengthField); } + public void setSoftlySignalName( + SignalType signalName, boolean adjustLengthField, Config config) { + setSoftlySignalName(signalName.toString(), adjustLengthField, config); + } + @Override public ChannelRequestSignalMessageHandler getHandler(SshContext context) { return new ChannelRequestSignalMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestUnknownMessage.java index 2737d1929..6c7e79355 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestUnknownMessage.java @@ -45,6 +45,14 @@ public void setTypeSpecificData(byte[] typeSpecificData) { ModifiableVariableFactory.safelySetValue(this.typeSpecificData, typeSpecificData); } + public void setSoftlyTypeSpecificData(byte[] typeSpecificData) { + if (this.typeSpecificData == null || this.typeSpecificData.getOriginalValue() == null) { + this.typeSpecificData = + ModifiableVariableFactory.safelySetValue( + this.typeSpecificData, typeSpecificData); + } + } + @Override public ChannelRequestUnknownMessageHandler getHandler(SshContext context) { return new ChannelRequestUnknownMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestX11Message.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestX11Message.java index 0fa338336..7e1a1566c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestX11Message.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelRequestX11Message.java @@ -83,6 +83,10 @@ public void setSingleConnection(boolean singleConnection) { setSingleConnection(Converter.booleanToByte(singleConnection)); } + public void setSoftlySingleConnection(boolean singleConnection) { + setSoftlySingleConnection(Converter.booleanToByte(singleConnection)); + } + public ModifiableInteger getX11AuthenticationProtocolLength() { return x11AuthenticationProtocolLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestCancelTcpIpForwardMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestCancelTcpIpForwardMessage.java index cce9184f4..3758e71c8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestCancelTcpIpForwardMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestCancelTcpIpForwardMessage.java @@ -109,10 +109,16 @@ public void setPortToBind(ModifiableInteger portToBind) { this.portToBind = portToBind; } - public void setPortToBind(Integer portToBind) { + public void setPortToBind(int portToBind) { this.portToBind = ModifiableVariableFactory.safelySetValue(this.portToBind, portToBind); } + public void setSoftlyPortToBind(int portToBind) { + if (this.portToBind == null || this.portToBind.getOriginalValue() == null) { + this.portToBind = ModifiableVariableFactory.safelySetValue(this.portToBind, portToBind); + } + } + @Override public GlobalRequestCancelTcpIpForwardMessageHandler getHandler(SshContext context) { return new GlobalRequestCancelTcpIpForwardMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java index 01d0b6d2b..f2537b45b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestMessage.java @@ -124,4 +124,8 @@ public void setSoftlyWantReply(byte wantReply) { public void setWantReply(boolean wantReply) { setWantReply(Converter.booleanToByte(wantReply)); } + + public void setSoftlyWantReply(boolean wantReply) { + setSoftlyWantReply(Converter.booleanToByte(wantReply)); + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestOpenSshHostKeysMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestOpenSshHostKeysMessage.java index a95e9d582..5610b9b89 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestOpenSshHostKeysMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestOpenSshHostKeysMessage.java @@ -53,6 +53,13 @@ public void setHostKeys(List> hostKeys) { ModifiableVariableFactory.safelySetValue(this.hostKeys, encodeKeys(hostKeys)); } + public void setSoftlyHostKeys(List> hostKeys) { + if (this.hostKeys == null || this.hostKeys.getOriginalValue() == null) { + this.hostKeys = + ModifiableVariableFactory.safelySetValue(this.hostKeys, encodeKeys(hostKeys)); + } + } + @Override public GlobalRequestOpenSshHostKeysMessageHandler getHandler(SshContext context) { return new GlobalRequestOpenSshHostKeysMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestTcpIpForwardMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestTcpIpForwardMessage.java index 6727b7211..db9f0ff66 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestTcpIpForwardMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestTcpIpForwardMessage.java @@ -109,10 +109,16 @@ public void setPortToBind(ModifiableInteger portToBind) { this.portToBind = portToBind; } - public void setPortToBind(Integer portToBind) { + public void setPortToBind(int portToBind) { this.portToBind = ModifiableVariableFactory.safelySetValue(this.portToBind, portToBind); } + public void setSoftlyPortToBind(int portToBind) { + if (this.portToBind == null || this.portToBind.getOriginalValue() == null) { + this.portToBind = ModifiableVariableFactory.safelySetValue(this.portToBind, portToBind); + } + } + @Override public GlobalRequestTcpIpForwardMessageHandler getHandler(SshContext context) { return new GlobalRequestTcpIpForwardMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestUnknownMessage.java index a7a2af8a3..8dc5b1e64 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/GlobalRequestUnknownMessage.java @@ -40,6 +40,14 @@ public void setTypeSpecificData(byte[] typeSpecificData) { ModifiableVariableFactory.safelySetValue(this.typeSpecificData, typeSpecificData); } + public void setSoftlyTypeSpecificData(byte[] typeSpecificData) { + if (this.typeSpecificData == null || this.typeSpecificData.getOriginalValue() == null) { + this.typeSpecificData = + ModifiableVariableFactory.safelySetValue( + this.typeSpecificData, typeSpecificData); + } + } + public void setTypeSpecificData(ModifiableByteArray typeSpecificData) { this.typeSpecificData = typeSpecificData; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelDataMessagePreparator.java index 78493825c..431026187 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelDataMessagePreparator.java @@ -20,6 +20,6 @@ public ChannelDataMessagePreparator(Chooser chooser, ChannelDataMessage message) @Override public void prepareChannelMessageSpecificContents() { // TODO dummy values for fuzzing - getObject().setData(new byte[100], true); + getObject().setSoftlyData(new byte[100], true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelExtendedDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelExtendedDataMessagePreparator.java index fa539a551..8d2d47e51 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelExtendedDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelExtendedDataMessagePreparator.java @@ -24,8 +24,8 @@ public ChannelExtendedDataMessagePreparator( public void prepareChannelMessageSpecificContents() { // TODO dummy values for fuzzing getObject() - .setDataTypeCode( + .setSoftlyDataTypeCode( ExtendedChannelDataType.SSH_EXTENDED_DATA_STDERR.getDataTypeCode()); - getObject().setData(new byte[100], true); + getObject().setSoftlyData(new byte[100], true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java index 25b704fde..c30bc7890 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java @@ -63,7 +63,9 @@ private void prepareChannel() { "About to prepare channel message for channel with local id {}, but channel is not open. Continuing anyway.", channel.getLocalChannelId().getValue()); } - getObject().setRecipientChannelId(channel.getRemoteChannelId()); + getObject() + .setSoftlyRecipientChannelId( + channel.getRemoteChannelId().getValue(), chooser.getConfig()); } protected abstract void prepareChannelMessageSpecificContents(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenConfirmationMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenConfirmationMessagePreparator.java index 37297ca78..93a530ca4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenConfirmationMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenConfirmationMessagePreparator.java @@ -31,8 +31,12 @@ public ChannelOpenConfirmationMessagePreparator( public void prepareMessageSpecificContents() { ChannelManager channelManager = chooser.getContext().getChannelManager(); ChannelOpenConfirmationMessage toCopy = channelManager.prepareNextOpenConfirm(); - getObject().setRecipientChannelId(toCopy.getRecipientChannelId()); - getObject().setSenderChannelId(toCopy.getSenderChannelId()); + getObject() + .setSoftlyRecipientChannelId( + toCopy.getRecipientChannelId().getValue(), chooser.getConfig()); + getObject() + .setSoftlySenderChannelId( + toCopy.getSenderChannelId().getValue(), chooser.getConfig()); Channel channel = channelManager.getChannelByLocalId(getObject().getSenderChannelId().getValue()); @@ -44,12 +48,12 @@ public void prepareMessageSpecificContents() { channel.getLocalChannelId().getValue()); } - getObject().setWindowSize(channel.getLocalWindowSize()); - getObject().setPacketSize(channel.getLocalPacketSize()); + getObject().setSoftlyWindowSize(channel.getLocalWindowSize().getValue()); + getObject().setSoftlyPacketSize(channel.getLocalPacketSize().getValue()); } else { ChannelDefaults channelDefaults = chooser.getConfig().getChannelDefaults(); - getObject().setWindowSize(channelDefaults.getLocalWindowSize()); - getObject().setPacketSize(channelDefaults.getLocalPacketSize()); + getObject().setSoftlyWindowSize(channelDefaults.getLocalWindowSize()); + getObject().setSoftlyPacketSize(channelDefaults.getLocalPacketSize()); } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenFailureMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenFailureMessagePreparator.java index 573c493d9..636e6d06f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenFailureMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenFailureMessagePreparator.java @@ -21,8 +21,8 @@ public ChannelOpenFailureMessagePreparator(Chooser chooser, ChannelOpenFailureMe @Override public void prepareChannelMessageSpecificContents() { // TODO dummy values for fuzzing - getObject().setReasonCode(Integer.MAX_VALUE); - getObject().setReason("", true); - getObject().setLanguageTag("", true); + getObject().setSoftlyReasonCode(Integer.MAX_VALUE); + getObject().setSoftlyReason("", true, chooser.getConfig()); + getObject().setSoftlyLanguageTag("", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenMessagePreparator.java index 0b5940a1c..c437b01c6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenMessagePreparator.java @@ -36,7 +36,7 @@ public void prepareMessageSpecificContents() { Optional.ofNullable(getObject().getConfigLocalChannelId()) .orElse(chooser.getConfig().getChannelDefaults().getLocalChannelId()); - getObject().setSenderChannelId(localChannelId); + getObject().setSoftlySenderChannelId(localChannelId, chooser.getConfig()); Integer senderChannelId = getObject().getSenderChannelId().getValue(); channel = channelManager.getChannelByLocalId(senderChannelId); @@ -52,9 +52,9 @@ public void prepareMessageSpecificContents() { } else { channel = channelManager.createPrendingChannel(senderChannelId); } - getObject().setChannelType(channel.getChannelType(), true); - getObject().setWindowSize(channel.getLocalWindowSize()); - getObject().setPacketSize(32768); + getObject().setSoftlyChannelType(channel.getChannelType(), true, chooser.getConfig()); + getObject().setSoftlyWindowSize(channel.getLocalWindowSize().getValue()); + getObject().setSoftlyPacketSize(32768); prepareChannelOpenMessageSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java index 54f524a2d..675fc1ff5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java @@ -19,6 +19,7 @@ public ChannelOpenSessionMessagePreperator(Chooser chooser, ChannelOpenSessionMe @Override public void prepareChannelOpenMessageSpecificContents() { + // Always set correct channel type -> Don't use soft set channel.setChannelType(ChannelType.SESSION); getObject().setChannelType(channel.getChannelType(), true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenUnknownMessagePreparator.java index 69f03d59f..80180a0dd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenUnknownMessagePreparator.java @@ -19,6 +19,6 @@ public ChannelOpenUnknownMessagePreparator(Chooser chooser, ChannelOpenUnknownMe @Override public void prepareChannelOpenMessageSpecificContents() { - getObject().setTypeSpecificData(new byte[0]); + getObject().setSoftlyTypeSpecificData(new byte[10]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestBreakMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestBreakMessagePreparator.java index fc8bec036..036e23253 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestBreakMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestBreakMessagePreparator.java @@ -21,6 +21,6 @@ public ChannelRequestBreakMessagePreparator( @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setBreakLength(chooser.getConfig().getDefaultBreakLength()); + getObject().setSoftlyBreakLength(chooser.getConfig().getDefaultBreakLength()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java index 8a96a3f8a..1db398ba1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java @@ -20,8 +20,12 @@ public ChannelRequestEnvMessagePreparator(Chooser chooser, ChannelRequestEnvMess @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setWantReply(true); - getObject().setVariableName(chooser.getConfig().getDefaultVariableName(), true); - getObject().setVariableValue(chooser.getConfig().getDefaultVariableValue(), true); + getObject().setSoftlyWantReply(true); + getObject() + .setSoftlyVariableName( + chooser.getConfig().getDefaultVariableName(), true, chooser.getConfig()); + getObject() + .setSoftlyVariableValue( + chooser.getConfig().getDefaultVariableValue(), true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExecMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExecMessagePreparator.java index 9a00f698f..1bf45b630 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExecMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExecMessagePreparator.java @@ -20,6 +20,8 @@ public ChannelRequestExecMessagePreparator(Chooser chooser, ChannelRequestExecMe @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setCommand(chooser.getConfig().getChannelCommand(), true); + getObject() + .setSoftlyCommand( + chooser.getConfig().getChannelCommand(), true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitSignalMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitSignalMessagePreparator.java index 010488c3c..cf125d75b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitSignalMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitSignalMessagePreparator.java @@ -22,9 +22,9 @@ public ChannelRequestExitSignalMessagePreparator( @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setSignalName(SignalType.SIGINT, true); - getObject().setCoreDump(false); - getObject().setErrorMessage("", true); - getObject().setLanguageTag("", true); + getObject().setSoftlySignalName(SignalType.SIGINT, true, chooser.getConfig()); + getObject().setSoftlyCoreDump(false); + getObject().setSoftlyErrorMessage("", true, chooser.getConfig()); + getObject().setSoftlyLanguageTag("", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitStatusMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitStatusMessagePreparator.java index bf6226ade..1e3c36c49 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitStatusMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitStatusMessagePreparator.java @@ -21,6 +21,6 @@ public ChannelRequestExitStatusMessagePreparator( @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setExitStatus(1); + getObject().setSoftlyExitStatus(1); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestMessagePreparator.java index 8d6ba4551..845143a0b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestMessagePreparator.java @@ -30,8 +30,9 @@ protected ChannelRequestMessagePreparator( @Override protected final void prepareChannelMessageSpecificContents() { + // Always set correct channel request type -> Don't use soft set getObject().setRequestType(channelRequestType, true); - getObject().setWantReply(false); + getObject().setSoftlyWantReply(false); prepareChannelRequestMessageSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java index 56fb44d06..6a6689e4d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java @@ -20,12 +20,14 @@ public ChannelRequestPtyMessagePreparator(Chooser chooser, ChannelRequestPtyMess @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setWantReply(true); - getObject().setTermEnvVariable(chooser.getConfig().getDefaultTermEnvVariable(), true); - getObject().setWidthCharacters(chooser.getConfig().getDefaultTerminalWidthColumns()); - getObject().setHeightRows(chooser.getConfig().getDefaultTerminalHeightRows()); - getObject().setWidthPixels(chooser.getConfig().getDefaultTerminalWidthPixels()); - getObject().setHeightPixels(chooser.getConfig().getDefaultTerminalHeightPixels()); - getObject().setEncodedTerminalModes(new byte[0], true); + getObject().setSoftlyWantReply(true); + getObject() + .setSoftlyTermEnvVariable( + chooser.getConfig().getDefaultTermEnvVariable(), true, chooser.getConfig()); + getObject().setSoftlyWidthCharacters(chooser.getConfig().getDefaultTerminalWidthColumns()); + getObject().setSoftlyHeightRows(chooser.getConfig().getDefaultTerminalHeightRows()); + getObject().setSoftlyWidthPixels(chooser.getConfig().getDefaultTerminalWidthPixels()); + getObject().setSoftlyHeightPixels(chooser.getConfig().getDefaultTerminalHeightPixels()); + getObject().setSoftlyEncodedTerminalModes(new byte[0], true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSignalMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSignalMessagePreparator.java index 11661541f..0be27746d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSignalMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSignalMessagePreparator.java @@ -22,6 +22,6 @@ public ChannelRequestSignalMessagePreparator( @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setSignalName(SignalType.SIGINT, true); + getObject().setSoftlySignalName(SignalType.SIGINT, true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java index ce74ad39b..04b5b5ce2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java @@ -21,7 +21,9 @@ public ChannelRequestSubsystemMessagePreparator( @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setWantReply(true); - getObject().setSubsystemName(chooser.getConfig().getDefaultSubsystemName(), true); + getObject().setSoftlyWantReply(true); + getObject() + .setSoftlySubsystemName( + chooser.getConfig().getDefaultSubsystemName(), true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestUnknownMessagePreparator.java index c10bc9a31..f38b70fa7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestUnknownMessagePreparator.java @@ -20,6 +20,6 @@ public ChannelRequestUnknownMessagePreparator( @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setTypeSpecificData(new byte[0]); + getObject().setSoftlyTypeSpecificData(new byte[10]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestWindowChangeMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestWindowChangeMessagePreparator.java index c5cffaaeb..4e4021101 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestWindowChangeMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestWindowChangeMessagePreparator.java @@ -21,9 +21,9 @@ public ChannelRequestWindowChangeMessagePreparator( @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setWidthColumns(chooser.getConfig().getDefaultTerminalWidthColumns()); - getObject().setHeightRows(chooser.getConfig().getDefaultTerminalHeightRows()); - getObject().setWidthPixels(chooser.getConfig().getDefaultTerminalWidthPixels()); - getObject().setHeightPixels(chooser.getConfig().getDefaultTerminalHeightPixels()); + getObject().setSoftlyWidthColumns(chooser.getConfig().getDefaultTerminalWidthColumns()); + getObject().setSoftlyHeightRows(chooser.getConfig().getDefaultTerminalHeightRows()); + getObject().setSoftlyWidthPixels(chooser.getConfig().getDefaultTerminalWidthPixels()); + getObject().setSoftlyHeightPixels(chooser.getConfig().getDefaultTerminalHeightPixels()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestX11MessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestX11MessagePreparator.java index e8e84a1cd..ee7aba8cd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestX11MessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestX11MessagePreparator.java @@ -20,9 +20,9 @@ public ChannelRequestX11MessagePreparator(Chooser chooser, ChannelRequestX11Mess @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setSingleConnection(true); - getObject().setX11AuthenticationProtocol("", true); - getObject().setX11AuthenticationCookie("", true); - getObject().setX11ScreenNumber(1); + getObject().setSoftlySingleConnection(true); + getObject().setSoftlyX11AuthenticationProtocol("", true, chooser.getConfig()); + getObject().setSoftlyX11AuthenticationCookie("", true, chooser.getConfig()); + getObject().setSoftlyX11ScreenNumber(1); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestXonXoffMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestXonXoffMessagePreparator.java index 4a0e523c0..d00b4c98b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestXonXoffMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestXonXoffMessagePreparator.java @@ -21,6 +21,6 @@ public ChannelRequestXonXoffMessagePreparator( @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setClientFlowControl(chooser.getConfig().getClientFlowControl()); + getObject().setSoftlyClientFlowControl(chooser.getConfig().getClientFlowControl()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelWindowAdjustMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelWindowAdjustMessagePreparator.java index 8135488e5..d670b433d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelWindowAdjustMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelWindowAdjustMessagePreparator.java @@ -21,9 +21,11 @@ public ChannelWindowAdjustMessagePreparator( @Override public void prepareChannelMessageSpecificContents() { - getObject().setRecipientChannelId(channel.getRemoteChannelId()); getObject() - .setBytesToAdd( + .setSoftlyRecipientChannelId( + channel.getRemoteChannelId().getValue(), chooser.getConfig()); + getObject() + .setSoftlyBytesToAdd( chooser.getConfig().getChannelDefaults().getLocalWindowSize() - channel.getLocalWindowSize().getValue()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestCancelTcpIpForwardlMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestCancelTcpIpForwardlMessagePreparator.java index aee8c7cb7..20a4bd8a0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestCancelTcpIpForwardlMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestCancelTcpIpForwardlMessagePreparator.java @@ -21,7 +21,7 @@ public GlobalRequestCancelTcpIpForwardlMessagePreparator( @Override public void prepareGlobalRequestMessageSpecificContents() { - getObject().setIpAddressToBind("127.0.0.1", true); - getObject().setPortToBind(22); + getObject().setSoftlyIpAddressToBind("127.0.0.1", true, chooser.getConfig()); + getObject().setSoftlyPortToBind(22); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestMessagePreparator.java index 075e5dcbb..69d9bfd6f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestMessagePreparator.java @@ -30,8 +30,9 @@ protected GlobalRequestMessagePreparator(Chooser chooser, T message, String glob @Override public final void prepareMessageSpecificContents() { + // Always set correct request name -> Don't use soft set getObject().setRequestName(globalRequestType, true); - getObject().setWantReply((byte) 0x00); + getObject().setSoftlyWantReply((byte) 0x00); prepareGlobalRequestMessageSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestOpenSshHostKeysMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestOpenSshHostKeysMessagePreparator.java index 78ff6bc16..b1602b2e4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestOpenSshHostKeysMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestOpenSshHostKeysMessagePreparator.java @@ -21,6 +21,6 @@ public GlobalRequestOpenSshHostKeysMessagePreparator( @Override public void prepareGlobalRequestMessageSpecificContents() { - getObject().setHostKeys(chooser.getConfig().getHostKeys()); + getObject().setSoftlyHostKeys(chooser.getConfig().getHostKeys()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java index 253da6e51..e100c2810 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java @@ -21,8 +21,8 @@ public GlobalRequestTcpIpForwardMessagePreparator( @Override public void prepareGlobalRequestMessageSpecificContents() { - getObject().setWantReply(true); - getObject().setIpAddressToBind("127.0.0.1", true); - getObject().setPortToBind(0); + getObject().setSoftlyWantReply(true); + getObject().setSoftlyIpAddressToBind("127.0.0.1", true, chooser.getConfig()); + getObject().setSoftlyPortToBind(0); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestUnknownMessagePreparator.java index 212c27984..22a45677c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestUnknownMessagePreparator.java @@ -20,6 +20,6 @@ public GlobalRequestUnknownMessagePreparator( @Override public void prepareGlobalRequestMessageSpecificContents() { - getObject().setTypeSpecificData(new byte[0]); + getObject().setSoftlyTypeSpecificData(new byte[10]); } } From 69f3893fafe26e8851f2d6a9062351a1f6b2711a Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 18 Dec 2024 14:01:10 +0100 Subject: [PATCH 078/203] Use setSoftly...() for ssh authentication layer messages --- .../nds/sshattacker/core/config/Config.java | 17 +++++++++- .../message/UserAuthFailureMessage.java | 4 +++ .../message/UserAuthHostbasedMessage.java | 26 ++++++++++++---- .../message/UserAuthInfoResponseMessage.java | 18 +++++++++++ .../message/UserAuthPasswordMessage.java | 8 ++++- .../message/UserAuthPkOkMessage.java | 14 +++++++-- .../message/UserAuthPubkeyMessage.java | 22 ++++++++++--- .../message/UserAuthRequestMessage.java | 10 ++++++ .../message/UserAuthUnknownMessage.java | 9 ++++++ .../holder/AuthenticationPromptEntry.java | 4 +++ .../holder/AuthenticationResponseEntry.java | 4 ++- .../UserAuthBannerMessagePreparator.java | 4 +-- .../UserAuthFailureMessagePreparator.java | 4 +-- .../UserAuthHostbasedMessagePreparator.java | 31 +++++++++++++------ .../UserAuthInfoRequestMessagePreparator.java | 10 +++--- ...UserAuthInfoResponseMessagePreparator.java | 7 +++-- ...hKeyboardInteractiveMessagePreparator.java | 4 +-- .../UserAuthPasswordMessagePreparator.java | 10 ++---- .../UserAuthPkOkMessagePreparator.java | 11 ++++--- .../UserAuthPubkeyMessagePreparator.java | 17 +++++----- .../UserAuthRequestMessagePreparator.java | 4 +-- .../UserAuthUnknownMessagePreparator.java | 2 +- .../AuthenticationPromptEntryPreparator.java | 4 +-- ...AuthenticationResponseEntryPreparator.java | 2 +- .../ChannelOpenSessionMessagePreperator.java | 2 ++ 25 files changed, 187 insertions(+), 61 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 2ec547035..bf721e05c 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -447,7 +447,12 @@ public class Config implements Serializable { // endregion // region general SSH settings - /** Whether the channel IDs in the channel messages should always be prepared */ + /** + * Whether authentication related data in the authentication messages should always be prepared + */ + private Boolean alwaysPrepareAuthentication; + + /** Whether the channel ids in the channel messages should always be prepared */ private Boolean alwaysPrepareChannelIds; /** @@ -1238,6 +1243,7 @@ public Config() { // endregion // region general SSH Settings + alwaysPrepareAuthentication = true; alwaysPrepareChannelIds = true; alwaysPrepareLengthFields = true; fallbackToNoDecryptionOnError = true; @@ -1477,6 +1483,7 @@ public Config(Config other) { defaultTermEnvVariable = other.defaultTermEnvVariable; defaultSubsystemName = other.defaultSubsystemName; defaultBreakLength = other.defaultBreakLength; + alwaysPrepareAuthentication = other.alwaysPrepareAuthentication; alwaysPrepareChannelIds = other.alwaysPrepareChannelIds; alwaysPrepareLengthFields = other.alwaysPrepareLengthFields; fallbackToNoDecryptionOnError = other.fallbackToNoDecryptionOnError; @@ -2278,6 +2285,14 @@ public void setDefaultBreakLength(int defaultBreakLength) { // region general SSH settings + public Boolean getAlwaysPrepareAuthentication() { + return alwaysPrepareAuthentication; + } + + public void setAlwaysPrepareAuthentication(Boolean alwaysPrepareAuthentication) { + this.alwaysPrepareAuthentication = alwaysPrepareAuthentication; + } + public Boolean getAlwaysPrepareChannelIds() { return alwaysPrepareChannelIds; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java index 52ec96c3b..8986e285e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java @@ -174,6 +174,10 @@ public void setPartialSuccess(boolean partialSuccess) { setPartialSuccess(Converter.booleanToByte(partialSuccess)); } + public void setSoftlyPartialSuccess(boolean partialSuccess) { + setSoftlyPartialSuccess(Converter.booleanToByte(partialSuccess)); + } + @Override public UserAuthFailureMessageHandler getHandler(SshContext context) { return new UserAuthFailureMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthHostbasedMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthHostbasedMessage.java index 2781289e9..d84561c15 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthHostbasedMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthHostbasedMessage.java @@ -108,7 +108,9 @@ public void setPubKeyAlgorithm(String pubKeyAlgorithm, boolean adjustLengthField public void setSoftlyPubKeyAlgorithm( String pubKeyAlgorithm, boolean adjustLengthField, Config config) { - if (this.pubKeyAlgorithm == null || this.pubKeyAlgorithm.getOriginalValue() == null) { + if (config.getAlwaysPrepareAuthentication() + || this.pubKeyAlgorithm == null + || this.pubKeyAlgorithm.getOriginalValue() == null) { this.pubKeyAlgorithm = ModifiableVariableFactory.safelySetValue(this.pubKeyAlgorithm, pubKeyAlgorithm); } @@ -178,7 +180,9 @@ public void setHostKeyBytes(byte[] hostKeyBytes, boolean adjustLengthField) { public void setSoftlyHostKeyBytes( byte[] hostKeyBytes, boolean adjustLengthField, Config config) { - if (this.hostKeyBytes == null || this.hostKeyBytes.getOriginalValue() == null) { + if (config.getAlwaysPrepareAuthentication() + || this.hostKeyBytes == null + || this.hostKeyBytes.getOriginalValue() == null) { this.hostKeyBytes = ModifiableVariableFactory.safelySetValue(this.hostKeyBytes, hostKeyBytes); } @@ -231,7 +235,9 @@ public void setHostName(String hostName, boolean adjustLengthField) { } public void setSoftlyHostName(String hostName, boolean adjustLengthField, Config config) { - if (this.hostName == null || this.hostName.getOriginalValue() == null) { + if (config.getAlwaysPrepareAuthentication() + || this.hostName == null + || this.hostName.getOriginalValue() == null) { this.hostName = ModifiableVariableFactory.safelySetValue(this.hostName, hostName); } if (adjustLengthField) { @@ -289,7 +295,9 @@ public void setClientUserName(String clientUserName, boolean adjustLengthField) public void setSoftlyClientUserName( String clientUserName, boolean adjustLengthField, Config config) { - if (this.clientUserName == null || this.clientUserName.getOriginalValue() == null) { + if (config.getAlwaysPrepareAuthentication() + || this.clientUserName == null + || this.clientUserName.getOriginalValue() == null) { this.clientUserName = ModifiableVariableFactory.safelySetValue(this.clientUserName, clientUserName); } @@ -350,8 +358,14 @@ public void setSignature(byte[] signature, boolean adjustLengthField) { } } - public void setSoftlySignature(byte[] signature, boolean adjustLengthField, Config config) { - if (this.signature == null || this.signature.getOriginalValue() == null) { + public void setSoftlySignature( + byte[] signature, + boolean adjustLengthField, + Config config, + boolean useAlwaysPrepareOption) { + if (useAlwaysPrepareOption && config.getAlwaysPrepareAuthentication() + || this.signature == null + || this.signature.getOriginalValue() == null) { this.signature = ModifiableVariableFactory.safelySetValue(this.signature, signature); } if (adjustLengthField) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthInfoResponseMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthInfoResponseMessage.java index 25aec4dc2..c45d2fdb9 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthInfoResponseMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthInfoResponseMessage.java @@ -95,6 +95,24 @@ public void setResponseEntries( this.responseEntries = responseEntries; } + public void setSoftlyResponseEntries( + ArrayList responseEntries, + boolean adjustLengthField, + Config config) { + if (config.getAlwaysPrepareAuthentication() + || this.responseEntries == null + || this.responseEntries.isEmpty()) { + this.responseEntries = responseEntries; + } + if (adjustLengthField) { + if (config.getAlwaysPrepareLengthFields() + || responseEntriesCount == null + || responseEntriesCount.getOriginalValue() == null) { + setResponseEntriesCount(this.responseEntries.size()); + } + } + } + public void addResponseEntry(AuthenticationResponseEntry responseEntry) { addResponseEntry(responseEntry, false); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPasswordMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPasswordMessage.java index 1d5a70f53..3172e4c84 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPasswordMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPasswordMessage.java @@ -68,6 +68,10 @@ public void setChangePassword(boolean changePassword) { setChangePassword(Converter.booleanToByte(changePassword)); } + public void setSoftlyChangePassword(boolean changePassword) { + setSoftlyChangePassword(Converter.booleanToByte(changePassword)); + } + public ModifiableInteger getPasswordLength() { return passwordLength; } @@ -108,7 +112,9 @@ public void setPassword(String password, boolean adjustLengthField) { } public void setSoftlyPassword(String password, boolean adjustLengthField, Config config) { - if (this.password == null || this.password.getOriginalValue() == null) { + if (config.getAlwaysPrepareAuthentication() + || this.password == null + || this.password.getOriginalValue() == null) { this.password = ModifiableVariableFactory.safelySetValue(this.password, password); } if (adjustLengthField) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPkOkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPkOkMessage.java index 9e409b233..af0897d9f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPkOkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPkOkMessage.java @@ -75,7 +75,9 @@ public void setPubkeyAlgName(String pubkeyAlgName, boolean adjustLengthField) { public void setSoftlyPubkeyAlgName( String pubkeyAlgName, boolean adjustLengthField, Config config) { - if (this.pubkeyAlgName == null || this.pubkeyAlgName.getOriginalValue() == null) { + if (config.getAlwaysPrepareAuthentication() + || this.pubkeyAlgName == null + || this.pubkeyAlgName.getOriginalValue() == null) { this.pubkeyAlgName = ModifiableVariableFactory.safelySetValue(this.pubkeyAlgName, pubkeyAlgName); } @@ -120,8 +122,14 @@ public void setPubkey(byte[] pubkey, boolean adjustLengthField) { } } - public void setSoftlyPubkey(byte[] pubkey, boolean adjustLengthField, Config config) { - if (this.pubkey == null || this.pubkey.getOriginalValue() == null) { + public void setSoftlyPubkey( + byte[] pubkey, + boolean adjustLengthField, + Config config, + boolean useAlwaysPrepareOption) { + if (useAlwaysPrepareOption && config.getAlwaysPrepareAuthentication() + || this.pubkey == null + || this.pubkey.getOriginalValue() == null) { this.pubkey = ModifiableVariableFactory.safelySetValue(this.pubkey, pubkey); } if (adjustLengthField) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPubkeyMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPubkeyMessage.java index 133a1f486..0359fd271 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPubkeyMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthPubkeyMessage.java @@ -73,7 +73,9 @@ public void setPubkey(byte[] pubkey, boolean adjustLengthField) { } public void setSoftlyPubkey(byte[] pubkey, boolean adjustLengthField, Config config) { - if (this.pubkey == null || this.pubkey.getOriginalValue() == null) { + if (config.getAlwaysPrepareAuthentication() + || this.pubkey == null + || this.pubkey.getOriginalValue() == null) { this.pubkey = ModifiableVariableFactory.safelySetValue(this.pubkey, pubkey); } if (adjustLengthField) { @@ -126,7 +128,9 @@ public void setPubkeyAlgName(String pubkeyAlgName, boolean adjustLengthField) { public void setSoftlyPubkeyAlgName( String pubkeyAlgName, boolean adjustLengthField, Config config) { - if (this.pubkeyAlgName == null || this.pubkeyAlgName.getOriginalValue() == null) { + if (config.getAlwaysPrepareAuthentication() + || this.pubkeyAlgName == null + || this.pubkeyAlgName.getOriginalValue() == null) { this.pubkeyAlgName = ModifiableVariableFactory.safelySetValue(this.pubkeyAlgName, pubkeyAlgName); } @@ -172,6 +176,10 @@ public void setUseSignature(boolean useSignature) { setUseSignature(Converter.booleanToByte(useSignature)); } + public void setSoftlyUseSignature(boolean useSignature) { + setSoftlyUseSignature(Converter.booleanToByte(useSignature)); + } + public ModifiableByte getUseSignature() { return useSignature; } @@ -199,8 +207,14 @@ public void setSignature(byte[] signature, boolean adjustLengthField) { } } - public void setSoftlySignature(byte[] signature, boolean adjustLengthField, Config config) { - if (this.signature == null || this.signature.getOriginalValue() == null) { + public void setSoftlySignature( + byte[] signature, + boolean adjustLengthField, + Config config, + boolean useAlwaysPrepareOption) { + if (useAlwaysPrepareOption && config.getAlwaysPrepareAuthentication() + || this.signature == null + || this.signature.getOriginalValue() == null) { this.signature = ModifiableVariableFactory.safelySetValue(this.signature, signature); } if (adjustLengthField) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthRequestMessage.java index 87f755740..24bc9fbe4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthRequestMessage.java @@ -172,6 +172,11 @@ public void setServiceName(ServiceType serviceType, boolean adjustLengthField) { setServiceName(serviceType.toString(), adjustLengthField); } + public void setSoftlyServiceName( + ServiceType serviceType, boolean adjustLengthField, Config config) { + setSoftlyServiceName(serviceType.toString(), adjustLengthField, config); + } + public ModifiableInteger getMethodNameLength() { return methodNameLength; } @@ -235,4 +240,9 @@ public void setMethodName( AuthenticationMethod authenticationMethod, boolean adjustLengthField) { setMethodName(authenticationMethod.toString(), adjustLengthField); } + + public void setSoftlyMethodName( + AuthenticationMethod authenticationMethod, boolean adjustLengthField, Config config) { + setSoftlyMethodName(authenticationMethod.toString(), adjustLengthField, config); + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthUnknownMessage.java index cf4c1da9b..bd16c91ba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthUnknownMessage.java @@ -44,6 +44,15 @@ public void setMethodSpecificFields(byte[] methodSpecificFields) { this.methodSpecificFields, methodSpecificFields); } + public void setSoftlyMethodSpecificFields(byte[] methodSpecificFields) { + if (this.methodSpecificFields == null + || this.methodSpecificFields.getOriginalValue() == null) { + this.methodSpecificFields = + ModifiableVariableFactory.safelySetValue( + this.methodSpecificFields, methodSpecificFields); + } + } + @Override public UserAuthUnknownMessageHandler getHandler(SshContext context) { return new UserAuthUnknownMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java index ce10d6b40..2c97c81b1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java @@ -117,6 +117,10 @@ public void setEcho(boolean echo) { setEcho(Converter.booleanToByte(echo)); } + public void setSoftlyEcho(boolean echo) { + setSoftlyEcho(Converter.booleanToByte(echo)); + } + public AuthenticationPromptEntryHandler getHandler(SshContext context) { return new AuthenticationPromptEntryHandler(context, this); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java index 38340eb6a..70fcedfb2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java @@ -84,7 +84,9 @@ public void setResponse(String response, boolean adjustLengthField) { } public void setSoftlyResponse(String response, boolean adjustLengthField, Config config) { - if (this.response == null || this.response.getOriginalValue() == null) { + if (config.getAlwaysPrepareAuthentication() + || this.response == null + || this.response.getOriginalValue() == null) { this.response = ModifiableVariableFactory.safelySetValue(this.response, response); } if (adjustLengthField) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthBannerMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthBannerMessagePreparator.java index 528fa80c9..c14a82039 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthBannerMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthBannerMessagePreparator.java @@ -21,7 +21,7 @@ public UserAuthBannerMessagePreparator(Chooser chooser, UserAuthBannerMessage me @Override public void prepareMessageSpecificContents() { // TODO dummy values for fuzzing - getObject().setMessage("", true); - getObject().setLanguageTag("", true); + getObject().setSoftlyMessage("", true, chooser.getConfig()); + getObject().setSoftlyLanguageTag("", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthFailureMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthFailureMessagePreparator.java index f5a36cd30..b61ddf7e4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthFailureMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthFailureMessagePreparator.java @@ -21,7 +21,7 @@ public UserAuthFailureMessagePreparator(Chooser chooser, UserAuthFailureMessage @Override public void prepareMessageSpecificContents() { // TODO dummy values for fuzzing - getObject().setPossibleAuthenticationMethods("", true); - getObject().setPartialSuccess(true); + getObject().setSoftlyPossibleAuthenticationMethods("", true, chooser.getConfig()); + getObject().setSoftlyPartialSuccess(true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthHostbasedMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthHostbasedMessagePreparator.java index e14543f18..34f38a1a9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthHostbasedMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthHostbasedMessagePreparator.java @@ -38,13 +38,24 @@ public UserAuthHostbasedMessagePreparator(Chooser chooser, UserAuthHostbasedMess @Override public void prepareUserAuthRequestSpecificContents() { - getObject().setPubKeyAlgorithm(chooser.getHostKeyAlgorithm().toString(), true); - getObject().setHostKeyBytes(PublicKeyHelper.encode(chooser.getNegotiatedHostKey()), true); - Optional hostName = - Optional.ofNullable(chooser.getContext().getConnection().getIp()); - getObject().setHostName(hostName.orElse(AliasedConnection.DEFAULT_IP), true); + getObject() + .setSoftlyPubKeyAlgorithm( + chooser.getHostKeyAlgorithm().toString(), true, chooser.getConfig()); + getObject() + .setSoftlyHostKeyBytes( + PublicKeyHelper.encode(chooser.getNegotiatedHostKey()), + true, + chooser.getConfig()); + getObject() + .setSoftlyHostName( + Optional.ofNullable(chooser.getContext().getConnection().getIp()) + .orElse(AliasedConnection.DEFAULT_IP), + true, + chooser.getConfig()); // set the username on client machine to the username on remote, specify if needed - getObject().setClientUserName(chooser.getConfig().getUsername(), true); + getObject() + .setSoftlyClientUserName( + chooser.getConfig().getUsername(), true, chooser.getConfig()); prepareSignature(); } @@ -90,17 +101,19 @@ public void prepareSignature() { ArrayConverter.intToBytes( rawSignature.length, DataFormatConstants.STRING_SIZE_LENGTH)); signatureOutput.write(rawSignature); - getObject().setSignature(signatureOutput.toByteArray(), true); + getObject() + .setSoftlySignature( + signatureOutput.toByteArray(), true, chooser.getConfig(), true); } catch (CryptoException e) { LOGGER.error( "An unexpected cryptographic exception occurred during signature generation, workflow will continue but signature is left blank"); LOGGER.debug(e); - getObject().setSignature(new byte[0], true); + getObject().setSoftlySignature(new byte[0], true, chooser.getConfig(), false); } catch (IOException e) { LOGGER.error( "An unexpected IOException occured during signature generation, workflow will continue but signature is left blank"); LOGGER.debug(e); - getObject().setSignature(new byte[0], true); + getObject().setSoftlySignature(new byte[0], true, chooser.getConfig(), false); } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java index 82229a9e8..ac0c2c34c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java @@ -22,10 +22,12 @@ public UserAuthInfoRequestMessagePreparator( @Override public void prepareMessageSpecificContents() { - getObject().setUserName("", true); - getObject().setInstruction("", true); - getObject().setLanguageTag("", true); - getObject().setPromptEntriesCount(0); + getObject().setSoftlyUserName("", true, chooser.getConfig()); + getObject().setSoftlyInstruction("", true, chooser.getConfig()); + getObject().setSoftlyLanguageTag("", true, chooser.getConfig()); + getObject() + .setSoftlyPromptEntriesCount( + getObject().getPromptEntries().size(), chooser.getConfig()); getObject() .getPromptEntries() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java index 683c0a9fa..90bde8002 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java @@ -24,12 +24,15 @@ public UserAuthInfoResponseMessagePreparator( @Override public void prepareMessageSpecificContents() { - getObject().setResponseEntriesCount(0); ArrayList nextResponses = chooser.getNextPreConfiguredAuthResponses(); if (nextResponses != null) { - getObject().setResponseEntries(nextResponses, true); + getObject().setSoftlyResponseEntries(nextResponses, true, chooser.getConfig()); + } else { + getObject() + .setSoftlyResponseEntriesCount( + getObject().getResponseEntries().size(), chooser.getConfig()); } getObject() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthKeyboardInteractiveMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthKeyboardInteractiveMessagePreparator.java index 149731a5e..a47d83d36 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthKeyboardInteractiveMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthKeyboardInteractiveMessagePreparator.java @@ -21,7 +21,7 @@ public UserAuthKeyboardInteractiveMessagePreparator( @Override public void prepareUserAuthRequestSpecificContents() { - getObject().setLanguageTag("", true); - getObject().setSubMethods("pam", true); + getObject().setSoftlyLanguageTag("", true, chooser.getConfig()); + getObject().setSoftlySubMethods("pam", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPasswordMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPasswordMessagePreparator.java index c8e875040..8575e36e6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPasswordMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPasswordMessagePreparator.java @@ -8,7 +8,6 @@ package de.rub.nds.sshattacker.core.protocol.authentication.preparator; import de.rub.nds.sshattacker.core.constants.AuthenticationMethod; -import de.rub.nds.sshattacker.core.constants.ServiceType; import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthPasswordMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -21,11 +20,8 @@ public UserAuthPasswordMessagePreparator(Chooser chooser, UserAuthPasswordMessag @Override public void prepareUserAuthRequestSpecificContents() { - getObject().setUserName(chooser.getConfig().getUsername(), true); - getObject().setServiceName(ServiceType.SSH_CONNECTION, true); - getObject().setMethodName(AuthenticationMethod.PASSWORD, true); - getObject().setChangePassword(false); - getObject().setPassword(chooser.getConfig().getPassword(), true); - getObject().setNewPassword(chooser.getConfig().getPassword(), true); + getObject().setSoftlyChangePassword(false); + getObject().setSoftlyPassword(chooser.getConfig().getPassword(), true, chooser.getConfig()); + getObject().setSoftlyNewPassword("newPassword", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPkOkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPkOkMessagePreparator.java index 23166dd31..b1f90088a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPkOkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPkOkMessagePreparator.java @@ -24,11 +24,14 @@ public UserAuthPkOkMessagePreparator(Chooser chooser, UserAuthPkOkMessage messag public void prepareMessageSpecificContents() { SshPublicKey pk = chooser.getSelectedPublicKeyForAuthentication(); if (pk != null) { - getObject().setPubkeyAlgName(pk.getPublicKeyFormat().getName(), true); - getObject().setPubkey(PublicKeyHelper.encode(pk), true); + getObject() + .setSoftlyPubkeyAlgName( + pk.getPublicKeyFormat().getName(), true, chooser.getConfig()); + getObject() + .setSoftlyPubkey(PublicKeyHelper.encode(pk), true, chooser.getConfig(), true); } else { - getObject().setPubkeyAlgName("", true); - getObject().setPubkey(new byte[0], true); + getObject().setSoftlyPubkeyAlgName("", true, chooser.getConfig()); + getObject().setSoftlyPubkey(new byte[0], true, chooser.getConfig(), false); } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPubkeyMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPubkeyMessagePreparator.java index f455537a1..84459dcfc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPubkeyMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPubkeyMessagePreparator.java @@ -138,16 +138,19 @@ private byte[] getEncodedSignature(SshPublicKey pk) { @Override public void prepareUserAuthRequestSpecificContents() { - getObject().setUseSignature(true); + getObject().setSoftlyUseSignature(true); SshPublicKey pk = chooser.getSelectedPublicKeyForAuthentication(); if (pk != null) { - getObject().setPubkeyAlgName(pk.getPublicKeyFormat().getName(), true); - getObject().setPubkey(PublicKeyHelper.encode(pk), true); - getObject().setSignature(getEncodedSignature(pk), true); + getObject() + .setSoftlyPubkeyAlgName( + pk.getPublicKeyFormat().getName(), true, chooser.getConfig()); + getObject().setSoftlyPubkey(PublicKeyHelper.encode(pk), true, chooser.getConfig()); + getObject() + .setSoftlySignature(getEncodedSignature(pk), true, chooser.getConfig(), true); } else { - getObject().setPubkeyAlgName("", true); - getObject().setPubkey(new byte[0], true); - getObject().setSignature(new byte[0], true); + getObject().setSoftlyPubkeyAlgName("", true, chooser.getConfig()); + getObject().setSoftlyPubkey(new byte[0], true, chooser.getConfig()); + getObject().setSoftlySignature(new byte[0], true, chooser.getConfig(), false); } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java index f02d11439..dfa10e99f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java @@ -27,8 +27,8 @@ protected UserAuthRequestMessagePreparator( @Override public final void prepareMessageSpecificContents() { - getObject().setUserName(chooser.getConfig().getUsername(), true); - getObject().setServiceName(ServiceType.SSH_CONNECTION, true); + getObject().setSoftlyUserName(chooser.getConfig().getUsername(), true, chooser.getConfig()); + getObject().setSoftlyServiceName(ServiceType.SSH_CONNECTION, true, chooser.getConfig()); // Always set correct authentication method -> Don't use soft set getObject().setMethodName(authenticationMethod, true); prepareUserAuthRequestSpecificContents(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthUnknownMessagePreparator.java index a49a14f48..eabf22dda 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthUnknownMessagePreparator.java @@ -20,6 +20,6 @@ public UserAuthUnknownMessagePreparator(Chooser chooser, UserAuthUnknownMessage @Override public void prepareUserAuthRequestSpecificContents() { - getObject().setMethodSpecificFields(new byte[0]); + getObject().setSoftlyMethodSpecificFields(new byte[10]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationPromptEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationPromptEntryPreparator.java index 26852a2fa..0b8868afb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationPromptEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationPromptEntryPreparator.java @@ -20,7 +20,7 @@ public AuthenticationPromptEntryPreparator( @Override public final void prepare() { - getObject().setPrompt("Response: "); - getObject().setEcho(true); + getObject().setSoftlyPrompt("Response: ", true, chooser.getConfig()); + getObject().setSoftlyEcho(true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationResponseEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationResponseEntryPreparator.java index 63036cf20..8861cc0c0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationResponseEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/holder/AuthenticationResponseEntryPreparator.java @@ -20,6 +20,6 @@ public AuthenticationResponseEntryPreparator( @Override public final void prepare() { - getObject().setResponse("6d757575", true); + getObject().setSoftlyResponse("6d757575", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java index 675fc1ff5..3fef4a37a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreperator.java @@ -19,6 +19,8 @@ public ChannelOpenSessionMessagePreperator(Chooser chooser, ChannelOpenSessionMe @Override public void prepareChannelOpenMessageSpecificContents() { + // TODO: I think it would be better to do this in ChannelOpenMessagePreparator, and pass + // ChannelType as argument // Always set correct channel type -> Don't use soft set channel.setChannelType(ChannelType.SESSION); getObject().setChannelType(channel.getChannelType(), true); From 9517dd4537f44a3145485165e9201737185ceb91 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 18 Dec 2024 15:31:20 +0100 Subject: [PATCH 079/203] Add prepareBeforeSending option to send method, so ProxyFilterMessagesAction works as before my change (I added the prepare call to the send method). --- .../workflow/action/ProxyFilterMessagesAction.java | 6 +++--- .../core/workflow/action/SendAction.java | 3 ++- .../action/executor/SendMessageHelper.java | 14 ++++++++++---- .../test/java/executing/NetcatWorkflowFactory.java | 2 +- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ProxyFilterMessagesAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ProxyFilterMessagesAction.java index 7d93b6f7f..3e5bf6fcd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ProxyFilterMessagesAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ProxyFilterMessagesAction.java @@ -87,10 +87,10 @@ protected void forwardMessages(SshContext forwardToCtx) { "Forwarding messages ({}): {}", forwardToAlias, getReadableString(receivedMessages)); - // TODO: use setSoftly methods in perpetrators of ssh messages, so that forwarded messages - // are not tempered + // TODO: Handle Data Messages correctly (e.g. prepare Channel Data Messages here, by + // serialization of the received inner data message; or send only outer Data Message) MessageActionResult result = - SendMessageHelper.sendMessages(forwardToCtx, filteredMessages.stream()); + SendMessageHelper.sendMessages(forwardToCtx, filteredMessages.stream(), false); sendMessages = result.getMessageList(); if (executedAsPlanned) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SendAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SendAction.java index fe20e3e71..4aa47c6cd 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SendAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/SendAction.java @@ -109,7 +109,8 @@ public void execute(State state) throws WorkflowExecutionException { LOGGER.info("Sending messages ({}): {}", connectionAlias, sending); } - MessageActionResult result = SendMessageHelper.sendMessages(context, messages.stream()); + MessageActionResult result = + SendMessageHelper.sendMessages(context, messages.stream(), true); // Check if all actions that were expected to be sent were actually // sent or if some failure occurred. diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java index 3bcf27db1..3302f8568 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java @@ -35,10 +35,13 @@ public static void sendPacket(SshContext context, AbstractPacket packet) throws transportHandler.sendData(packetLayer.preparePacket(packet)); } - public static MessageActionResult sendMessage(SshContext context, ProtocolMessage message) { + public static MessageActionResult sendMessage( + SshContext context, ProtocolMessage message, boolean prepareBeforeSending) { try { // Prepare message - message.getHandler(context).getPreparator().prepare(); + if (prepareBeforeSending) { + message.getHandler(context).getPreparator().prepare(); + } ProtocolMessage innerMessage = null; if (message instanceof DataMessage) { @@ -48,6 +51,7 @@ public static MessageActionResult sendMessage(SshContext context, ProtocolMessag if (handler instanceof MessageSentHandler) { ((MessageSentHandler) handler).adjustContextAfterMessageSent(); } + // TODO: decide if we should pass prepareBeforeSending // serialize also prepares the ChannelDataMessage message = context.getDataMessageLayer().serialize((DataMessage) message); } @@ -78,9 +82,11 @@ public static MessageActionResult sendMessage(SshContext context, ProtocolMessag } public static MessageActionResult sendMessages( - SshContext context, Stream> messageStream) { + SshContext context, + Stream> messageStream, + boolean prepareBeforeSending) { return messageStream - .map(message -> sendMessage(context, message)) + .map(message -> sendMessage(context, message, prepareBeforeSending)) .reduce(MessageActionResult::merge) .orElse(new MessageActionResult()); } diff --git a/SSH-Core/src/test/java/executing/NetcatWorkflowFactory.java b/SSH-Core/src/test/java/executing/NetcatWorkflowFactory.java index f281f6e9e..7c1c440d7 100755 --- a/SSH-Core/src/test/java/executing/NetcatWorkflowFactory.java +++ b/SSH-Core/src/test/java/executing/NetcatWorkflowFactory.java @@ -50,7 +50,7 @@ public static void main(String[] args) throws Exception { ChannelDataMessage dataMessage = new ChannelDataMessage(); dataMessage.setRecipientChannelId(Modifiable.explicit(0)); dataMessage.setData((read + "\n").getBytes()); - SendMessageHelper.sendMessage(state.getSshContext(), dataMessage); + SendMessageHelper.sendMessage(state.getSshContext(), dataMessage, false); } } } From 86fe015b9c21f4adf6f4ee1067377d3f0250d9ce Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 19 Dec 2024 08:55:43 +0100 Subject: [PATCH 080/203] Use setSoftly..() methods for transport layer messages. Except for Key exchange messages, yet. Also improve the converter methods for name lists a little bit. --- .../nds/sshattacker/core/config/Config.java | 27 ++ .../core/constants/CharConstants.java | 3 +- .../SftpResponseCheckFileMessageHandler.java | 1 - .../SftpResponseLimitsMessageHandler.java | 1 - ...pResponseSpaceAvailableMessageHandler.java | 1 - .../SftpResponseStatVfsMessageHandler.java | 1 - .../SftpResponseUnknownMessageHandler.java | 1 - ...ResponseUsersGroupsByIdMessageHandler.java | 1 - .../SftpRequestCloseMessageHandler.java | 1 - .../SftpRequestFileSetStatMessageHandler.java | 1 - .../SftpRequestFileStatMessageHandler.java | 1 - .../SftpRequestLinkStatMessageHandler.java | 1 - .../SftpRequestMakeDirMessageHandler.java | 1 - .../SftpRequestOpenDirMessageHandler.java | 1 - .../SftpRequestOpenMessageHandler.java | 1 - .../SftpRequestReadDirMessageHandler.java | 1 - .../SftpRequestReadLinkMessageHandler.java | 1 - .../SftpRequestReadMessageHandler.java | 1 - .../SftpRequestRealPathMessageHandler.java | 1 - .../SftpRequestRemoveMessageHandler.java | 1 - .../SftpRequestRenameMessageHandler.java | 1 - .../SftpRequestSetStatMessageHandler.java | 1 - .../SftpRequestStatMessageHandler.java | 1 - ...SftpRequestSymbolicLinkMessageHandler.java | 1 - .../SftpRequestWriteMessageHandler.java | 1 - .../SftpResponseAttributesMessageHandler.java | 1 - .../SftpResponseDataMessageHandler.java | 1 - .../SftpResponseHandleMessageHandler.java | 1 - .../SftpResponseNameMessageHandler.java | 1 - .../SftpResponseStatusMessageHandler.java | 1 - .../data/sftp/message/SftpInitMessage.java | 1 - .../SftpRequestCheckFileHandleMessage.java | 26 +- .../SftpRequestCheckFileNameMessage.java | 26 +- .../sftp/parser/SftpInitMessageParser.java | 1 - .../SftpRequestUnknownMessagePreparator.java | 6 +- .../SftpAbstractExtensionPreparator.java | 5 - .../SftpExtensionUnknownPreparator.java | 4 +- .../core/data/string/StringDataMessage.java | 6 + .../string/StringDataMessagePreparator.java | 4 +- .../core/data/unknown/UnknownDataMessage.java | 6 + .../unknown/UnknownDataMessagePreparator.java | 2 +- .../message/UserAuthFailureMessage.java | 14 +- .../message/UserAuthRequestMessage.java | 8 +- .../holder/AuthenticationPromptEntry.java | 1 - .../holder/AuthenticationResponseEntry.java | 1 - .../KeyExchangeInitMessageHandler.java | 25 +- .../DelayCompressionExtensionHandler.java | 8 +- ...lgorithmsRoumenPetrovExtensionHandler.java | 4 +- .../transport/message/AsciiMessage.java | 15 ++ .../transport/message/DebugMessage.java | 4 + .../transport/message/DisconnectMessage.java | 4 + .../message/KeyExchangeInitMessage.java | 233 ++++++++++-------- .../message/ServiceRequestMessage.java | 4 +- .../transport/message/UnknownMessage.java | 6 + .../message/VersionExchangeMessage.java | 21 ++ .../extension/DelayCompressionExtension.java | 51 ++-- ...licKeyAlgorithmsRoumenPetrovExtension.java | 71 ++++-- .../extension/ServerSigAlgsExtension.java | 53 ++-- ...AlgorithmsRoumenPetrovExtensionParser.java | 8 +- .../preparator/AsciiMessagePreparator.java | 6 +- .../preparator/DebugMessagePreparator.java | 6 +- .../DisconnectMessagePreparator.java | 19 +- .../ExtensionInfoMessagePreparator.java | 6 +- ...ybridKeyExchangeInitMessagePreperator.java | 18 +- .../preparator/IgnoreMessagePreparator.java | 2 +- .../KeyExchangeInitMessagePreparator.java | 188 ++++++++------ .../preparator/PingMessagePreparator.java | 2 +- .../preparator/PongMessagePreparator.java | 2 +- .../ServiceAcceptMessagePreparator.java | 3 +- .../ServiceRequestMessagePreparator.java | 4 +- .../UnimplementedMessagePreparator.java | 3 +- .../preparator/UnknownMessagePreparator.java | 2 +- .../VersionExchangeMessagePreparator.java | 12 +- .../AbstractExtensionPreparator.java | 11 +- .../DelayCompressionExtensionPreparator.java | 36 +-- .../extension/PingExtensionPreparator.java | 5 +- ...rithmsRoumenPetrovExtensionPreparator.java | 13 +- .../ServerSigAlgsExtensionPreparator.java | 9 +- .../extension/UnknownExtensionPreparator.java | 9 +- ...rithmsRoumenPetrovExtensionSerializer.java | 8 +- .../nds/sshattacker/core/util/Converter.java | 62 ++++- 81 files changed, 618 insertions(+), 484 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index bf721e05c..23fd4fe4c 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -447,6 +447,14 @@ public class Config implements Serializable { // endregion // region general SSH settings + /** Whether kex exchange init messages should always be prepared with configured values */ + private Boolean alwaysPrepareKexInit; + + /** + * Whether requested service names in kex and authentication messages should always be prepared + */ + private Boolean alwaysPrepareServiceNames; + /** * Whether authentication related data in the authentication messages should always be prepared */ @@ -1243,6 +1251,8 @@ public Config() { // endregion // region general SSH Settings + alwaysPrepareKexInit = true; + alwaysPrepareServiceNames = true; alwaysPrepareAuthentication = true; alwaysPrepareChannelIds = true; alwaysPrepareLengthFields = true; @@ -1483,6 +1493,8 @@ public Config(Config other) { defaultTermEnvVariable = other.defaultTermEnvVariable; defaultSubsystemName = other.defaultSubsystemName; defaultBreakLength = other.defaultBreakLength; + alwaysPrepareKexInit = other.alwaysPrepareKexInit; + alwaysPrepareServiceNames = other.alwaysPrepareServiceNames; alwaysPrepareAuthentication = other.alwaysPrepareAuthentication; alwaysPrepareChannelIds = other.alwaysPrepareChannelIds; alwaysPrepareLengthFields = other.alwaysPrepareLengthFields; @@ -2284,6 +2296,21 @@ public void setDefaultBreakLength(int defaultBreakLength) { // endregion // region general SSH settings + public Boolean getAlwaysPrepareKexInit() { + return alwaysPrepareKexInit; + } + + public void setAlwaysPrepareKexInit(Boolean alwaysPrepareKexInit) { + this.alwaysPrepareKexInit = alwaysPrepareKexInit; + } + + public Boolean getAlwaysPrepareServiceNames() { + return alwaysPrepareServiceNames; + } + + public void setAlwaysPrepareServiceNames(Boolean alwaysPrepareServiceNames) { + this.alwaysPrepareServiceNames = alwaysPrepareServiceNames; + } public Boolean getAlwaysPrepareAuthentication() { return alwaysPrepareAuthentication; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/CharConstants.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/CharConstants.java index fa1e298ed..dc857d1cd 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/CharConstants.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/CharConstants.java @@ -11,7 +11,8 @@ public final class CharConstants { public static final byte CARRIAGE_RETURN = 0x0d; public static final byte NEWLINE = 0x0a; public static final char VERSION_COMMENT_SEPARATOR = ' '; - public static final char ALGORITHM_SEPARATOR = ','; + public static final String NAME_LIST_SEPARATOR = ","; + public static final char NAME_LIST_SEPARATOR_CHAR = ','; private CharConstants() { super(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java index b084de1b7..566dabd8c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseCheckFileMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseCheckFileMessageParser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java index fa7ced06b..cdb099de3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseLimitsMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseLimitsMessageParser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java index 1f289744b..a3bdd3456 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseSpaceAvailableMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseSpaceAvailableMessageParser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java index 56f0a59e7..5facfaff0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseStatVfsMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseStatVfsMessageParser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java index c8d70baf7..6d9165cdc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUnknownMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseUnknownMessageParser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java index 1a018dfcd..73a1a2801 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUsersGroupsByIdMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseUsersGroupsByIdMessageParser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestCloseMessageHandler.java index 03a5f6c4d..fa3f4c5bf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestCloseMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestCloseMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestCloseMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestCloseMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestCloseMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java index beec023cc..6494557ad 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestFileSetStatMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestFileSetStatMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java index e26b0952e..ca723558b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileStatMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestFileStatMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestFileStatMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestLinkStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestLinkStatMessageHandler.java index 4db2950d8..ba5680940 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestLinkStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestLinkStatMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestLinkStatMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestLinkStatMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestLinkStatMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java index 97de45fe1..ff04cbe44 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMakeDirMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestMakeDirMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestMakeDirMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenDirMessageHandler.java index 1c1508622..b5c1ba3ff 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenDirMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenDirMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestOpenDirMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestOpenDirMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java index 8ec710fa2..7d608ce64 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestOpenMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestOpenMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadDirMessageHandler.java index 2bc16a660..99d71467f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadDirMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadDirMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestReadDirMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestReadDirMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadLinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadLinkMessageHandler.java index 840a718f3..84e852eb2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadLinkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadLinkMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadLinkMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestReadLinkMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestReadLinkMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadMessageHandler.java index 9fbda1efe..e4690f12e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestReadMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestReadMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRealPathMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRealPathMessageHandler.java index a84540e28..96f8e53a2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRealPathMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRealPathMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRealPathMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestRealPathMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestRealPathMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveMessageHandler.java index 97fa00c0f..8106c1151 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestRemoveMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestRemoveMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRenameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRenameMessageHandler.java index 2c1c71f0f..a65ca9ceb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRenameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRenameMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRenameMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestRenameMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestRenameMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java index 20c205352..fd56c3682 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestSetStatMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestSetStatMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java index e12d14b6f..f285ffd3a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestStatMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestStatMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestStatMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSymbolicLinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSymbolicLinkMessageHandler.java index 1572186d6..72ec9f30b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSymbolicLinkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSymbolicLinkMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSymbolicLinkMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestSymbolicLinkMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestSymbolicLinkMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestWriteMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestWriteMessageHandler.java index 771601cd2..d2e6fbfa5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestWriteMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestWriteMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWriteMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestWriteMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestWriteMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java index fd0c3463f..815147cb6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.response; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseAttributesMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseAttributesMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseDataMessageHandler.java index 6a933fa49..c54db1424 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseDataMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseDataMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.response; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseDataMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseDataMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseDataMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseHandleMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseHandleMessageHandler.java index 46fdffe7c..606468a0f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseHandleMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseHandleMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.response; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseHandleMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseHandleMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseHandleMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java index 8dedf2aad..17168cd82 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.response; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseNameMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseNameMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseStatusMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseStatusMessageHandler.java index 707113c4a..ac342fa1a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseStatusMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseStatusMessageHandler.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.handler.response; -import de.rub.nds.sshattacker.core.data.sftp.*; import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseStatusMessage; import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseStatusMessageParser; import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseStatusMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java index 4496cf8ba..333b8aff8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java @@ -8,7 +8,6 @@ package de.rub.nds.sshattacker.core.data.sftp.message; import de.rub.nds.sshattacker.core.data.sftp.handler.SftpInitMessageHandler; -import de.rub.nds.sshattacker.core.protocol.transport.message.extension.*; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpInitMessage extends SftpHandshakeMessage { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java index 8d51c6bbc..ae47dd718 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java @@ -12,13 +12,12 @@ import de.rub.nds.modifiablevariable.longint.ModifiableLong; import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.config.Config; -import de.rub.nds.sshattacker.core.constants.CharConstants; import de.rub.nds.sshattacker.core.constants.HashAlgorithm; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCheckFileHandleMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.util.Converter; import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.stream.Collectors; public class SftpRequestCheckFileHandleMessage extends SftpRequestExtendedWithHandleMessage { @@ -100,10 +99,11 @@ public void setHashAlgorithms(String hashAlgorithms, boolean adjustLengthField) } public void setSoftlyHashAlgorithms( - String hashAlgorithms, boolean adjustLengthField, Config config) { + List hashAlgorithms, boolean adjustLengthField, Config config) { if (this.hashAlgorithms == null || this.hashAlgorithms.getOriginalValue() == null) { this.hashAlgorithms = - ModifiableVariableFactory.safelySetValue(this.hashAlgorithms, hashAlgorithms); + ModifiableVariableFactory.safelySetValue( + this.hashAlgorithms, Converter.listOfNamesToString(hashAlgorithms)); } if (adjustLengthField) { if (config.getAlwaysPrepareSftpLengthFields() @@ -116,25 +116,11 @@ public void setSoftlyHashAlgorithms( } public void setHashAlgorithms(String[] hashAlgorithms, boolean adjustLengthField) { - String nameList = String.join("" + CharConstants.ALGORITHM_SEPARATOR, hashAlgorithms); - setHashAlgorithms(nameList, adjustLengthField); + setHashAlgorithms(Converter.listOfNamesToString(hashAlgorithms), adjustLengthField); } public void setHashAlgorithms(List hashAlgorithms, boolean adjustLengthField) { - String nameList = - hashAlgorithms.stream() - .map(HashAlgorithm::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setHashAlgorithms(nameList, adjustLengthField); - } - - public void setSoftlyHashAlgorithms( - List hashAlgorithms, boolean adjustLengthField, Config config) { - String nameList = - hashAlgorithms.stream() - .map(HashAlgorithm::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setSoftlyHashAlgorithms(nameList, adjustLengthField, config); + setHashAlgorithms(Converter.listOfNamesToString(hashAlgorithms), adjustLengthField); } public ModifiableLong getStartOffset() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java index 40c939fa1..777d73bf9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java @@ -12,13 +12,12 @@ import de.rub.nds.modifiablevariable.longint.ModifiableLong; import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.config.Config; -import de.rub.nds.sshattacker.core.constants.CharConstants; import de.rub.nds.sshattacker.core.constants.HashAlgorithm; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCheckFileNameMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.util.Converter; import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.stream.Collectors; public class SftpRequestCheckFileNameMessage extends SftpRequestExtendedWithPathMessage { @@ -100,10 +99,11 @@ public void setHashAlgorithms(String hashAlgorithms, boolean adjustLengthField) } public void setSoftlyHashAlgorithms( - String hashAlgorithms, boolean adjustLengthField, Config config) { + List hashAlgorithms, boolean adjustLengthField, Config config) { if (this.hashAlgorithms == null || this.hashAlgorithms.getOriginalValue() == null) { this.hashAlgorithms = - ModifiableVariableFactory.safelySetValue(this.hashAlgorithms, hashAlgorithms); + ModifiableVariableFactory.safelySetValue( + this.hashAlgorithms, Converter.listOfNamesToString(hashAlgorithms)); } if (adjustLengthField) { if (config.getAlwaysPrepareSftpLengthFields() @@ -116,25 +116,11 @@ public void setSoftlyHashAlgorithms( } public void setHashAlgorithms(String[] hashAlgorithms, boolean adjustLengthField) { - String nameList = String.join("" + CharConstants.ALGORITHM_SEPARATOR, hashAlgorithms); - setHashAlgorithms(nameList, adjustLengthField); + setHashAlgorithms(Converter.listOfNamesToString(hashAlgorithms), adjustLengthField); } public void setHashAlgorithms(List hashAlgorithms, boolean adjustLengthField) { - String nameList = - hashAlgorithms.stream() - .map(HashAlgorithm::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setHashAlgorithms(nameList, adjustLengthField); - } - - public void setSoftlyHashAlgorithms( - List hashAlgorithms, boolean adjustLengthField, Config config) { - String nameList = - hashAlgorithms.stream() - .map(HashAlgorithm::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setSoftlyHashAlgorithms(nameList, adjustLengthField, config); + setHashAlgorithms(Converter.listOfNamesToString(hashAlgorithms), adjustLengthField); } public ModifiableLong getStartOffset() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java index 3a37e062e..b1f7f7485 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java @@ -8,7 +8,6 @@ package de.rub.nds.sshattacker.core.data.sftp.parser; import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; -import de.rub.nds.sshattacker.core.protocol.transport.parser.extension.*; public class SftpInitMessageParser extends SftpHandshakeMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java index af28c495a..ac0c11f51 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java @@ -14,15 +14,11 @@ public class SftpRequestUnknownMessagePreparator extends SftpRequestExtendedMessagePreparator { public SftpRequestUnknownMessagePreparator(Chooser chooser, SftpRequestUnknownMessage message) { - super(chooser, message, ""); + super(chooser, message, "hello-from@ssh-attacker.de"); } @Override public void prepareRequestExtendedSpecificContents() { - getObject() - .setSoftlyExtendedRequestName( - "hello-from@ssh-attacker.de", true, chooser.getConfig()); - getObject().setSoftlyRequestSpecificData(new byte[100]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java index 9fe29f935..3474d6ff6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java @@ -17,11 +17,6 @@ public abstract class SftpAbstractExtensionPreparator { public SftpExtensionUnknownPreparator(Chooser chooser, SftpExtensionUnknown extension) { - super(chooser, extension); + super(chooser, extension, "hello-from@ssh-attacker.de"); } @Override public void prepareExtensionSpecificContents() { - getObject().setSoftlyName("hello-from@ssh-attacker.de", true, chooser.getConfig()); - getObject().setSoftlyValue(new byte[100], true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessage.java index a2296d99f..2ea7d0350 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessage.java @@ -42,6 +42,12 @@ public void setData(String data) { this.data = ModifiableVariableFactory.safelySetValue(this.data, data); } + public void setSoftlyData(String data) { + if (this.data == null || this.data.getOriginalValue() == null) { + this.data = ModifiableVariableFactory.safelySetValue(this.data, data); + } + } + @Override public String toCompactString() { return getClass().getSimpleName(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java index 8a437afcf..31724d47d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java @@ -17,8 +17,6 @@ public StringDataMessagePreparator(Chooser chooser, StringDataMessage message) { } public void prepareProtocolMessageContents() { - if (getObject().getData() == null) { - getObject().setData("ls /"); - } + getObject().setSoftlyData("ls /"); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessage.java index 5e7a27842..df819edc9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessage.java @@ -42,6 +42,12 @@ public void setPayload(byte[] payload) { this.payload = ModifiableVariableFactory.safelySetValue(this.payload, payload); } + public void setSoftlyPayload(byte[] payload) { + if (this.payload == null || this.payload.getOriginalValue() == null) { + this.payload = ModifiableVariableFactory.safelySetValue(this.payload, payload); + } + } + @Override public String toCompactString() { return getClass().getSimpleName(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessagePreparator.java index fbe0bbc28..e623dacb2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessagePreparator.java @@ -17,6 +17,6 @@ public UnknownDataMessagePreparator(Chooser chooser, UnknownDataMessage message) } public void prepareProtocolMessageContents() { - getObject().setPayload(new byte[0]); + getObject().setSoftlyPayload(new byte[0]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java index 8986e285e..6f9c8ac0e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthFailureMessage.java @@ -13,14 +13,12 @@ import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.AuthenticationMethod; -import de.rub.nds.sshattacker.core.constants.CharConstants; import de.rub.nds.sshattacker.core.protocol.authentication.handler.UserAuthFailureMessageHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessage; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.stream.Collectors; public class UserAuthFailureMessage extends SshMessage { @@ -136,18 +134,14 @@ public void setSoftlyPossibleAuthenticationMethods( public void setPossibleAuthenticationMethods( String[] possibleAuthenticationMethods, boolean adjustLengthField) { - String nameList = - String.join("" + CharConstants.ALGORITHM_SEPARATOR, possibleAuthenticationMethods); - setPossibleAuthenticationMethods(nameList, adjustLengthField); + setPossibleAuthenticationMethods( + Converter.listOfNamesToString(possibleAuthenticationMethods), adjustLengthField); } public void setPossibleAuthenticationMethods( List possibleAuthenticationMethods, boolean adjustLengthField) { - String nameList = - possibleAuthenticationMethods.stream() - .map(AuthenticationMethod::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setPossibleAuthenticationMethods(nameList, adjustLengthField); + setPossibleAuthenticationMethods( + Converter.listOfNamesToString(possibleAuthenticationMethods), adjustLengthField); } public ModifiableByte getPartialSuccess() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthRequestMessage.java index 24bc9fbe4..47897188f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/UserAuthRequestMessage.java @@ -96,7 +96,9 @@ public void setUserName(String userName, boolean adjustLengthField) { } public void setSoftlyUserName(String userName, boolean adjustLengthField, Config config) { - if (this.userName == null || this.userName.getOriginalValue() == null) { + if (config.getAlwaysPrepareAuthentication() + || this.userName == null + || this.userName.getOriginalValue() == null) { this.userName = ModifiableVariableFactory.safelySetValue(this.userName, userName); } if (adjustLengthField) { @@ -154,7 +156,9 @@ public void setServiceName(String serviceName, boolean adjustLengthField) { } public void setSoftlyServiceName(String serviceName, boolean adjustLengthField, Config config) { - if (this.serviceName == null || this.serviceName.getOriginalValue() == null) { + if (config.getAlwaysPrepareServiceNames() + || this.serviceName == null + || this.serviceName.getOriginalValue() == null) { this.serviceName = ModifiableVariableFactory.safelySetValue(this.serviceName, serviceName); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java index 2c97c81b1..62c98b8bd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java @@ -18,7 +18,6 @@ import de.rub.nds.sshattacker.core.util.Converter; import jakarta.xml.bind.annotation.*; import java.nio.charset.StandardCharsets; -import java.util.*; @XmlAccessorType(XmlAccessType.FIELD) public class AuthenticationPromptEntry extends ModifiableVariableHolder { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java index 70fcedfb2..207e4ebaf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java @@ -16,7 +16,6 @@ import de.rub.nds.sshattacker.core.state.SshContext; import jakarta.xml.bind.annotation.*; import java.nio.charset.StandardCharsets; -import java.util.*; @XmlAccessorType(XmlAccessType.FIELD) public class AuthenticationResponseEntry extends ModifiableVariableHolder { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/KeyExchangeInitMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/KeyExchangeInitMessageHandler.java index 431ea8307..86d3e5350 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/KeyExchangeInitMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/KeyExchangeInitMessageHandler.java @@ -16,7 +16,6 @@ import de.rub.nds.sshattacker.core.protocol.util.AlgorithmPicker; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; -import java.util.Arrays; import java.util.List; public class KeyExchangeInitMessageHandler extends SshMessageHandler { @@ -66,15 +65,11 @@ public void adjustContext() { message.getCompressionMethodsServerToClient().getValue(), CompressionMethod.class)); context.setServerSupportedLanguagesClientToServer( - Arrays.asList( - message.getLanguagesClientToServer() - .getValue() - .split("" + CharConstants.ALGORITHM_SEPARATOR))); + Converter.nameListStringToStringList( + message.getLanguagesClientToServer().getValue())); context.setServerSupportedLanguagesServerToClient( - Arrays.asList( - message.getLanguagesServerToClient() - .getValue() - .split("" + CharConstants.ALGORITHM_SEPARATOR))); + Converter.nameListStringToStringList( + message.getLanguagesServerToClient().getValue())); context.setServerReserved(message.getReserved().getValue()); context.getExchangeHashInputHolder().setServerKeyExchangeInit(message); @@ -124,15 +119,11 @@ && containsKeyExchangeAlgorithm( message.getCompressionMethodsServerToClient().getValue(), CompressionMethod.class)); context.setClientSupportedLanguagesClientToServer( - Arrays.asList( - message.getLanguagesClientToServer() - .getValue() - .split("" + CharConstants.ALGORITHM_SEPARATOR))); + Converter.nameListStringToStringList( + message.getLanguagesClientToServer().getValue())); context.setClientSupportedLanguagesServerToClient( - Arrays.asList( - message.getLanguagesServerToClient() - .getValue() - .split("" + CharConstants.ALGORITHM_SEPARATOR))); + Converter.nameListStringToStringList( + message.getLanguagesServerToClient().getValue())); context.setClientReserved(message.getReserved().getValue()); context.getExchangeHashInputHolder().setClientKeyExchangeInit(message); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/extension/DelayCompressionExtensionHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/extension/DelayCompressionExtensionHandler.java index 9e5b9cec9..a9d175b4e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/extension/DelayCompressionExtensionHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/extension/DelayCompressionExtensionHandler.java @@ -8,6 +8,7 @@ package de.rub.nds.sshattacker.core.protocol.transport.handler.extension; import de.rub.nds.sshattacker.core.constants.CompressionMethod; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.DelayCompressionExtension; import de.rub.nds.sshattacker.core.protocol.transport.parser.extension.DelayCompressionExtensionParser; import de.rub.nds.sshattacker.core.protocol.transport.preparator.extension.DelayCompressionExtensionPreparator; @@ -21,7 +22,7 @@ import org.apache.logging.log4j.Logger; public class DelayCompressionExtensionHandler - extends AbstractExtensionHandler { + extends AbstractExtensionHandler implements MessageSentHandler { private static final Logger LOGGER = LogManager.getLogger(); @@ -62,6 +63,11 @@ public void adjustContext() { context.setDelayCompressionExtensionReceived(true); } + @Override + public void adjustContextAfterMessageSent() { + context.setDelayCompressionExtensionSent(true); + } + @Override public DelayCompressionExtensionParser getParser(byte[] array) { return new DelayCompressionExtensionParser(array); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/extension/PublicKeyAlgorithmsRoumenPetrovExtensionHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/extension/PublicKeyAlgorithmsRoumenPetrovExtensionHandler.java index 69bbd624e..3fee8006a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/extension/PublicKeyAlgorithmsRoumenPetrovExtensionHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/extension/PublicKeyAlgorithmsRoumenPetrovExtensionHandler.java @@ -21,17 +21,15 @@ public class PublicKeyAlgorithmsRoumenPetrovExtensionHandler extends AbstractExtensionHandler { private static final Logger LOGGER = LogManager.getLogger(); - private SshContext context; public PublicKeyAlgorithmsRoumenPetrovExtensionHandler( SshContext context, PublicKeyAlgorithmsRoumenPetrovExtension extension) { super(context, extension); - this.context = context; } @Override public void adjustContext() { - String acceptedAlgorithms = this.extension.getAcceptedPublicKeyAlgorithms().getValue(); + String acceptedAlgorithms = extension.getPublicKeyAlgorithms().getValue(); if (acceptedAlgorithms != null) { LOGGER.debug( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/AsciiMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/AsciiMessage.java index 18f294c13..1c3dd8567 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/AsciiMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/AsciiMessage.java @@ -52,6 +52,12 @@ public void setText(String text) { this.text = ModifiableVariableFactory.safelySetValue(this.text, text); } + public void setSoftlyText(String text) { + if (this.text == null || this.text.getOriginalValue() == null) { + this.text = ModifiableVariableFactory.safelySetValue(this.text, text); + } + } + public ModifiableString getEndOfMessageSequence() { return endOfMessageSequence; } @@ -66,6 +72,15 @@ public void setEndOfMessageSequence(String endOfMessageSequence) { this.endOfMessageSequence, endOfMessageSequence); } + public void setSoftlyEndOfMessageSequence(String endOfMessageSequence) { + if (this.endOfMessageSequence == null + || this.endOfMessageSequence.getOriginalValue() == null) { + this.endOfMessageSequence = + ModifiableVariableFactory.safelySetValue( + this.endOfMessageSequence, endOfMessageSequence); + } + } + @Override public AsciiMessageHandler getHandler(SshContext context) { return new AsciiMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DebugMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DebugMessage.java index ea0b246ac..d2133f72f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DebugMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DebugMessage.java @@ -69,6 +69,10 @@ public void setAlwaysDisplay(boolean alwaysDisplay) { setAlwaysDisplay(Converter.booleanToByte(alwaysDisplay)); } + public void setSoftlyAlwaysDisplay(boolean alwaysDisplay) { + setSoftlyAlwaysDisplay(Converter.booleanToByte(alwaysDisplay)); + } + public ModifiableInteger getMessageLength() { return messageLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DisconnectMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DisconnectMessage.java index b0b40ee86..cc84c8222 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DisconnectMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/DisconnectMessage.java @@ -67,6 +67,10 @@ public void setReasonCode(DisconnectReason reason) { setReasonCode(reason.getId()); } + public void setSoftlyReasonCode(DisconnectReason reason) { + setSoftlyReasonCode(reason.getId()); + } + public ModifiableInteger getDescriptionLength() { return descriptionLength; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/KeyExchangeInitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/KeyExchangeInitMessage.java index e1d3b78c9..1332e4d73 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/KeyExchangeInitMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/KeyExchangeInitMessage.java @@ -20,7 +20,6 @@ import de.rub.nds.sshattacker.core.util.Converter; import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.stream.Collectors; public class KeyExchangeInitMessage extends SshMessage { @@ -159,6 +158,14 @@ public void setCookie(byte[] cookie) { this.cookie = ModifiableVariableFactory.safelySetValue(this.cookie, cookie); } + public void setSoftlyCookie(byte[] cookie, Config config) { + if (config.getAlwaysPrepareKexInit() + || this.cookie == null + || this.cookie.getOriginalValue() == null) { + this.cookie = ModifiableVariableFactory.safelySetValue(this.cookie, cookie); + } + } + public ModifiableInteger getKeyExchangeAlgorithmsLength() { return keyExchangeAlgorithmsLength; } @@ -219,12 +226,16 @@ public void setKeyExchangeAlgorithms(String keyExchangeAlgorithms, boolean adjus } public void setSoftlyKeyExchangeAlgorithms( - String keyExchangeAlgorithms, boolean adjustLengthField, Config config) { - if (this.keyExchangeAlgorithms == null + List keyExchangeAlgorithms, + boolean adjustLengthField, + Config config) { + if (config.getAlwaysPrepareKexInit() + || this.keyExchangeAlgorithms == null || this.keyExchangeAlgorithms.getOriginalValue() == null) { this.keyExchangeAlgorithms = ModifiableVariableFactory.safelySetValue( - this.keyExchangeAlgorithms, keyExchangeAlgorithms); + this.keyExchangeAlgorithms, + Converter.listOfNamesToString(keyExchangeAlgorithms)); } if (adjustLengthField) { if (config.getAlwaysPrepareLengthFields() @@ -241,18 +252,14 @@ public void setSoftlyKeyExchangeAlgorithms( public void setKeyExchangeAlgorithms( String[] keyExchangeAlgorithms, boolean adjustLengthField) { - String nameList = - String.join("" + CharConstants.ALGORITHM_SEPARATOR, keyExchangeAlgorithms); - setKeyExchangeAlgorithms(nameList, adjustLengthField); + setKeyExchangeAlgorithms( + Converter.listOfNamesToString(keyExchangeAlgorithms), adjustLengthField); } public void setKeyExchangeAlgorithms( List keyExchangeAlgorithms, boolean adjustLengthField) { - String nameList = - keyExchangeAlgorithms.stream() - .map(KeyExchangeAlgorithm::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setKeyExchangeAlgorithms(nameList, adjustLengthField); + setKeyExchangeAlgorithms( + Converter.listOfNamesToString(keyExchangeAlgorithms), adjustLengthField); } public ModifiableInteger getServerHostKeyAlgorithmsLength() { @@ -316,12 +323,16 @@ public void setServerHostKeyAlgorithms( } public void setSoftlyServerHostKeyAlgorithms( - String serverHostKeyAlgorithms, boolean adjustLengthField, Config config) { - if (this.serverHostKeyAlgorithms == null + List serverHostKeyAlgorithms, + boolean adjustLengthField, + Config config) { + if (config.getAlwaysPrepareKexInit() + || this.serverHostKeyAlgorithms == null || this.serverHostKeyAlgorithms.getOriginalValue() == null) { this.serverHostKeyAlgorithms = ModifiableVariableFactory.safelySetValue( - this.serverHostKeyAlgorithms, serverHostKeyAlgorithms); + this.serverHostKeyAlgorithms, + Converter.listOfNamesToString(serverHostKeyAlgorithms)); } if (adjustLengthField) { if (config.getAlwaysPrepareLengthFields() @@ -338,18 +349,14 @@ public void setSoftlyServerHostKeyAlgorithms( public void setServerHostKeyAlgorithms( String[] serverHostKeyAlgorithms, boolean adjustLengthField) { - String nameList = - String.join("" + CharConstants.ALGORITHM_SEPARATOR, serverHostKeyAlgorithms); - setServerHostKeyAlgorithms(nameList, adjustLengthField); + setServerHostKeyAlgorithms( + Converter.listOfNamesToString(serverHostKeyAlgorithms), adjustLengthField); } public void setServerHostKeyAlgorithms( List serverHostKeyAlgorithms, boolean adjustLengthField) { - String nameList = - serverHostKeyAlgorithms.stream() - .map(PublicKeyAlgorithm::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setServerHostKeyAlgorithms(nameList, adjustLengthField); + setServerHostKeyAlgorithms( + Converter.listOfNamesToString(serverHostKeyAlgorithms), adjustLengthField); } public ModifiableInteger getEncryptionAlgorithmsClientToServerLength() { @@ -419,13 +426,16 @@ public void setEncryptionAlgorithmsClientToServer( } public void setSoftlyEncryptionAlgorithmsClientToServer( - String encryptionAlgorithmsClientToServer, boolean adjustLengthField, Config config) { - if (this.encryptionAlgorithmsClientToServer == null + List encryptionAlgorithmsClientToServer, + boolean adjustLengthField, + Config config) { + if (config.getAlwaysPrepareKexInit() + || this.encryptionAlgorithmsClientToServer == null || this.encryptionAlgorithmsClientToServer.getOriginalValue() == null) { this.encryptionAlgorithmsClientToServer = ModifiableVariableFactory.safelySetValue( this.encryptionAlgorithmsClientToServer, - encryptionAlgorithmsClientToServer); + Converter.listOfNamesToString(encryptionAlgorithmsClientToServer)); } if (adjustLengthField) { if (config.getAlwaysPrepareLengthFields() @@ -442,20 +452,17 @@ public void setSoftlyEncryptionAlgorithmsClientToServer( public void setEncryptionAlgorithmsClientToServer( String[] encryptionAlgorithmsClientToServer, boolean adjustLengthField) { - String nameList = - String.join( - "" + CharConstants.ALGORITHM_SEPARATOR, encryptionAlgorithmsClientToServer); - setEncryptionAlgorithmsClientToServer(nameList, adjustLengthField); + setEncryptionAlgorithmsClientToServer( + Converter.listOfNamesToString(encryptionAlgorithmsClientToServer), + adjustLengthField); } public void setEncryptionAlgorithmsClientToServer( List encryptionAlgorithmsClientToServer, boolean adjustLengthField) { - String nameList = - encryptionAlgorithmsClientToServer.stream() - .map(EncryptionAlgorithm::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setEncryptionAlgorithmsClientToServer(nameList, adjustLengthField); + setEncryptionAlgorithmsClientToServer( + Converter.listOfNamesToString(encryptionAlgorithmsClientToServer), + adjustLengthField); } public ModifiableInteger getEncryptionAlgorithmsServerToClientLength() { @@ -525,13 +532,16 @@ public void setEncryptionAlgorithmsServerToClient( } public void setSoftlyEncryptionAlgorithmsServerToClient( - String encryptionAlgorithmsServerToClient, boolean adjustLengthField, Config config) { - if (this.encryptionAlgorithmsServerToClient == null + List encryptionAlgorithmsServerToClient, + boolean adjustLengthField, + Config config) { + if (config.getAlwaysPrepareKexInit() + || this.encryptionAlgorithmsServerToClient == null || this.encryptionAlgorithmsServerToClient.getOriginalValue() == null) { this.encryptionAlgorithmsServerToClient = ModifiableVariableFactory.safelySetValue( this.encryptionAlgorithmsServerToClient, - encryptionAlgorithmsServerToClient); + Converter.listOfNamesToString(encryptionAlgorithmsServerToClient)); } if (adjustLengthField) { if (config.getAlwaysPrepareLengthFields() @@ -548,20 +558,17 @@ public void setSoftlyEncryptionAlgorithmsServerToClient( public void setEncryptionAlgorithmsServerToClient( String[] encryptionAlgorithmsServerToClient, boolean adjustLengthField) { - String nameList = - String.join( - "" + CharConstants.ALGORITHM_SEPARATOR, encryptionAlgorithmsServerToClient); - setEncryptionAlgorithmsServerToClient(nameList, adjustLengthField); + setEncryptionAlgorithmsServerToClient( + Converter.listOfNamesToString(encryptionAlgorithmsServerToClient), + adjustLengthField); } public void setEncryptionAlgorithmsServerToClient( List encryptionAlgorithmsServerToClient, boolean adjustLengthField) { - String nameList = - encryptionAlgorithmsServerToClient.stream() - .map(EncryptionAlgorithm::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setEncryptionAlgorithmsServerToClient(nameList, adjustLengthField); + setEncryptionAlgorithmsServerToClient( + Converter.listOfNamesToString(encryptionAlgorithmsServerToClient), + adjustLengthField); } public ModifiableInteger getMacAlgorithmsClientToServerLength() { @@ -626,12 +633,16 @@ public void setMacAlgorithmsClientToServer( } public void setSoftlyMacAlgorithmsClientToServer( - String macAlgorithmsClientToServer, boolean adjustLengthField, Config config) { - if (this.macAlgorithmsClientToServer == null + List macAlgorithmsClientToServer, + boolean adjustLengthField, + Config config) { + if (config.getAlwaysPrepareKexInit() + || this.macAlgorithmsClientToServer == null || this.macAlgorithmsClientToServer.getOriginalValue() == null) { this.macAlgorithmsClientToServer = ModifiableVariableFactory.safelySetValue( - this.macAlgorithmsClientToServer, macAlgorithmsClientToServer); + this.macAlgorithmsClientToServer, + Converter.listOfNamesToString(macAlgorithmsClientToServer)); } if (adjustLengthField) { if (config.getAlwaysPrepareLengthFields() @@ -648,18 +659,14 @@ public void setSoftlyMacAlgorithmsClientToServer( public void setMacAlgorithmsClientToServer( String[] macAlgorithmsClientToServer, boolean adjustLengthField) { - String nameList = - String.join("" + CharConstants.ALGORITHM_SEPARATOR, macAlgorithmsClientToServer); - setMacAlgorithmsClientToServer(nameList, adjustLengthField); + setMacAlgorithmsClientToServer( + Converter.listOfNamesToString(macAlgorithmsClientToServer), adjustLengthField); } public void setMacAlgorithmsClientToServer( List macAlgorithmsClientToServer, boolean adjustLengthField) { - String nameList = - macAlgorithmsClientToServer.stream() - .map(MacAlgorithm::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setMacAlgorithmsClientToServer(nameList, adjustLengthField); + setMacAlgorithmsClientToServer( + Converter.listOfNamesToString(macAlgorithmsClientToServer), adjustLengthField); } public ModifiableInteger getMacAlgorithmsServerToClientLength() { @@ -724,12 +731,16 @@ public void setMacAlgorithmsServerToClient( } public void setSoftlyMacAlgorithmsServerToClient( - String macAlgorithmsServerToClient, boolean adjustLengthField, Config config) { - if (this.macAlgorithmsServerToClient == null + List macAlgorithmsServerToClient, + boolean adjustLengthField, + Config config) { + if (config.getAlwaysPrepareKexInit() + || this.macAlgorithmsServerToClient == null || this.macAlgorithmsServerToClient.getOriginalValue() == null) { this.macAlgorithmsServerToClient = ModifiableVariableFactory.safelySetValue( - this.macAlgorithmsServerToClient, macAlgorithmsServerToClient); + this.macAlgorithmsServerToClient, + Converter.listOfNamesToString(macAlgorithmsServerToClient)); } if (adjustLengthField) { if (config.getAlwaysPrepareLengthFields() @@ -746,18 +757,14 @@ public void setSoftlyMacAlgorithmsServerToClient( public void setMacAlgorithmsServerToClient( String[] macAlgorithmsServerToClient, boolean adjustLengthField) { - String nameList = - String.join("" + CharConstants.ALGORITHM_SEPARATOR, macAlgorithmsServerToClient); - setMacAlgorithmsServerToClient(nameList, adjustLengthField); + setMacAlgorithmsServerToClient( + Converter.listOfNamesToString(macAlgorithmsServerToClient), adjustLengthField); } public void setMacAlgorithmsServerToClient( List macAlgorithmsServerToClient, boolean adjustLengthField) { - String nameList = - macAlgorithmsServerToClient.stream() - .map(MacAlgorithm::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setMacAlgorithmsServerToClient(nameList, adjustLengthField); + setMacAlgorithmsServerToClient( + Converter.listOfNamesToString(macAlgorithmsServerToClient), adjustLengthField); } public ModifiableInteger getCompressionMethodsClientToServerLength() { @@ -826,13 +833,16 @@ public void setCompressionMethodsClientToServer( } public void setSoftlyCompressionMethodsClientToServer( - String compressionMethodsClientToServer, boolean adjustLengthField, Config config) { - if (this.compressionMethodsClientToServer == null + List compressionMethodsClientToServer, + boolean adjustLengthField, + Config config) { + if (config.getAlwaysPrepareKexInit() + || this.compressionMethodsClientToServer == null || this.compressionMethodsClientToServer.getOriginalValue() == null) { this.compressionMethodsClientToServer = ModifiableVariableFactory.safelySetValue( this.compressionMethodsClientToServer, - compressionMethodsClientToServer); + Converter.listOfNamesToString(compressionMethodsClientToServer)); } if (adjustLengthField) { if (config.getAlwaysPrepareLengthFields() @@ -849,19 +859,14 @@ public void setSoftlyCompressionMethodsClientToServer( public void setCompressionMethodsClientToServer( String[] compressionMethodsClientToServer, boolean adjustLengthField) { - String nameList = - String.join( - "" + CharConstants.ALGORITHM_SEPARATOR, compressionMethodsClientToServer); - setCompressionMethodsClientToServer(nameList, adjustLengthField); + setCompressionMethodsClientToServer( + Converter.listOfNamesToString(compressionMethodsClientToServer), adjustLengthField); } public void setCompressionMethodsClientToServer( List compressionMethodsClientToServer, boolean adjustLengthField) { - String nameList = - compressionMethodsClientToServer.stream() - .map(CompressionMethod::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setCompressionMethodsClientToServer(nameList, adjustLengthField); + setCompressionMethodsClientToServer( + Converter.listOfNamesToString(compressionMethodsClientToServer), adjustLengthField); } public ModifiableInteger getCompressionMethodsServerToClientLength() { @@ -930,13 +935,16 @@ public void setCompressionMethodsServerToClient( } public void setSoftlyCompressionMethodsServerToClient( - String compressionMethodsServerToClient, boolean adjustLengthField, Config config) { - if (this.compressionMethodsServerToClient == null + List compressionMethodsServerToClient, + boolean adjustLengthField, + Config config) { + if (config.getAlwaysPrepareKexInit() + || this.compressionMethodsServerToClient == null || this.compressionMethodsServerToClient.getOriginalValue() == null) { this.compressionMethodsServerToClient = ModifiableVariableFactory.safelySetValue( this.compressionMethodsServerToClient, - compressionMethodsServerToClient); + Converter.listOfNamesToString(compressionMethodsServerToClient)); } if (adjustLengthField) { if (config.getAlwaysPrepareLengthFields() @@ -953,19 +961,14 @@ public void setSoftlyCompressionMethodsServerToClient( public void setCompressionMethodsServerToClient( String[] compressionMethodsServerToClient, boolean adjustLengthField) { - String nameList = - String.join( - "" + CharConstants.ALGORITHM_SEPARATOR, compressionMethodsServerToClient); - setCompressionMethodsServerToClient(nameList, adjustLengthField); + setCompressionMethodsServerToClient( + Converter.listOfNamesToString(compressionMethodsServerToClient), adjustLengthField); } public void setCompressionMethodsServerToClient( List compressionMethodsServerToClient, boolean adjustLengthField) { - String nameList = - compressionMethodsServerToClient.stream() - .map(CompressionMethod::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setCompressionMethodsServerToClient(nameList, adjustLengthField); + setCompressionMethodsServerToClient( + Converter.listOfNamesToString(compressionMethodsServerToClient), adjustLengthField); } public ModifiableInteger getLanguagesClientToServerLength() { @@ -1025,12 +1028,14 @@ public void setLanguagesClientToServer( } public void setSoftlyLanguagesClientToServer( - String languagesClientToServer, boolean adjustLengthField, Config config) { - if (this.languagesClientToServer == null + List languagesClientToServer, boolean adjustLengthField, Config config) { + if (config.getAlwaysPrepareKexInit() + || this.languagesClientToServer == null || this.languagesClientToServer.getOriginalValue() == null) { this.languagesClientToServer = ModifiableVariableFactory.safelySetValue( - this.languagesClientToServer, languagesClientToServer); + this.languagesClientToServer, + Converter.listOfNameStringsToString(languagesClientToServer)); } if (adjustLengthField) { if (config.getAlwaysPrepareLengthFields() @@ -1047,9 +1052,8 @@ public void setSoftlyLanguagesClientToServer( public void setLanguagesClientToServer( String[] languagesClientToServer, boolean adjustLengthField) { - String nameList = - String.join("" + CharConstants.ALGORITHM_SEPARATOR, languagesClientToServer); - setLanguagesClientToServer(nameList, adjustLengthField); + setLanguagesClientToServer( + Converter.listOfNamesToString(languagesClientToServer), adjustLengthField); } public ModifiableInteger getLanguagesServerToClientLength() { @@ -1109,12 +1113,14 @@ public void setLanguagesServerToClient( } public void setSoftlyLanguagesServerToClient( - String languagesServerToClient, boolean adjustLengthField, Config config) { - if (this.languagesServerToClient == null + List languagesServerToClient, boolean adjustLengthField, Config config) { + if (config.getAlwaysPrepareKexInit() + || this.languagesServerToClient == null || this.languagesServerToClient.getOriginalValue() == null) { this.languagesServerToClient = ModifiableVariableFactory.safelySetValue( - this.languagesServerToClient, languagesServerToClient); + this.languagesServerToClient, + Converter.listOfNameStringsToString(languagesServerToClient)); } if (adjustLengthField) { if (config.getAlwaysPrepareLengthFields() @@ -1131,9 +1137,8 @@ public void setSoftlyLanguagesServerToClient( public void setLanguagesServerToClient( String[] languagesServerToClient, boolean adjustLengthField) { - String nameList = - String.join("" + CharConstants.ALGORITHM_SEPARATOR, languagesServerToClient); - setLanguagesServerToClient(nameList, adjustLengthField); + setLanguagesServerToClient( + Converter.listOfNamesToString(languagesServerToClient), adjustLengthField); } public ModifiableByte getFirstKeyExchangePacketFollows() { @@ -1150,8 +1155,10 @@ public void setFirstKeyExchangePacketFollows(byte firstKeyExchangePacketFollows) this.firstKeyExchangePacketFollows, firstKeyExchangePacketFollows); } - public void setSoftlyFirstKeyExchangePacketFollows(byte firstKeyExchangePacketFollows) { - if (this.firstKeyExchangePacketFollows == null + public void setSoftlyFirstKeyExchangePacketFollows( + byte firstKeyExchangePacketFollows, Config config) { + if (config.getAlwaysPrepareKexInit() + || this.firstKeyExchangePacketFollows == null || this.firstKeyExchangePacketFollows.getOriginalValue() == null) { this.firstKeyExchangePacketFollows = ModifiableVariableFactory.safelySetValue( @@ -1166,6 +1173,12 @@ public void setFirstKeyExchangePacketFollows(boolean firstKeyExchangePacketFollo Converter.booleanToByte(firstKeyExchangePacketFollows)); } + public void setSoftlyFirstKeyExchangePacketFollows( + boolean firstKeyExchangePacketFollows, Config config) { + setSoftlyFirstKeyExchangePacketFollows( + Converter.booleanToByte(firstKeyExchangePacketFollows), config); + } + public ModifiableInteger getReserved() { return reserved; } @@ -1178,8 +1191,10 @@ public void setReserved(int reserved) { this.reserved = ModifiableVariableFactory.safelySetValue(this.reserved, reserved); } - public void setSoftlyReserved(int reserved) { - if (this.reserved == null || this.reserved.getOriginalValue() == null) { + public void setSoftlyReserved(int reserved, Config config) { + if (config.getAlwaysPrepareKexInit() + || this.reserved == null + || this.reserved.getOriginalValue() == null) { this.reserved = ModifiableVariableFactory.safelySetValue(this.reserved, reserved); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceRequestMessage.java index 27a4d5824..8457b52cd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/ServiceRequestMessage.java @@ -84,7 +84,9 @@ public void setServiceName(String serviceName, boolean adjustLengthField) { } public void setSoftlyServiceName(String serviceName, boolean adjustLengthField, Config config) { - if (this.serviceName == null || this.serviceName.getOriginalValue() == null) { + if (config.getAlwaysPrepareServiceNames() + || this.serviceName == null + || this.serviceName.getOriginalValue() == null) { this.serviceName = ModifiableVariableFactory.safelySetValue(this.serviceName, serviceName); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnknownMessage.java index 82a1c0749..72e2937b0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/UnknownMessage.java @@ -44,6 +44,12 @@ public void setPayload(byte[] payload) { this.payload = ModifiableVariableFactory.safelySetValue(this.payload, payload); } + public void setSoftlyPayload(byte[] payload) { + if (this.payload == null || this.payload.getOriginalValue() == null) { + this.payload = ModifiableVariableFactory.safelySetValue(this.payload, payload); + } + } + @Override public String toCompactString() { if (messageId != null && messageId.getValue() != null) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/VersionExchangeMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/VersionExchangeMessage.java index 1f1152c5d..e05cb29a6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/VersionExchangeMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/VersionExchangeMessage.java @@ -49,6 +49,12 @@ public void setVersion(String version) { this.version = ModifiableVariableFactory.safelySetValue(this.version, version); } + public void setSoftlyVersion(String version) { + if (this.version == null || this.version.getOriginalValue() == null) { + this.version = ModifiableVariableFactory.safelySetValue(this.version, version); + } + } + public ModifiableString getComment() { return comment; } @@ -61,6 +67,12 @@ public void setComment(String comment) { this.comment = ModifiableVariableFactory.safelySetValue(this.comment, comment); } + public void setSoftlyComment(String comment) { + if (this.comment == null || this.comment.getOriginalValue() == null) { + this.comment = ModifiableVariableFactory.safelySetValue(this.comment, comment); + } + } + public String getIdentification() { if (comment.getValue().isEmpty()) return version.getValue(); return version.getValue() + CharConstants.VERSION_COMMENT_SEPARATOR + comment.getValue(); @@ -80,6 +92,15 @@ public void setEndOfMessageSequence(String endOfMessageSequence) { this.endOfMessageSequence, endOfMessageSequence); } + public void setSoftlyEndOfMessageSequence(String endOfMessageSequence) { + if (this.endOfMessageSequence == null + || this.endOfMessageSequence.getOriginalValue() == null) { + this.endOfMessageSequence = + ModifiableVariableFactory.safelySetValue( + this.endOfMessageSequence, endOfMessageSequence); + } + } + @Override public VersionExchangeMessageHandler getHandler(SshContext context) { return new VersionExchangeMessageHandler(context, this); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/DelayCompressionExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/DelayCompressionExtension.java index 550852a0c..8ca85b26e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/DelayCompressionExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/DelayCompressionExtension.java @@ -11,14 +11,13 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.config.Config; -import de.rub.nds.sshattacker.core.constants.CharConstants; import de.rub.nds.sshattacker.core.constants.CompressionMethod; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.protocol.transport.handler.extension.DelayCompressionExtensionHandler; import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.util.Converter; import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.stream.Collectors; public class DelayCompressionExtension extends AbstractExtension { @@ -79,6 +78,16 @@ public void setCompressionMethodsLength(int compressionMethodsLength) { this.compressionMethodsLength, compressionMethodsLength); } + public void setSoftlyCompressionMethodsLength(int compressionMethodsLength, Config config) { + if (config.getAlwaysPrepareLengthFields() + || this.compressionMethodsLength == null + || this.compressionMethodsLength.getOriginalValue() == null) { + this.compressionMethodsLength = + ModifiableVariableFactory.safelySetValue( + this.compressionMethodsLength, compressionMethodsLength); + } + } + public ModifiableInteger getCompressionMethodsClientToServerLength() { return compressionMethodsClientToServerLength; } @@ -145,13 +154,15 @@ public void setCompressionMethodsClientToServer( } public void setSoftlyCompressionMethodsClientToServer( - String compressionMethodsClientToServer, boolean adjustLengthField, Config config) { + List compressionMethodsClientToServer, + boolean adjustLengthField, + Config config) { if (this.compressionMethodsClientToServer == null || this.compressionMethodsClientToServer.getOriginalValue() == null) { this.compressionMethodsClientToServer = ModifiableVariableFactory.safelySetValue( this.compressionMethodsClientToServer, - compressionMethodsClientToServer); + Converter.listOfNamesToString(compressionMethodsClientToServer)); } if (adjustLengthField) { if (config.getAlwaysPrepareLengthFields() @@ -168,19 +179,14 @@ public void setSoftlyCompressionMethodsClientToServer( public void setCompressionMethodsClientToServer( String[] compressionMethodsClientToServer, boolean adjustLengthField) { - String nameList = - String.join( - "" + CharConstants.ALGORITHM_SEPARATOR, compressionMethodsClientToServer); - setCompressionMethodsClientToServer(nameList, adjustLengthField); + setCompressionMethodsClientToServer( + Converter.listOfNamesToString(compressionMethodsClientToServer), adjustLengthField); } public void setCompressionMethodsClientToServer( List compressionMethodsClientToServer, boolean adjustLengthField) { - String nameList = - compressionMethodsClientToServer.stream() - .map(CompressionMethod::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setCompressionMethodsClientToServer(nameList, adjustLengthField); + setCompressionMethodsClientToServer( + Converter.listOfNamesToString(compressionMethodsClientToServer), adjustLengthField); } public ModifiableInteger getCompressionMethodsServerToClientLength() { @@ -249,13 +255,15 @@ public void setCompressionMethodsServerToClient( } public void setSoftlyCompressionMethodsServerToClient( - String compressionMethodsServerToClient, boolean adjustLengthField, Config config) { + List compressionMethodsServerToClient, + boolean adjustLengthField, + Config config) { if (this.compressionMethodsServerToClient == null || this.compressionMethodsServerToClient.getOriginalValue() == null) { this.compressionMethodsServerToClient = ModifiableVariableFactory.safelySetValue( this.compressionMethodsServerToClient, - compressionMethodsServerToClient); + Converter.listOfNamesToString(compressionMethodsServerToClient)); } if (adjustLengthField) { if (config.getAlwaysPrepareLengthFields() @@ -272,19 +280,14 @@ public void setSoftlyCompressionMethodsServerToClient( public void setCompressionMethodsServerToClient( String[] compressionMethodsServerToClient, boolean adjustLengthField) { - String nameList = - String.join( - "" + CharConstants.ALGORITHM_SEPARATOR, compressionMethodsServerToClient); - setCompressionMethodsServerToClient(nameList, adjustLengthField); + setCompressionMethodsServerToClient( + Converter.listOfNamesToString(compressionMethodsServerToClient), adjustLengthField); } public void setCompressionMethodsServerToClient( List compressionMethodsServerToClient, boolean adjustLengthField) { - String nameList = - compressionMethodsServerToClient.stream() - .map(CompressionMethod::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setCompressionMethodsServerToClient(nameList, adjustLengthField); + setCompressionMethodsServerToClient( + Converter.listOfNamesToString(compressionMethodsServerToClient), adjustLengthField); } public int computeCompressionMethodsLength() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/PublicKeyAlgorithmsRoumenPetrovExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/PublicKeyAlgorithmsRoumenPetrovExtension.java index ea941466e..be7ad9ef6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/PublicKeyAlgorithmsRoumenPetrovExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/PublicKeyAlgorithmsRoumenPetrovExtension.java @@ -10,12 +10,13 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.PublicKeyAlgorithm; import de.rub.nds.sshattacker.core.protocol.transport.handler.extension.PublicKeyAlgorithmsRoumenPetrovExtensionHandler; import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.util.Converter; import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.stream.Collectors; public class PublicKeyAlgorithmsRoumenPetrovExtension extends AbstractExtension { @@ -62,35 +63,75 @@ public ModifiableString getPublicKeyAlgorithms() { } public void setPublicKeyAlgorithms(ModifiableString publicKeyAlgorithms) { - this.publicKeyAlgorithms = publicKeyAlgorithms; + setPublicKeyAlgorithms(publicKeyAlgorithms, false); } public void setPublicKeyAlgorithms(String publicKeyAlgorithms) { + setPublicKeyAlgorithms(publicKeyAlgorithms, false); + } + + public void setPublicKeyAlgorithms(String[] publicKeyAlgorithms) { + setPublicKeyAlgorithms(publicKeyAlgorithms, false); + } + + public void setPublicKeyAlgorithms(List publicKeyAlgorithms) { + setPublicKeyAlgorithms(publicKeyAlgorithms, false); + } + + public void setPublicKeyAlgorithms( + ModifiableString publicKeyAlgorithms, boolean adjustLengthField) { + if (adjustLengthField) { + setPublicKeyAlgorithmsLength( + publicKeyAlgorithms.getValue().getBytes(StandardCharsets.US_ASCII).length); + setPublicKeyAlgorithmsLength(publicKeyAlgorithmsLength.getValue()); + } + this.publicKeyAlgorithms = publicKeyAlgorithms; + } + + public void setPublicKeyAlgorithms(String publicKeyAlgorithms, boolean adjustLengthField) { this.publicKeyAlgorithms = ModifiableVariableFactory.safelySetValue( this.publicKeyAlgorithms, publicKeyAlgorithms); + if (adjustLengthField) { + setPublicKeyAlgorithmsLength( + this.publicKeyAlgorithms.getValue().getBytes(StandardCharsets.US_ASCII).length); + } } - // Add this method to return the accepted public key algorithms - public ModifiableString getAcceptedPublicKeyAlgorithms() { - return publicKeyAlgorithms; + public void setPublicKeyAlgorithms(String[] publicKeyAlgorithms, boolean adjustLengthField) { + setPublicKeyAlgorithms( + Converter.listOfNamesToString(publicKeyAlgorithms), adjustLengthField); } - // New method to set PublicKeyAlgorithm list and adjust length if needed public void setPublicKeyAlgorithms( List publicKeyAlgorithms, boolean adjustLengthField) { - // Convert the list of PublicKeyAlgorithm to a comma-separated string - String nameList = - publicKeyAlgorithms.stream() - .map(PublicKeyAlgorithm::toString) - .collect(Collectors.joining(",")); + setPublicKeyAlgorithms( + Converter.listOfNamesToString(publicKeyAlgorithms), adjustLengthField); + } - // Set the publicKeyAlgorithms field using the existing method - setPublicKeyAlgorithms(nameList); + public void setSoftlyPublicKeyAlgorithms( + List publicKeyAlgorithms, + boolean adjustLengthField, + Config config) { + + if (this.publicKeyAlgorithms == null + || this.publicKeyAlgorithms.getOriginalValue() == null) { + this.publicKeyAlgorithms = + ModifiableVariableFactory.safelySetValue( + this.publicKeyAlgorithms, + Converter.listOfNamesToString(publicKeyAlgorithms)); + } - // Adjust the length field if required if (adjustLengthField) { - setPublicKeyAlgorithmsLength(nameList.getBytes(StandardCharsets.US_ASCII).length); + if (config.getAlwaysPrepareLengthFields() + || publicKeyAlgorithmsLength == null + || publicKeyAlgorithmsLength.getOriginalValue() == null) { + setPublicKeyAlgorithmsLength( + this.publicKeyAlgorithms + .getValue() + .getBytes(StandardCharsets.US_ASCII) + .length); + } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/ServerSigAlgsExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/ServerSigAlgsExtension.java index e4da02e14..7ee230589 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/ServerSigAlgsExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/extension/ServerSigAlgsExtension.java @@ -11,13 +11,12 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.config.Config; -import de.rub.nds.sshattacker.core.constants.CharConstants; import de.rub.nds.sshattacker.core.constants.PublicKeyAlgorithm; import de.rub.nds.sshattacker.core.protocol.transport.handler.extension.ServerSigAlgsExtensionHandler; import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.util.Converter; import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.stream.Collectors; /** * Class for "server-sig-algs"-extension sent by server structure: extension-name string @@ -72,30 +71,34 @@ public ModifiableString getAcceptedPublicKeyAlgorithms() { return acceptedPublicKeyAlgorithms; } - public void setAcceptedPublicKeyAlgorithms(ModifiableString publicKeyAlgorithms) { - setAcceptedPublicKeyAlgorithms(publicKeyAlgorithms, false); + public void setAcceptedPublicKeyAlgorithms(ModifiableString acceptedPublicKeyAlgorithms) { + setAcceptedPublicKeyAlgorithms(acceptedPublicKeyAlgorithms, false); } - public void setAcceptedPublicKeyAlgorithms(String publicKeyAlgorithms) { - setAcceptedPublicKeyAlgorithms(publicKeyAlgorithms, false); + public void setAcceptedPublicKeyAlgorithms(String acceptedPublicKeyAlgorithms) { + setAcceptedPublicKeyAlgorithms(acceptedPublicKeyAlgorithms, false); } - public void setAcceptedPublicKeyAlgorithms(String[] publicKeyAlgorithms) { - setAcceptedPublicKeyAlgorithms(publicKeyAlgorithms, false); + public void setAcceptedPublicKeyAlgorithms(String[] acceptedPublicKeyAlgorithms) { + setAcceptedPublicKeyAlgorithms(acceptedPublicKeyAlgorithms, false); } - public void setAcceptedPublicKeyAlgorithms(List publicKeyAlgorithms) { - setAcceptedPublicKeyAlgorithms(publicKeyAlgorithms, false); + public void setAcceptedPublicKeyAlgorithms( + List acceptedPublicKeyAlgorithms) { + setAcceptedPublicKeyAlgorithms(acceptedPublicKeyAlgorithms, false); } public void setAcceptedPublicKeyAlgorithms( - ModifiableString publicKeyAlgorithms, boolean adjustLengthField) { + ModifiableString acceptedPublicKeyAlgorithms, boolean adjustLengthField) { if (adjustLengthField) { setAcceptedPublicKeyAlgorithmsLength( - publicKeyAlgorithms.getValue().getBytes(StandardCharsets.US_ASCII).length); + acceptedPublicKeyAlgorithms + .getValue() + .getBytes(StandardCharsets.US_ASCII) + .length); setAcceptedPublicKeyAlgorithmsLength(acceptedPublicKeyAlgorithmsLength.getValue()); } - acceptedPublicKeyAlgorithms = publicKeyAlgorithms; + this.acceptedPublicKeyAlgorithms = acceptedPublicKeyAlgorithms; } public void setAcceptedPublicKeyAlgorithms( @@ -113,13 +116,18 @@ public void setAcceptedPublicKeyAlgorithms( } public void setSoftlyAcceptedPublicKeyAlgorithms( - String acceptedPublicKeyAlgorithms, boolean adjustLengthField, Config config) { + List acceptedPublicKeyAlgorithms, + boolean adjustLengthField, + Config config) { + if (this.acceptedPublicKeyAlgorithms == null || this.acceptedPublicKeyAlgorithms.getOriginalValue() == null) { this.acceptedPublicKeyAlgorithms = ModifiableVariableFactory.safelySetValue( - this.acceptedPublicKeyAlgorithms, acceptedPublicKeyAlgorithms); + this.acceptedPublicKeyAlgorithms, + Converter.listOfNamesToString(acceptedPublicKeyAlgorithms)); } + if (adjustLengthField) { if (config.getAlwaysPrepareLengthFields() || acceptedPublicKeyAlgorithmsLength == null @@ -134,18 +142,15 @@ public void setSoftlyAcceptedPublicKeyAlgorithms( } public void setAcceptedPublicKeyAlgorithms( - String[] publicKeyAlgorithms, boolean adjustLengthField) { - String nameList = String.join("" + CharConstants.ALGORITHM_SEPARATOR, publicKeyAlgorithms); - setAcceptedPublicKeyAlgorithms(nameList, adjustLengthField); + String[] acceptedPublicKeyAlgorithms, boolean adjustLengthField) { + setAcceptedPublicKeyAlgorithms( + Converter.listOfNamesToString(acceptedPublicKeyAlgorithms), adjustLengthField); } public void setAcceptedPublicKeyAlgorithms( - List publicKeyAlgorithms, boolean adjustLengthField) { - String nameList = - publicKeyAlgorithms.stream() - .map(PublicKeyAlgorithm::toString) - .collect(Collectors.joining("" + CharConstants.ALGORITHM_SEPARATOR)); - setAcceptedPublicKeyAlgorithms(nameList, adjustLengthField); + List acceptedPublicKeyAlgorithms, boolean adjustLengthField) { + setAcceptedPublicKeyAlgorithms( + Converter.listOfNamesToString(acceptedPublicKeyAlgorithms), adjustLengthField); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/PublicKeyAlgorithmsRoumenPetrovExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/PublicKeyAlgorithmsRoumenPetrovExtensionParser.java index aa68fa770..39823504b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/PublicKeyAlgorithmsRoumenPetrovExtensionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/extension/PublicKeyAlgorithmsRoumenPetrovExtensionParser.java @@ -38,11 +38,9 @@ protected void parseExtensionValue() { } private void parsePublicKeyAlgorithmsLength() { - extension.setPublicKeyAlgorithmsLength( - parseIntField(DataFormatConstants.STRING_SIZE_LENGTH)); - LOGGER.debug( - "Public key algorithms length: {}", - extension.getPublicKeyAlgorithmsLength().getValue()); + int publicKeyAlgorithmsLength = parseIntField(DataFormatConstants.STRING_SIZE_LENGTH); + extension.setPublicKeyAlgorithmsLength(publicKeyAlgorithmsLength); + LOGGER.debug("Public key algorithms length: {}", publicKeyAlgorithmsLength); } private void parsePublicKeyAlgorithms() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/AsciiMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/AsciiMessagePreparator.java index 90ebdb899..e1a4c7a14 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/AsciiMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/AsciiMessagePreparator.java @@ -18,11 +18,11 @@ public AsciiMessagePreparator(Chooser chooser, AsciiMessage message) { @Override public void prepareProtocolMessageContents() { - getObject().setText(""); // TODO: Add a way to set this via configuration. + getObject().setSoftlyText(""); // TODO: Add a way to set this via configuration. if (chooser.getContext().isClient()) { - getObject().setEndOfMessageSequence(chooser.getClientEndOfMessageSequence()); + getObject().setSoftlyEndOfMessageSequence(chooser.getClientEndOfMessageSequence()); } else { - getObject().setEndOfMessageSequence(chooser.getServerEndOfMessageSequence()); + getObject().setSoftlyEndOfMessageSequence(chooser.getServerEndOfMessageSequence()); } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DebugMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DebugMessagePreparator.java index 3cd85015b..874331f31 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DebugMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DebugMessagePreparator.java @@ -21,8 +21,8 @@ public DebugMessagePreparator(Chooser chooser, DebugMessage message) { @Override public void prepareMessageSpecificContents() { // TODO dummy values for fuzzing - getObject().setAlwaysDisplay(true); - getObject().setMessage("", true); - getObject().setLanguageTag("", true); + getObject().setSoftlyAlwaysDisplay(true); + getObject().setSoftlyMessage("", true, chooser.getConfig()); + getObject().setSoftlyLanguageTag("", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java index 238ad6be0..91d3f4eff 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java @@ -21,18 +21,19 @@ public DisconnectMessagePreparator(Chooser chooser, DisconnectMessage message) { @Override public void prepareMessageSpecificContents() { - // TODO save values in config - getObject().setReasonCode(DisconnectReason.SSH_DISCONNECT_PROTOCOL_ERROR); - getObject().setDescription("Test", true); - getObject().setLanguageTag("", true); - if (chooser.getContext().getDelayCompressionExtensionNegotiationFailed()) { - getObject().setReasonCode(DisconnectReason.SSH_DISCONNECT_COMPRESSION_ERROR); + getObject().setSoftlyReasonCode(DisconnectReason.SSH_DISCONNECT_COMPRESSION_ERROR); getObject() - .setDescription( + .setSoftlyDescription( "No common compression algorithm found in delay-compression extension!", - true); - getObject().setLanguageTag("", true); + true, + chooser.getConfig()); + getObject().setSoftlyLanguageTag("", true, chooser.getConfig()); + } else { + // TODO save values in config + getObject().setSoftlyReasonCode(DisconnectReason.SSH_DISCONNECT_PROTOCOL_ERROR); + getObject().setSoftlyDescription("Test", true, chooser.getConfig()); + getObject().setSoftlyLanguageTag("", true, chooser.getConfig()); } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ExtensionInfoMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ExtensionInfoMessagePreparator.java index 4044e06d9..377cb91e5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ExtensionInfoMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ExtensionInfoMessagePreparator.java @@ -21,11 +21,9 @@ public ExtensionInfoMessagePreparator(Chooser chooser, ExtensionInfoMessage mess @Override public void prepareMessageSpecificContents() { if (chooser.getContext().isClient()) { - getObject().setExtensionCount(chooser.getClientSupportedExtensions().size()); - getObject().setExtensions(chooser.getClientSupportedExtensions()); + getObject().setExtensions(chooser.getClientSupportedExtensions(), true); } else { - getObject().setExtensionCount(chooser.getServerSupportedExtensions().size()); - getObject().setExtensions(chooser.getServerSupportedExtensions()); + getObject().setExtensions(chooser.getServerSupportedExtensions(), true); } getObject() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeInitMessagePreperator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeInitMessagePreperator.java index 83fd7b514..f528f6e2a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeInitMessagePreperator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeInitMessagePreperator.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.protocol.transport.preparator; -import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.HybridKeyExchangeCombiner; import de.rub.nds.sshattacker.core.constants.MessageIdConstant; import de.rub.nds.sshattacker.core.crypto.hash.ExchangeHashInputHolder; @@ -45,23 +44,8 @@ public void prepareMessageSpecificContents() { encapsulation.generateLocalKeyPair(); byte[] pubKencapsulation = encapsulation.getLocalKeyPair().getPublicKey().getEncoded(); - LOGGER.info( - "PubKey Encapsulation = {}", - () -> ArrayConverter.bytesToRawHexString(pubKencapsulation)); - LOGGER.info( - "PrivKey Encpasulation = {}", - () -> - ArrayConverter.bytesToRawHexString( - encapsulation.getLocalKeyPair().getPrivateKey().getEncoded())); - byte[] pubKagreement = agreement.getLocalKeyPair().getPublicKey().getEncoded(); - LOGGER.info( - "PubKey Agreement = {}", () -> ArrayConverter.bytesToRawHexString(pubKagreement)); - LOGGER.info( - "PrivKey Agreement = {}", - () -> - ArrayConverter.bytesToRawHexString( - agreement.getLocalKeyPair().getPrivateKey().getEncoded())); + ExchangeHashInputHolder inputHolder = chooser.getContext().getExchangeHashInputHolder(); switch (combiner) { case CLASSICAL_CONCATENATE_POSTQUANTUM: diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/IgnoreMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/IgnoreMessagePreparator.java index 8a5d59af5..ab7ef4ca6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/IgnoreMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/IgnoreMessagePreparator.java @@ -21,6 +21,6 @@ public IgnoreMessagePreparator(Chooser chooser, IgnoreMessage message) { @Override public void prepareMessageSpecificContents() { // TODO dummy values for fuzzing - getObject().setData(new byte[0], true); + getObject().setSoftlyData(new byte[10], true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java index 699631438..04e8ed78c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java @@ -21,87 +21,119 @@ public KeyExchangeInitMessagePreparator(Chooser chooser, KeyExchangeInitMessage @Override public void prepareMessageSpecificContents() { if (chooser.getContext().isClient()) { - getObject().setCookie(chooser.getClientCookie()); - getObject() - .setKeyExchangeAlgorithms( - chooser.getClientSupportedKeyExchangeAlgorithms(), true); - getObject() - .setServerHostKeyAlgorithms( - chooser.getClientSupportedHostKeyAlgorithms(), true); - getObject() - .setEncryptionAlgorithmsClientToServer( - chooser.getClientSupportedEncryptionAlgorithmsClientToServer(), true); - getObject() - .setEncryptionAlgorithmsServerToClient( - chooser.getClientSupportedEncryptionAlgorithmsServerToClient(), true); - getObject() - .setMacAlgorithmsClientToServer( - chooser.getClientSupportedMacAlgorithmsClientToServer(), true); - getObject() - .setMacAlgorithmsServerToClient( - chooser.getClientSupportedMacAlgorithmsServerToClient(), true); - getObject() - .setCompressionMethodsClientToServer( - chooser.getClientSupportedCompressionMethodsClientToServer(), true); - getObject() - .setCompressionMethodsServerToClient( - chooser.getClientSupportedCompressionMethodsServerToClient(), true); - getObject() - .setLanguagesClientToServer( - chooser.getClientSupportedLanguagesClientToServer() - .toArray(new String[0]), - true); - getObject() - .setLanguagesServerToClient( - chooser.getClientSupportedLanguagesServerToClient() - .toArray(new String[0]), - true); - getObject() - .setFirstKeyExchangePacketFollows( - chooser.getClientFirstKeyExchangePacketFollows()); - getObject().setReserved(chooser.getClientReserved()); + getObject().setSoftlyCookie(chooser.getClientCookie(), chooser.getConfig()); + getObject() + .setSoftlyKeyExchangeAlgorithms( + chooser.getClientSupportedKeyExchangeAlgorithms(), + true, + chooser.getConfig()); + getObject() + .setSoftlyServerHostKeyAlgorithms( + chooser.getClientSupportedHostKeyAlgorithms(), + true, + chooser.getConfig()); + getObject() + .setSoftlyEncryptionAlgorithmsClientToServer( + chooser.getClientSupportedEncryptionAlgorithmsClientToServer(), + true, + chooser.getConfig()); + getObject() + .setSoftlyEncryptionAlgorithmsServerToClient( + chooser.getClientSupportedEncryptionAlgorithmsServerToClient(), + true, + chooser.getConfig()); + getObject() + .setSoftlyMacAlgorithmsClientToServer( + chooser.getClientSupportedMacAlgorithmsClientToServer(), + true, + chooser.getConfig()); + getObject() + .setSoftlyMacAlgorithmsServerToClient( + chooser.getClientSupportedMacAlgorithmsServerToClient(), + true, + chooser.getConfig()); + getObject() + .setSoftlyCompressionMethodsClientToServer( + chooser.getClientSupportedCompressionMethodsClientToServer(), + true, + chooser.getConfig()); + getObject() + .setSoftlyCompressionMethodsServerToClient( + chooser.getClientSupportedCompressionMethodsServerToClient(), + true, + chooser.getConfig()); + getObject() + .setSoftlyLanguagesClientToServer( + chooser.getClientSupportedLanguagesClientToServer(), + true, + chooser.getConfig()); + getObject() + .setSoftlyLanguagesServerToClient( + chooser.getClientSupportedLanguagesServerToClient(), + true, + chooser.getConfig()); + getObject() + .setSoftlyFirstKeyExchangePacketFollows( + chooser.getClientFirstKeyExchangePacketFollows(), chooser.getConfig()); + getObject().setSoftlyReserved(chooser.getClientReserved(), chooser.getConfig()); chooser.getContext().getExchangeHashInputHolder().setClientKeyExchangeInit(getObject()); } else { - getObject().setCookie(chooser.getServerCookie()); - getObject() - .setKeyExchangeAlgorithms( - chooser.getServerSupportedKeyExchangeAlgorithms(), true); - getObject() - .setServerHostKeyAlgorithms( - chooser.getServerSupportedHostKeyAlgorithms(), true); - getObject() - .setEncryptionAlgorithmsClientToServer( - chooser.getServerSupportedEncryptionAlgorithmsClientToServer(), true); - getObject() - .setEncryptionAlgorithmsServerToClient( - chooser.getServerSupportedEncryptionAlgorithmsServerToClient(), true); - getObject() - .setMacAlgorithmsClientToServer( - chooser.getServerSupportedMacAlgorithmsClientToServer(), true); - getObject() - .setMacAlgorithmsServerToClient( - chooser.getServerSupportedMacAlgorithmsServerToClient(), true); - getObject() - .setCompressionMethodsClientToServer( - chooser.getServerSupportedCompressionMethodsClientToServer(), true); - getObject() - .setCompressionMethodsServerToClient( - chooser.getServerSupportedCompressionMethodsServerToClient(), true); - getObject() - .setLanguagesClientToServer( - chooser.getServerSupportedLanguagesClientToServer() - .toArray(new String[0]), - true); - getObject() - .setLanguagesServerToClient( - chooser.getServerSupportedLanguagesServerToClient() - .toArray(new String[0]), - true); - getObject() - .setFirstKeyExchangePacketFollows( - chooser.getServerFirstKeyExchangePacketFollows()); - getObject().setReserved(chooser.getServerReserved()); + getObject().setSoftlyCookie(chooser.getServerCookie(), chooser.getConfig()); + getObject() + .setSoftlyKeyExchangeAlgorithms( + chooser.getServerSupportedKeyExchangeAlgorithms(), + true, + chooser.getConfig()); + getObject() + .setSoftlyServerHostKeyAlgorithms( + chooser.getServerSupportedHostKeyAlgorithms(), + true, + chooser.getConfig()); + getObject() + .setSoftlyEncryptionAlgorithmsClientToServer( + chooser.getServerSupportedEncryptionAlgorithmsClientToServer(), + true, + chooser.getConfig()); + getObject() + .setSoftlyEncryptionAlgorithmsServerToClient( + chooser.getServerSupportedEncryptionAlgorithmsServerToClient(), + true, + chooser.getConfig()); + getObject() + .setSoftlyMacAlgorithmsClientToServer( + chooser.getServerSupportedMacAlgorithmsClientToServer(), + true, + chooser.getConfig()); + getObject() + .setSoftlyMacAlgorithmsServerToClient( + chooser.getServerSupportedMacAlgorithmsServerToClient(), + true, + chooser.getConfig()); + getObject() + .setSoftlyCompressionMethodsClientToServer( + chooser.getServerSupportedCompressionMethodsClientToServer(), + true, + chooser.getConfig()); + getObject() + .setSoftlyCompressionMethodsServerToClient( + chooser.getServerSupportedCompressionMethodsServerToClient(), + true, + chooser.getConfig()); + getObject() + .setSoftlyLanguagesClientToServer( + chooser.getServerSupportedLanguagesClientToServer(), + true, + chooser.getConfig()); + getObject() + .setSoftlyLanguagesServerToClient( + chooser.getServerSupportedLanguagesServerToClient(), + true, + chooser.getConfig()); + getObject() + .setSoftlyFirstKeyExchangePacketFollows( + chooser.getServerFirstKeyExchangePacketFollows(), chooser.getConfig()); + getObject().setSoftlyReserved(chooser.getServerReserved(), chooser.getConfig()); chooser.getContext().getExchangeHashInputHolder().setServerKeyExchangeInit(getObject()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PingMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PingMessagePreparator.java index 5a80ccb11..f77e834e4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PingMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PingMessagePreparator.java @@ -20,6 +20,6 @@ public PingMessagePreparator(Chooser chooser, PingMessage message) { @Override public void prepareMessageSpecificContents() { - getObject().setData(new byte[0], true); + getObject().setSoftlyData(new byte[0], true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PongMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PongMessagePreparator.java index bf77c5bcc..cc8083316 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PongMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PongMessagePreparator.java @@ -20,6 +20,6 @@ public PongMessagePreparator(Chooser chooser, PongMessage message) { @Override public void prepareMessageSpecificContents() { - getObject().setData(new byte[0], true); + getObject().setSoftlyData(new byte[0], true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceAcceptMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceAcceptMessagePreparator.java index e688acbbe..57da9dbe6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceAcceptMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceAcceptMessagePreparator.java @@ -20,6 +20,7 @@ public ServiceAcceptMessagePreparator(Chooser chooser, ServiceAcceptMessage mess @Override public void prepareMessageSpecificContents() { - getObject().setServiceName("", true); + // TODO: load service name from context + getObject().setSoftlyServiceName("", true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceRequestMessagePreparator.java index 7f5264ef7..d6e2d4b9d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceRequestMessagePreparator.java @@ -20,6 +20,8 @@ public ServiceRequestMessagePreparator(Chooser chooser, ServiceRequestMessage me @Override public void prepareMessageSpecificContents() { - getObject().setServiceName(chooser.getConfig().getServiceName(), true); + getObject() + .setSoftlyServiceName( + chooser.getConfig().getServiceName(), true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnimplementedMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnimplementedMessagePreparator.java index ace830323..71b5d753a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnimplementedMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnimplementedMessagePreparator.java @@ -20,7 +20,6 @@ public UnimplementedMessagePreparator(Chooser chooser, UnimplementedMessage mess @Override public void prepareMessageSpecificContents() { - // TODO dummy values for fuzzing - getObject().setSequenceNumber(Integer.MAX_VALUE); + getObject().setSoftlySequenceNumber(Integer.MAX_VALUE); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnknownMessagePreparator.java index 5997a2ad7..a87aa2352 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnknownMessagePreparator.java @@ -20,6 +20,6 @@ public UnknownMessagePreparator(Chooser chooser, UnknownMessage message) { @Override public void prepareMessageSpecificContents() { - getObject().setPayload(new byte[0]); + getObject().setSoftlyPayload(new byte[0]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/VersionExchangeMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/VersionExchangeMessagePreparator.java index 8cab9b22f..0de6b7ebf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/VersionExchangeMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/VersionExchangeMessagePreparator.java @@ -21,14 +21,14 @@ public VersionExchangeMessagePreparator(Chooser chooser, VersionExchangeMessage @Override public void prepareProtocolMessageContents() { if (chooser.getContext().isClient()) { - getObject().setVersion(chooser.getClientVersion()); - getObject().setComment(chooser.getClientComment()); - getObject().setEndOfMessageSequence(chooser.getClientEndOfMessageSequence()); + getObject().setSoftlyVersion(chooser.getClientVersion()); + getObject().setSoftlyComment(chooser.getClientComment()); + getObject().setSoftlyEndOfMessageSequence(chooser.getClientEndOfMessageSequence()); chooser.getContext().getExchangeHashInputHolder().setClientVersion(getObject()); } else { - getObject().setVersion(chooser.getServerVersion()); - getObject().setComment(chooser.getServerComment()); - getObject().setEndOfMessageSequence(chooser.getServerEndOfMessageSequence()); + getObject().setSoftlyVersion(chooser.getServerVersion()); + getObject().setSoftlyComment(chooser.getServerComment()); + getObject().setSoftlyEndOfMessageSequence(chooser.getServerEndOfMessageSequence()); chooser.getContext().getExchangeHashInputHolder().setServerVersion(getObject()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/AbstractExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/AbstractExtensionPreparator.java index ee796a786..9e76585c2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/AbstractExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/AbstractExtensionPreparator.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.transport.preparator.extension; +import de.rub.nds.sshattacker.core.constants.Extension; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.AbstractExtension; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -14,12 +15,20 @@ public abstract class AbstractExtensionPreparator> extends Preparator { - protected AbstractExtensionPreparator(Chooser chooser, E extension) { + private final String extensionName; + + protected AbstractExtensionPreparator(Chooser chooser, E extension, Extension extensionName) { + this(chooser, extension, extensionName.getName()); + } + + protected AbstractExtensionPreparator(Chooser chooser, E extension, String extensionName) { super(chooser, extension); + this.extensionName = extensionName; } @Override public void prepare() { + getObject().setSoftlyName(extensionName, true, chooser.getConfig()); prepareExtensionSpecificContents(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java index 60a1cacee..00ff50c46 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java @@ -16,33 +16,37 @@ public class DelayCompressionExtensionPreparator public DelayCompressionExtensionPreparator( Chooser chooser, DelayCompressionExtension extension) { - super(chooser, extension); + super(chooser, extension, Extension.DELAY_COMPRESSION); } @Override public void prepareExtensionSpecificContents() { if (chooser.getContext().isClient()) { - getObject().setName(Extension.DELAY_COMPRESSION.getName(), true); getObject() - .setCompressionMethodsClientToServer( - chooser.getClientSupportedDelayCompressionMethods(), true); + .setSoftlyCompressionMethodsClientToServer( + chooser.getClientSupportedDelayCompressionMethods(), + true, + chooser.getConfig()); getObject() - .setCompressionMethodsServerToClient( - chooser.getClientSupportedDelayCompressionMethods(), true); + .setSoftlyCompressionMethodsServerToClient( + chooser.getClientSupportedDelayCompressionMethods(), + true, + chooser.getConfig()); - getObject().setCompressionMethodsLength(getObject().computeCompressionMethodsLength()); - chooser.getContext().setDelayCompressionExtensionSent(true); } else { - getObject().setName(Extension.DELAY_COMPRESSION.getName(), true); getObject() - .setCompressionMethodsClientToServer( - chooser.getServerSupportedDelayCompressionMethods(), true); + .setSoftlyCompressionMethodsClientToServer( + chooser.getServerSupportedDelayCompressionMethods(), + true, + chooser.getConfig()); getObject() - .setCompressionMethodsServerToClient( - chooser.getServerSupportedDelayCompressionMethods(), true); - getObject().setCompressionMethodsLength(getObject().computeCompressionMethodsLength()); - - chooser.getContext().setDelayCompressionExtensionSent(true); + .setSoftlyCompressionMethodsServerToClient( + chooser.getServerSupportedDelayCompressionMethods(), + true, + chooser.getConfig()); } + getObject() + .setSoftlyCompressionMethodsLength( + getObject().computeCompressionMethodsLength(), chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PingExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PingExtensionPreparator.java index 9333b0d59..78c9a177d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PingExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PingExtensionPreparator.java @@ -18,7 +18,7 @@ public class PingExtensionPreparator extends AbstractExtensionPreparator { - private static final Logger LOGGER = LogManager.getLogger(); - public PublicKeyAlgorithmsRoumenPetrovExtensionPreparator( Chooser chooser, PublicKeyAlgorithmsRoumenPetrovExtension extension) { - super(chooser, extension); + super(chooser, extension, Extension.PUBLICKEY_ALGORITHMS_ROUMENPETROV); } @Override protected void prepareExtensionSpecificContents() { getObject() - .setPublicKeyAlgorithms( - chooser.getServerSupportedPublicKeyAlgorithmsForAuthentication(), true); + .setSoftlyPublicKeyAlgorithms( + chooser.getServerSupportedPublicKeyAlgorithmsForAuthentication(), + true, + chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java index d08584296..e4e0364a4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java @@ -19,7 +19,7 @@ public class ServerSigAlgsExtensionPreparator private static final Logger LOGGER = LogManager.getLogger(); public ServerSigAlgsExtensionPreparator(Chooser chooser, ServerSigAlgsExtension extension) { - super(chooser, extension); + super(chooser, extension, Extension.SERVER_SIG_ALGS); } @Override @@ -29,9 +29,10 @@ public void prepareExtensionSpecificContents() { LOGGER.warn( "Client prepared ServerSigAlgsExtension which is supposed to be sent by the server only!"); } - getObject().setName(Extension.SERVER_SIG_ALGS.getName(), true); getObject() - .setAcceptedPublicKeyAlgorithms( - chooser.getServerSupportedPublicKeyAlgorithmsForAuthentication(), true); + .setSoftlyAcceptedPublicKeyAlgorithms( + chooser.getServerSupportedPublicKeyAlgorithmsForAuthentication(), + true, + chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/UnknownExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/UnknownExtensionPreparator.java index 97dce80a2..f70193c01 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/UnknownExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/UnknownExtensionPreparator.java @@ -9,20 +9,15 @@ import de.rub.nds.sshattacker.core.protocol.transport.message.extension.UnknownExtension; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; public class UnknownExtensionPreparator extends AbstractExtensionPreparator { - private static final Logger LOGGER = LogManager.getLogger(); - public UnknownExtensionPreparator(Chooser chooser, UnknownExtension extension) { - super(chooser, extension); + super(chooser, extension, "hello-from@ssh-attacker.de"); } @Override public void prepareExtensionSpecificContents() { - getObject().setName("hello-from@ssh-attacker.de", true); - getObject().setValue(new byte[100], true); + getObject().setSoftlyValue(new byte[100], true, chooser.getConfig()); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/PublicKeyAlgorithmsRoumenPetrovExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/PublicKeyAlgorithmsRoumenPetrovExtensionSerializer.java index c54115006..ed5d07e7d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/PublicKeyAlgorithmsRoumenPetrovExtensionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/extension/PublicKeyAlgorithmsRoumenPetrovExtensionSerializer.java @@ -25,18 +25,18 @@ public PublicKeyAlgorithmsRoumenPetrovExtensionSerializer( @Override protected void serializeExtensionValue() { - LOGGER.debug("Serializing PublicKeyAlgorithmsRoumenPetrovExtension..."); serializePublicKeyAlgorithmsLength(); serializePublicKeyAlgorithms(); } private void serializePublicKeyAlgorithmsLength() { - appendInt( - extension.getPublicKeyAlgorithmsLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); + Integer publicKeyAlgorithmsLength = extension.getPublicKeyAlgorithmsLength().getValue(); + LOGGER.debug("Public key algorithms length: {}", publicKeyAlgorithmsLength); + appendInt(publicKeyAlgorithmsLength, DataFormatConstants.STRING_SIZE_LENGTH); } private void serializePublicKeyAlgorithms() { + LOGGER.debug("Public key algorithms: {}", extension.getPublicKeyAlgorithms().getValue()); appendString(extension.getPublicKeyAlgorithms().getValue(), StandardCharsets.US_ASCII); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/util/Converter.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/util/Converter.java index cd39ad265..7cbaf53cf 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/util/Converter.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/util/Converter.java @@ -15,6 +15,7 @@ import java.math.BigInteger; import java.nio.charset.StandardCharsets; import java.util.Arrays; +import java.util.Iterator; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -28,7 +29,7 @@ private Converter() { public static > ModifiableString listOfAlgorithmsToModifiableString( List list) { - return ModifiableVariableFactory.safelySetValue(null, listOfAlgorithmsToString(list)); + return ModifiableVariableFactory.safelySetValue(null, listOfNamesToString(list)); } public static String joinStringList(List list, char seperator) { @@ -37,27 +38,63 @@ public static String joinStringList(List list, char seperator) { } StringBuilder builder = new StringBuilder(); - for (String listElement : list) { - builder.append(seperator).append(listElement); + Iterator iterator = list.iterator(); + boolean hasNext = iterator.hasNext(); + while (hasNext) { + builder.append(iterator.next()); + hasNext = iterator.hasNext(); + if (hasNext) { + builder.append(seperator); + } } - builder.deleteCharAt(0); // delete first separator before the first element + return builder.toString(); } - public static > String listOfAlgorithmsToString(List list) { + public static > String listOfNamesToString(List list) { if (list.isEmpty()) { return ""; } StringBuilder builder = new StringBuilder(); - list.forEach( - element -> - builder.append(CharConstants.ALGORITHM_SEPARATOR) - .append(element.toString())); - builder.deleteCharAt(0); // delete first separator before the first element + + Iterator iterator = list.iterator(); + boolean hasNext = iterator.hasNext(); + while (hasNext) { + builder.append(iterator.next().toString()); + hasNext = iterator.hasNext(); + if (hasNext) { + builder.append(CharConstants.NAME_LIST_SEPARATOR); + } + } + return builder.toString(); } + public static String listOfNameStringsToString(List list) { + if (list.isEmpty()) { + return ""; + } + + StringBuilder builder = new StringBuilder(); + + Iterator iterator = list.iterator(); + boolean hasNext = iterator.hasNext(); + while (hasNext) { + builder.append(iterator.next()); + hasNext = iterator.hasNext(); + if (hasNext) { + builder.append(CharConstants.NAME_LIST_SEPARATOR); + } + } + + return builder.toString(); + } + + public static String listOfNamesToString(String[] list) { + return String.join(CharConstants.NAME_LIST_SEPARATOR, list); + } + /** * Convert a name-list string into a stream of strings. * @@ -68,8 +105,7 @@ public static > String listOfAlgorithmsToString(List list) * @return stream of strings */ private static Stream nameListStringToStringStream(String nameListString) { - return Arrays.stream( - nameListString.split(String.valueOf(CharConstants.ALGORITHM_SEPARATOR))); + return Arrays.stream(nameListString.split(CharConstants.NAME_LIST_SEPARATOR)); } /** @@ -82,7 +118,7 @@ private static Stream nameListStringToStringStream(String nameListString * @return list of strings */ public static List nameListStringToStringList(String nameListString) { - return nameListStringToStringStream(nameListString).collect(Collectors.toList()); + return Arrays.asList(nameListString.split(CharConstants.NAME_LIST_SEPARATOR)); } /** From bd8bb17d790ab6a66cdc31188d6cb8af7214882a Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 19 Dec 2024 09:00:28 +0100 Subject: [PATCH 081/203] Fix AuthResponseEntry Preparator --- .../message/holder/AuthenticationResponseEntry.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java index 207e4ebaf..fad586d6f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java @@ -83,9 +83,7 @@ public void setResponse(String response, boolean adjustLengthField) { } public void setSoftlyResponse(String response, boolean adjustLengthField, Config config) { - if (config.getAlwaysPrepareAuthentication() - || this.response == null - || this.response.getOriginalValue() == null) { + if (this.response == null || this.response.getOriginalValue() == null) { this.response = ModifiableVariableFactory.safelySetValue(this.response, response); } if (adjustLengthField) { From 2b606da9f8ff460b3a01bc81265988aee5361594 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 19 Dec 2024 11:04:17 +0100 Subject: [PATCH 082/203] Fix HybridKeyExchangeReplyMessage CyclicDefaultConstructorPairsDynamicTest in a kind of bad way, but quiet similar to the other key exchange reply messages. --- .../attacks/pkcs1/util/OaepConverter.java | 7 ++-- .../config/converter/LogLevelConverter.java | 6 ++-- .../converter/RunningModeConverter.java | 6 ++-- .../core/crypto/kex/HybridKeyExchange.java | 3 +- .../core/crypto/kex/SntrupKeyExchange.java | 6 +++- .../keys/parser/CertDsaPublicKeyParser.java | 19 +++++----- .../keys/parser/CertEcdsaPublicKeyParser.java | 29 ++++++--------- .../keys/parser/CertRsaPublicKeyParser.java | 19 +++++----- .../parser/CertXCurvePublicKeyParser.java | 24 +++++++------ .../HybridKeyExchangeReplyMessageParser.java | 35 ++++++++++++++----- .../RsaKeyExchangePubkeyMessageParser.java | 7 ++-- ...bridKeyExchangeReplyMessageSerializer.java | 3 +- ...RsaKeyExchangePubkeyMessageSerializer.java | 27 ++++++++------ ...RsaKeyExchangeSecretMessageSerializer.java | 7 ++-- .../common/CyclicParserSerializerTest.java | 9 ++--- 15 files changed, 119 insertions(+), 88 deletions(-) diff --git a/Attacks/src/main/java/de/rub/nds/sshattacker/attacks/pkcs1/util/OaepConverter.java b/Attacks/src/main/java/de/rub/nds/sshattacker/attacks/pkcs1/util/OaepConverter.java index e21831348..e8c4c3775 100644 --- a/Attacks/src/main/java/de/rub/nds/sshattacker/attacks/pkcs1/util/OaepConverter.java +++ b/Attacks/src/main/java/de/rub/nds/sshattacker/attacks/pkcs1/util/OaepConverter.java @@ -9,6 +9,7 @@ import static de.rub.nds.tlsattacker.util.ConsoleLogger.CONSOLE; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import java.math.BigInteger; import java.nio.ByteBuffer; import java.security.MessageDigest; @@ -221,8 +222,10 @@ public static BigInteger decodeSolution( byte[] result = doOaepDecoding(solutionBytes, hashInstance, publicKeyByteLength); - CONSOLE.debug("Secret with length field as byte array: {}", Arrays.toString(result)); - CONSOLE.debug("Secret with length field: {}", new BigInteger(result)); + CONSOLE.debug( + "Secret with length field as byte array: {}", + () -> ArrayConverter.bytesToRawHexString(result)); + CONSOLE.debug("Secret with length field: {}", () -> new BigInteger(result)); // Cut off length field to get secret as decimal number ByteBuffer secretBuffer = ByteBuffer.wrap(result); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/converter/LogLevelConverter.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/converter/LogLevelConverter.java index f0b5ab5a2..be19baea5 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/converter/LogLevelConverter.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/converter/LogLevelConverter.java @@ -16,12 +16,12 @@ public class LogLevelConverter implements IStringConverter { @Override - public Level convert(String s) { - Level level = Level.toLevel(s, null); + public Level convert(String value) { + Level level = Level.toLevel(value, null); if (level == null) { throw new ParameterException( "Value " - + s + + value + " cannot be converted to a log4j level. " + "Available values are: " + Arrays.toString(Level.values())); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/converter/RunningModeConverter.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/converter/RunningModeConverter.java index cecb89bf6..2ec54fdf6 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/converter/RunningModeConverter.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/converter/RunningModeConverter.java @@ -16,14 +16,14 @@ public class RunningModeConverter implements IStringConverter { @Override - public RunningModeType convert(String s) { + public RunningModeType convert(String value) { try { - return RunningModeType.valueOf(s); + return RunningModeType.valueOf(value); } catch (IllegalArgumentException e) { throw new ParameterException( "Value " - + s + + value + " cannot be converted to a RunningModeType. " + "Available values are: " + Arrays.toString(RunningModeType.values())); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/HybridKeyExchange.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/HybridKeyExchange.java index 3d57cd48c..57b38393a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/HybridKeyExchange.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/HybridKeyExchange.java @@ -158,7 +158,8 @@ public void combineSharedSecrets() { ArrayConverter.bytesToRawHexString( encode(tmpSharedSecret, algorithm.getDigest()))); } catch (Exception e) { - LOGGER.warn("Could not create the shared secret", e); + LOGGER.warn("Could not create the shared secret"); + LOGGER.debug(e); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/SntrupKeyExchange.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/SntrupKeyExchange.java index 6f39f135b..3da5cc17c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/SntrupKeyExchange.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/kex/SntrupKeyExchange.java @@ -288,7 +288,11 @@ public byte[] getEncryptedSharedSecret() { public byte[] encryptSharedSecret() { if (remotePublicKey == null) { LOGGER.warn("RemotePublicKey not set, return BigInteger.valueOf(0)"); - return new byte[0]; + // TODO: idea: Use local public key for generating combined key share, instead of + // remote public key, so that the shared secret is not empty + encryptedSharedSecret = new byte[0]; + sharedSecret = new byte[0]; + return encryptedSharedSecret; } if (set == SntrupParameterSet.KEM_SNTRUP_4591761) { encapsR1(remotePublicKey.getEncoded()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertDsaPublicKeyParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertDsaPublicKeyParser.java index bdc43692f..8bd073b7c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertDsaPublicKeyParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertDsaPublicKeyParser.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.crypto.keys.parser; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.PublicKeyFormat; import de.rub.nds.sshattacker.core.crypto.keys.CustomCertDsaPublicKey; @@ -20,6 +21,7 @@ import java.time.format.FormatStyle; import java.util.Arrays; import java.util.HashMap; +import java.util.LinkedList; import java.util.Locale; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -59,7 +61,7 @@ public SshPublicKey parse() { int nonceLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed nonceLength: {}", nonceLength); byte[] nonce = parseByteArrayField(nonceLength); - LOGGER.debug("Parsed nonce: {}", Arrays.toString(nonce)); + LOGGER.debug("Parsed nonce: {}", () -> ArrayConverter.bytesToRawHexString(nonce)); publicKey.setNonce(nonce); // p (mpint p) @@ -107,21 +109,19 @@ public SshPublicKey parse() { int totalPrincipalLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed total principal length: {}", totalPrincipalLength); - String[] validPrincipals = new String[totalPrincipalLength]; + LinkedList validPrincipals = new LinkedList<>(); int bytesProcessed = 0; - int principalIndex = 0; while (bytesProcessed < totalPrincipalLength) { int principalLength = parseIntField(DataFormatConstants.UINT32_SIZE); if (principalLength > 0) { String principal = parseByteString(principalLength, StandardCharsets.US_ASCII); - validPrincipals[principalIndex++] = principal; + validPrincipals.add(principal); } bytesProcessed += principalLength + DataFormatConstants.UINT32_SIZE; } - // Nur die tatsächlich gesetzten Principals weitergeben - String[] parsedPrincipals = Arrays.copyOf(validPrincipals, principalIndex); - LOGGER.debug("Parsed principals: {}", Arrays.toString(parsedPrincipals)); + String[] parsedPrincipals = validPrincipals.toArray(new String[0]); + LOGGER.debug("Parsed principals: {}", () -> Arrays.toString(parsedPrincipals)); publicKey.setValidPrincipals(parsedPrincipals); // Validity period (uint64 valid after) @@ -191,14 +191,15 @@ public SshPublicKey parse() { int signatureKeyLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed signatureKeyLength: {}", signatureKeyLength); byte[] signatureKey = parseByteArrayField(signatureKeyLength); - LOGGER.debug("Parsed signatureKey: {}", Arrays.toString(signatureKey)); + LOGGER.debug( + "Parsed signatureKey: {}", () -> ArrayConverter.bytesToRawHexString(signatureKey)); publicKey.setSignatureKey(signatureKey); // Signature (string signature) int signatureLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed signatureLength: {}", signatureLength); byte[] signature = parseByteArrayField(signatureLength); - LOGGER.debug("Parsed signature: {}", Arrays.toString(signature)); + LOGGER.debug("Parsed signature: {}", () -> ArrayConverter.bytesToRawHexString(signature)); publicKey.setSignature(signature); LOGGER.debug("Successfully parsed the DSA Certificate Public Key."); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertEcdsaPublicKeyParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertEcdsaPublicKeyParser.java index 4487f2cb1..a14de3afb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertEcdsaPublicKeyParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertEcdsaPublicKeyParser.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.crypto.keys.parser; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.NamedEcGroup; import de.rub.nds.sshattacker.core.constants.PublicKeyFormat; @@ -23,6 +24,7 @@ import java.time.format.FormatStyle; import java.util.Arrays; import java.util.HashMap; +import java.util.LinkedList; import java.util.Locale; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -58,7 +60,7 @@ public SshPublicKey parse() { int nonceLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed nonceLength: {}", nonceLength); byte[] nonce = parseByteArrayField(nonceLength); - LOGGER.debug("Parsed nonce: {}", Arrays.toString(nonce)); + LOGGER.debug("Parsed nonce: {}", () -> ArrayConverter.bytesToRawHexString(nonce)); publicKey.setNonce(nonce); // Curve @@ -96,29 +98,19 @@ public SshPublicKey parse() { int totalPrincipalLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed total principal length: {}", totalPrincipalLength); - String[] validPrincipals = new String[totalPrincipalLength]; + LinkedList validPrincipals = new LinkedList<>(); int bytesProcessed = 0; - int principalIndex = 0; - while (bytesProcessed < totalPrincipalLength) { int principalLength = parseIntField(DataFormatConstants.UINT32_SIZE); - LOGGER.debug("Parsed principal length: {}", principalLength); - if (principalLength > 0) { - byte[] principalBytes = parseByteArrayField(principalLength); - LOGGER.debug("Principal bytes: {}", Arrays.toString(principalBytes)); - - // Convert byte array to string using ASCII - String principal = new String(principalBytes, StandardCharsets.US_ASCII); - LOGGER.debug("Parsed principal string: '{}'", principal); - - validPrincipals[principalIndex++] = principal; + String principal = parseByteString(principalLength, StandardCharsets.US_ASCII); + validPrincipals.add(principal); } bytesProcessed += principalLength + DataFormatConstants.UINT32_SIZE; } - String[] parsedPrincipals = Arrays.copyOf(validPrincipals, principalIndex); - LOGGER.debug("Parsed principals array: {}", Arrays.toString(parsedPrincipals)); + String[] parsedPrincipals = validPrincipals.toArray(new String[0]); + LOGGER.debug("Parsed principals: {}", () -> Arrays.toString(parsedPrincipals)); publicKey.setValidPrincipals(parsedPrincipals); // Validity period (uint64 valid after) @@ -190,14 +182,15 @@ public SshPublicKey parse() { int signatureKeyLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed signatureKeyLength: {}", signatureKeyLength); byte[] signatureKey = parseByteArrayField(signatureKeyLength); - LOGGER.debug("Parsed signatureKey: {}", Arrays.toString(signatureKey)); + LOGGER.debug( + "Parsed signatureKey: {}", () -> ArrayConverter.bytesToRawHexString(signatureKey)); publicKey.setSignatureKey(signatureKey); // Signature int signatureLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed signatureLength: {}", signatureLength); byte[] signature = parseByteArrayField(signatureLength); - LOGGER.debug("Parsed signature: {}", Arrays.toString(signature)); + LOGGER.debug("Parsed signature: {}", () -> ArrayConverter.bytesToRawHexString(signature)); publicKey.setSignature(signature); LOGGER.debug("Successfully parsed the ECDSA certificate public key."); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertRsaPublicKeyParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertRsaPublicKeyParser.java index 7053da6aa..2ee593a3b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertRsaPublicKeyParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertRsaPublicKeyParser.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.crypto.keys.parser; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.PublicKeyFormat; import de.rub.nds.sshattacker.core.crypto.keys.CustomCertRsaPublicKey; @@ -20,6 +21,7 @@ import java.time.format.FormatStyle; import java.util.Arrays; import java.util.HashMap; +import java.util.LinkedList; import java.util.Locale; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -58,7 +60,7 @@ public SshPublicKey parse() { int nonceLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed nonceLength: {}", nonceLength); byte[] nonce = parseByteArrayField(nonceLength); - LOGGER.debug("Parsed nonce: {}", Arrays.toString(nonce)); + LOGGER.debug("Parsed nonce: {}", () -> ArrayConverter.bytesToRawHexString(nonce)); publicKey.setNonce(nonce); // Public Exponent (mpint e) @@ -94,19 +96,19 @@ public SshPublicKey parse() { int totalPrincipalLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed total principal length: {}", totalPrincipalLength); - String[] validPrincipals = new String[totalPrincipalLength]; + LinkedList validPrincipals = new LinkedList<>(); int bytesProcessed = 0; - int principalIndex = 0; while (bytesProcessed < totalPrincipalLength) { int principalLength = parseIntField(DataFormatConstants.UINT32_SIZE); if (principalLength > 0) { String principal = parseByteString(principalLength, StandardCharsets.US_ASCII); - validPrincipals[principalIndex++] = principal; + validPrincipals.add(principal); } bytesProcessed += principalLength + DataFormatConstants.UINT32_SIZE; } - String[] parsedPrincipals = Arrays.copyOf(validPrincipals, principalIndex); - LOGGER.debug("Parsed principals: {}", Arrays.toString(parsedPrincipals)); + + String[] parsedPrincipals = validPrincipals.toArray(new String[0]); + LOGGER.debug("Parsed principals: {}", () -> Arrays.toString(parsedPrincipals)); publicKey.setValidPrincipals(parsedPrincipals); // Validity period (uint64 valid after) @@ -178,14 +180,15 @@ public SshPublicKey parse() { int signatureKeyLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed signatureKeyLength: {}", signatureKeyLength); byte[] signatureKey = parseByteArrayField(signatureKeyLength); - LOGGER.debug("Parsed signatureKey: {}", Arrays.toString(signatureKey)); + LOGGER.debug( + "Parsed signatureKey: {}", () -> ArrayConverter.bytesToRawHexString(signatureKey)); publicKey.setSignatureKey(signatureKey); // Signature (string signature) int signatureLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed signatureLength: {}", signatureLength); byte[] signature = parseByteArrayField(signatureLength); - LOGGER.debug("Parsed signature: {}", Arrays.toString(signature)); + LOGGER.debug("Parsed signature: {}", () -> ArrayConverter.bytesToRawHexString(signature)); publicKey.setSignature(signature); LOGGER.debug("Successfully parsed the RSA Certificate Public Key."); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertXCurvePublicKeyParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertXCurvePublicKeyParser.java index f2009f8d0..ac8c4f001 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertXCurvePublicKeyParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/crypto/keys/parser/CertXCurvePublicKeyParser.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.crypto.keys.parser; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.NamedEcGroup; import de.rub.nds.sshattacker.core.constants.PublicKeyFormat; @@ -20,6 +21,7 @@ import java.time.format.FormatStyle; import java.util.Arrays; import java.util.HashMap; +import java.util.LinkedList; import java.util.Locale; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -60,14 +62,15 @@ public CertXCurvePublicKeyParser(byte[] array, int startPosition) { int nonceLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed nonceLength: {}", nonceLength); byte[] nonce = parseByteArrayField(nonceLength); - LOGGER.debug("Parsed nonce: {}", Arrays.toString(nonce)); + LOGGER.debug("Parsed nonce: {}", () -> ArrayConverter.bytesToRawHexString(nonce)); publicKey.setNonce(nonce); // Setze Nonce // 3. Public Key (pk) int publicKeyLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed publicKeyLength: {}", publicKeyLength); byte[] publicKeyBytes = parseByteArrayField(publicKeyLength); - LOGGER.debug("Parsed publicKey: {}", Arrays.toString(publicKeyBytes)); + LOGGER.debug( + "Parsed publicKey: {}", () -> ArrayConverter.bytesToRawHexString(publicKeyBytes)); publicKey.setCoordinate(publicKeyBytes); // Setze Public Key // 4. Serial (uint64) @@ -91,21 +94,19 @@ public CertXCurvePublicKeyParser(byte[] array, int startPosition) { int totalPrincipalLength = parseIntField(DataFormatConstants.UINT32_SIZE); LOGGER.debug("Parsed total principal length: {}", totalPrincipalLength); - String[] validPrincipals = new String[totalPrincipalLength]; + LinkedList validPrincipals = new LinkedList<>(); int bytesProcessed = 0; - int principalIndex = 0; while (bytesProcessed < totalPrincipalLength) { int principalLength = parseIntField(DataFormatConstants.UINT32_SIZE); if (principalLength > 0) { String principal = parseByteString(principalLength, StandardCharsets.US_ASCII); - validPrincipals[principalIndex++] = principal; + validPrincipals.add(principal); } bytesProcessed += principalLength + DataFormatConstants.UINT32_SIZE; } - // Nur die tatsächlich gesetzten Principals weitergeben - String[] parsedPrincipals = Arrays.copyOf(validPrincipals, principalIndex); - LOGGER.debug("Parsed principals: {}", Arrays.toString(parsedPrincipals)); + String[] parsedPrincipals = validPrincipals.toArray(new String[0]); + LOGGER.debug("Parsed principals: {}", () -> Arrays.toString(parsedPrincipals)); publicKey.setValidPrincipals(parsedPrincipals); // 8. Validity period (uint64 valid after) @@ -188,7 +189,9 @@ public CertXCurvePublicKeyParser(byte[] array, int startPosition) { LOGGER.debug("Parsed signatureKeyLength: {}", signatureKeyLength); if (signatureKeyLength > 0) { byte[] signatureKey = parseByteArrayField(signatureKeyLength); - LOGGER.debug("Parsed signatureKey: {}", Arrays.toString(signatureKey)); + LOGGER.debug( + "Parsed signatureKey: {}", + () -> ArrayConverter.bytesToRawHexString(signatureKey)); publicKey.setSignatureKey(signatureKey); } else { LOGGER.debug("Signature Key field is empty."); @@ -199,7 +202,8 @@ public CertXCurvePublicKeyParser(byte[] array, int startPosition) { LOGGER.debug("Parsed signatureLength: {}", signatureLength); if (signatureLength > 0) { byte[] signature = parseByteArrayField(signatureLength); - LOGGER.debug("Parsed signature: {}", Arrays.toString(signature)); + LOGGER.debug( + "Parsed signature: {}", () -> ArrayConverter.bytesToRawHexString(signature)); publicKey.setSignature(signature); // Setze Signatur } else { LOGGER.debug("Signature field is empty."); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java index 4ffbfe414..427da92bb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/HybridKeyExchangeReplyMessageParser.java @@ -48,7 +48,7 @@ public HybridKeyExchangeReplyMessageParser( private void parseHostKeyBytes() { int hostKeyBytesLength = parseIntField(BinaryPacketConstants.LENGTH_FIELD_LENGTH); message.setHostKeyBytesLength(hostKeyBytesLength); - LOGGER.debug("Host key byte length{}", hostKeyBytesLength); + LOGGER.debug("Host key byte length {}", hostKeyBytesLength); byte[] hostKeyBytes = parseByteArrayField(hostKeyBytesLength); message.setHostKeyBytes(hostKeyBytes); LOGGER.debug("Host key bytes: {}", () -> ArrayConverter.bytesToHexString(hostKeyBytes)); @@ -60,16 +60,33 @@ private void parseHybridKey() { switch (combiner) { case CLASSICAL_CONCATENATE_POSTQUANTUM: - message.setPublicKeyLength(agreementSize); - message.setPublicKey(parseByteArrayField(agreementSize)); - message.setCombinedKeyShareLength(encapsulationSize); - message.setCombinedKeyShare(parseByteArrayField(encapsulationSize)); + if (length == agreementSize + encapsulationSize) { + message.setPublicKeyLength(agreementSize); + message.setPublicKey(parseByteArrayField(agreementSize)); + message.setCombinedKeyShareLength(encapsulationSize); + message.setCombinedKeyShare(parseByteArrayField(encapsulationSize)); + } else { + // TODO: check if it would be better to change encryptSharedSecret() in + // SntrupKeyExchange + // Parse corrupt message + message.setPublicKeyLength(length); + message.setPublicKey(parseByteArrayField(length)); + message.setCombinedKeyShareLength(0); + message.setCombinedKeyShare(new byte[0]); + } break; case POSTQUANTUM_CONCATENATE_CLASSICAL: - message.setCombinedKeyShareLength(encapsulationSize); - message.setCombinedKeyShare(parseByteArrayField(encapsulationSize)); - message.setPublicKeyLength(agreementSize); - message.setPublicKey(parseByteArrayField(agreementSize)); + if (length == encapsulationSize + agreementSize) { + message.setCombinedKeyShareLength(encapsulationSize); + message.setCombinedKeyShare(parseByteArrayField(encapsulationSize)); + message.setPublicKeyLength(agreementSize); + message.setPublicKey(parseByteArrayField(agreementSize)); + } else { + message.setPublicKeyLength(length); + message.setPublicKey(parseByteArrayField(length)); + message.setCombinedKeyShareLength(0); + message.setCombinedKeyShare(new byte[0]); + } break; default: LOGGER.warn("combiner not supported. Can not update message"); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangePubkeyMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangePubkeyMessageParser.java index 25c4672b6..c8db7a01e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangePubkeyMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/parser/RsaKeyExchangePubkeyMessageParser.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.transport.parser; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.BinaryPacketConstants; import de.rub.nds.sshattacker.core.protocol.common.SshMessageParser; import de.rub.nds.sshattacker.core.protocol.transport.message.RsaKeyExchangePubkeyMessage; @@ -37,7 +38,7 @@ private void parseHostKeyBytes() { LOGGER.debug("Host key bytes length: {}", hostKeyBytesLength); byte[] hostKeyBytes = parseByteArrayField(hostKeyBytesLength); message.setHostKeyBytes(hostKeyBytes); - LOGGER.debug("Host key bytes: {}", hostKeyBytes); + LOGGER.debug("Host key bytes: {}", () -> ArrayConverter.bytesToRawHexString(hostKeyBytes)); } private void parseTransientPublicKey() { @@ -47,7 +48,9 @@ private void parseTransientPublicKey() { LOGGER.debug("Transient public key length: {}", transientPublicKeyBytesLength); byte[] transientPublicKeyBytes = parseByteArrayField(transientPublicKeyBytesLength); message.setTransientPublicKeyBytes(transientPublicKeyBytes); - LOGGER.debug("Transient public key: {}", transientPublicKeyBytes); + LOGGER.debug( + "Transient public key: {}", + () -> ArrayConverter.bytesToRawHexString(transientPublicKeyBytes)); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java index 41a13e03e..7d121a172 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/HybridKeyExchangeReplyMessageSerializer.java @@ -13,7 +13,6 @@ import de.rub.nds.sshattacker.core.protocol.common.SshMessageSerializer; import de.rub.nds.sshattacker.core.protocol.transport.message.HybridKeyExchangeReplyMessage; import de.rub.nds.sshattacker.core.protocol.util.KeyExchangeUtil; -import java.util.Arrays; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -73,7 +72,7 @@ private void serializeHybridKey() { combined = new byte[0]; break; } - LOGGER.debug("Hybrid Key (server): {}", Arrays.toString(combined)); + LOGGER.debug("Hybrid Key (server): {}", () -> ArrayConverter.bytesToRawHexString(combined)); } private void serializeSignature() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangePubkeyMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangePubkeyMessageSerializer.java index bca5811db..f77b50b1f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangePubkeyMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangePubkeyMessageSerializer.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.protocol.transport.serializer; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.protocol.common.SshMessageSerializer; import de.rub.nds.sshattacker.core.protocol.transport.message.RsaKeyExchangePubkeyMessage; @@ -26,22 +27,28 @@ private void serializeHostKeyBytes() { Integer hostKeyBytesLength = message.getHostKeyBytesLength().getValue(); LOGGER.debug("Host key bytes length: {}", hostKeyBytesLength); appendInt(hostKeyBytesLength, DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Host key bytes: {}", message.getHostKeyBytes()); - appendBytes(message.getHostKeyBytes().getValue()); + + byte[] hostKeyBytes = message.getHostKeyBytes().getValue(); + LOGGER.debug("Host key bytes: {}", () -> ArrayConverter.bytesToRawHexString(hostKeyBytes)); + appendBytes(hostKeyBytes); } - private void serializeTransientPublicKey() { - LOGGER.debug("Transient public key length: {}", message.getTransientPublicKeyBytesLength()); - appendInt( - message.getTransientPublicKeyBytesLength().getValue(), - DataFormatConstants.STRING_SIZE_LENGTH); - LOGGER.debug("Transient public key: {}", message.getTransientPublicKeyBytes()); - appendBytes(message.getTransientPublicKeyBytes().getValue()); + private void serializeTransientPublicKeyBytes() { + Integer transientPublicKeyBytesLength = + message.getTransientPublicKeyBytesLength().getValue(); + LOGGER.debug("Transient public key length: {}", transientPublicKeyBytesLength); + appendInt(transientPublicKeyBytesLength, DataFormatConstants.STRING_SIZE_LENGTH); + + byte[] transientPublicKeyBytes = message.getTransientPublicKeyBytes().getValue(); + LOGGER.debug( + "Transient public key: {}", + () -> ArrayConverter.bytesToRawHexString(transientPublicKeyBytes)); + appendBytes(transientPublicKeyBytes); } @Override protected void serializeMessageSpecificContents() { serializeHostKeyBytes(); - serializeTransientPublicKey(); + serializeTransientPublicKeyBytes(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeSecretMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeSecretMessageSerializer.java index 8e2ea0b40..e27898e6b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeSecretMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/serializer/RsaKeyExchangeSecretMessageSerializer.java @@ -7,10 +7,10 @@ */ package de.rub.nds.sshattacker.core.protocol.transport.serializer; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.protocol.common.SshMessageSerializer; import de.rub.nds.sshattacker.core.protocol.transport.message.RsaKeyExchangeSecretMessage; -import java.util.Arrays; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -27,9 +27,10 @@ private void serializeEncryptedSecret() { Integer encryptedSecretLength = message.getEncryptedSecretLength().getValue(); LOGGER.debug("Encrypted secret length: {}", encryptedSecretLength); appendInt(encryptedSecretLength, DataFormatConstants.MPINT_SIZE_LENGTH); + byte[] encryptedSecret = message.getEncryptedSecret().getValue(); LOGGER.debug( - "Encrypted secret: {}", Arrays.toString(message.getEncryptedSecret().getValue())); - appendBytes(message.getEncryptedSecret().getValue()); + "Encrypted secret: {}", () -> ArrayConverter.bytesToRawHexString(encryptedSecret)); + appendBytes(encryptedSecret); } @Override diff --git a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/common/CyclicParserSerializerTest.java b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/common/CyclicParserSerializerTest.java index 9129ca758..e6b77d60c 100644 --- a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/common/CyclicParserSerializerTest.java +++ b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/protocol/common/CyclicParserSerializerTest.java @@ -16,14 +16,11 @@ import de.rub.nds.sshattacker.core.protocol.connection.Channel; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelMessage; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelOpenMessage; -import de.rub.nds.sshattacker.core.protocol.transport.message.HybridKeyExchangeReplyMessage; import de.rub.nds.sshattacker.core.state.SshContext; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Modifier; import java.security.Security; -import java.util.HashSet; -import java.util.Set; import java.util.stream.Stream; import org.apache.commons.lang3.SerializationException; import org.apache.logging.log4j.LogManager; @@ -47,13 +44,11 @@ public static void setUpClass() { @TestFactory public Stream generateCyclicDefaultConstructorPairsDynamicTests() { - Set>> excludedClasses = new HashSet<>(); - // TODO: Fix HybridKeyExchangeReplyMessagePreparator - excludedClasses.add(HybridKeyExchangeReplyMessage.class); + // Set>> excludedClasses = new HashSet<>(); return new Reflections("de.rub.nds.sshattacker.core") .getSubTypesOf(ProtocolMessage.class).stream() .filter(messageClass -> !Modifier.isAbstract(messageClass.getModifiers())) - .filter(messageClass -> !excludedClasses.contains(messageClass)) + // .filter(messageClass -> !excludedClasses.contains(messageClass)) .map( messageClass -> DynamicTest.dynamicTest( From 8ce68aee9fa8c0126ac3cf1ea77bd53c68498a0c Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 19 Dec 2024 11:41:11 +0100 Subject: [PATCH 083/203] Pass wantReply via argument --- .../handler/ChannelSuccessMessageHandler.java | 2 ++ .../ChannelRequestAuthAgentMessagePreparator.java | 2 +- .../ChannelRequestBreakMessagePreparator.java | 2 +- .../ChannelRequestEnvMessagePreparator.java | 3 +-- .../ChannelRequestExecMessagePreparator.java | 2 +- .../ChannelRequestExitSignalMessagePreparator.java | 2 +- .../ChannelRequestExitStatusMessagePreparator.java | 2 +- .../preparator/ChannelRequestMessagePreparator.java | 12 +++++++----- .../ChannelRequestPtyMessagePreparator.java | 3 +-- .../ChannelRequestShellMessagePreparator.java | 2 +- .../ChannelRequestSignalMessagePreparator.java | 2 +- .../ChannelRequestSubsystemMessagePreparator.java | 3 +-- .../ChannelRequestUnknownMessagePreparator.java | 2 +- .../ChannelRequestWindowChangeMessagePreparator.java | 2 +- .../ChannelRequestX11MessagePreparator.java | 2 +- .../ChannelRequestXonXoffMessagePreparator.java | 2 +- 16 files changed, 23 insertions(+), 22 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelSuccessMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelSuccessMessageHandler.java index 2adacbcb4..4b0c55e19 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelSuccessMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelSuccessMessageHandler.java @@ -31,6 +31,8 @@ public ChannelSuccessMessageHandler(SshContext context, ChannelSuccessMessage me @Override public void adjustContext() { + // TODO: This only works if wantReply is true, add a way to set the channel type also if + // wantReply is false -> In the handlers of channel request messages Integer recipientChannelId = message.getRecipientChannelId().getValue(); Channel channel = context.getChannelManager().getChannelByLocalId(recipientChannelId); if (channel != null) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestAuthAgentMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestAuthAgentMessagePreparator.java index 6e5d62283..bfddcb18e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestAuthAgentMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestAuthAgentMessagePreparator.java @@ -16,7 +16,7 @@ public class ChannelRequestAuthAgentMessagePreparator public ChannelRequestAuthAgentMessagePreparator( Chooser chooser, ChannelRequestAuthAgentMessage message) { - super(chooser, message, ChannelRequestType.AUTH_AGENT_REQ_OPENSSH_COM); + super(chooser, message, ChannelRequestType.AUTH_AGENT_REQ_OPENSSH_COM, true); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestBreakMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestBreakMessagePreparator.java index 036e23253..fdb944fd5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestBreakMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestBreakMessagePreparator.java @@ -16,7 +16,7 @@ public class ChannelRequestBreakMessagePreparator public ChannelRequestBreakMessagePreparator( Chooser chooser, ChannelRequestBreakMessage message) { - super(chooser, message, ChannelRequestType.BREAK); + super(chooser, message, ChannelRequestType.BREAK, true); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java index 1db398ba1..ffe5d0f61 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java @@ -15,12 +15,11 @@ public class ChannelRequestEnvMessagePreparator extends ChannelRequestMessagePreparator { public ChannelRequestEnvMessagePreparator(Chooser chooser, ChannelRequestEnvMessage message) { - super(chooser, message, ChannelRequestType.ENV); + super(chooser, message, ChannelRequestType.ENV, true); } @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setSoftlyWantReply(true); getObject() .setSoftlyVariableName( chooser.getConfig().getDefaultVariableName(), true, chooser.getConfig()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExecMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExecMessagePreparator.java index 1bf45b630..7e4be8702 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExecMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExecMessagePreparator.java @@ -15,7 +15,7 @@ public class ChannelRequestExecMessagePreparator extends ChannelRequestMessagePreparator { public ChannelRequestExecMessagePreparator(Chooser chooser, ChannelRequestExecMessage message) { - super(chooser, message, ChannelRequestType.EXEC); + super(chooser, message, ChannelRequestType.EXEC, true); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitSignalMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitSignalMessagePreparator.java index cf125d75b..a7c7d8819 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitSignalMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitSignalMessagePreparator.java @@ -17,7 +17,7 @@ public class ChannelRequestExitSignalMessagePreparator public ChannelRequestExitSignalMessagePreparator( Chooser chooser, ChannelRequestExitSignalMessage message) { - super(chooser, message, ChannelRequestType.EXIT_SIGNAL); + super(chooser, message, ChannelRequestType.EXIT_SIGNAL, false); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitStatusMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitStatusMessagePreparator.java index 1e3c36c49..8f04fb216 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitStatusMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitStatusMessagePreparator.java @@ -16,7 +16,7 @@ public class ChannelRequestExitStatusMessagePreparator public ChannelRequestExitStatusMessagePreparator( Chooser chooser, ChannelRequestExitStatusMessage message) { - super(chooser, message, ChannelRequestType.EXIT_STATUS); + super(chooser, message, ChannelRequestType.EXIT_STATUS, false); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestMessagePreparator.java index 845143a0b..8fcc3d653 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestMessagePreparator.java @@ -16,24 +16,26 @@ public abstract class ChannelRequestMessagePreparator { private final String channelRequestType; + private final boolean wantReply; protected ChannelRequestMessagePreparator( - Chooser chooser, T message, ChannelRequestType channelRequestType) { - this(chooser, message, channelRequestType.toString()); + Chooser chooser, T message, ChannelRequestType channelRequestType, boolean wantReply) { + this(chooser, message, channelRequestType.toString(), wantReply); } protected ChannelRequestMessagePreparator( - Chooser chooser, T message, String channelRequestType) { + Chooser chooser, T message, String channelRequestType, boolean wantReply) { super(chooser, message, MessageIdConstant.SSH_MSG_CHANNEL_REQUEST); this.channelRequestType = channelRequestType; + this.wantReply = wantReply; } @Override protected final void prepareChannelMessageSpecificContents() { + prepareChannelRequestMessageSpecificContents(); // Always set correct channel request type -> Don't use soft set getObject().setRequestType(channelRequestType, true); - getObject().setSoftlyWantReply(false); - prepareChannelRequestMessageSpecificContents(); + getObject().setSoftlyWantReply(wantReply); } protected abstract void prepareChannelRequestMessageSpecificContents(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java index 6a6689e4d..ce2e8c22a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java @@ -15,12 +15,11 @@ public class ChannelRequestPtyMessagePreparator extends ChannelRequestMessagePreparator { public ChannelRequestPtyMessagePreparator(Chooser chooser, ChannelRequestPtyMessage message) { - super(chooser, message, ChannelRequestType.PTY_REQ); + super(chooser, message, ChannelRequestType.PTY_REQ, true); } @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setSoftlyWantReply(true); getObject() .setSoftlyTermEnvVariable( chooser.getConfig().getDefaultTermEnvVariable(), true, chooser.getConfig()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestShellMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestShellMessagePreparator.java index cba88fc90..84cd4a255 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestShellMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestShellMessagePreparator.java @@ -16,7 +16,7 @@ public class ChannelRequestShellMessagePreparator public ChannelRequestShellMessagePreparator( Chooser chooser, ChannelRequestShellMessage message) { - super(chooser, message, ChannelRequestType.SHELL); + super(chooser, message, ChannelRequestType.SHELL, true); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSignalMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSignalMessagePreparator.java index 0be27746d..7e18966d3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSignalMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSignalMessagePreparator.java @@ -17,7 +17,7 @@ public class ChannelRequestSignalMessagePreparator public ChannelRequestSignalMessagePreparator( Chooser chooser, ChannelRequestSignalMessage message) { - super(chooser, message, ChannelRequestType.SIGNAL); + super(chooser, message, ChannelRequestType.SIGNAL, false); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java index 04b5b5ce2..4e0bd42dd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java @@ -16,12 +16,11 @@ public class ChannelRequestSubsystemMessagePreparator public ChannelRequestSubsystemMessagePreparator( Chooser chooser, ChannelRequestSubsystemMessage message) { - super(chooser, message, ChannelRequestType.SUBSYSTEM); + super(chooser, message, ChannelRequestType.SUBSYSTEM, true); } @Override public void prepareChannelRequestMessageSpecificContents() { - getObject().setSoftlyWantReply(true); getObject() .setSoftlySubsystemName( chooser.getConfig().getDefaultSubsystemName(), true, chooser.getConfig()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestUnknownMessagePreparator.java index f38b70fa7..be9b55d5b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestUnknownMessagePreparator.java @@ -15,7 +15,7 @@ public class ChannelRequestUnknownMessagePreparator public ChannelRequestUnknownMessagePreparator( Chooser chooser, ChannelRequestUnknownMessage message) { - super(chooser, message, ""); + super(chooser, message, "", true); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestWindowChangeMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestWindowChangeMessagePreparator.java index 4e4021101..27e3e392f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestWindowChangeMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestWindowChangeMessagePreparator.java @@ -16,7 +16,7 @@ public class ChannelRequestWindowChangeMessagePreparator public ChannelRequestWindowChangeMessagePreparator( Chooser chooser, ChannelRequestWindowChangeMessage message) { - super(chooser, message, ChannelRequestType.WINDOW_CHANGE); + super(chooser, message, ChannelRequestType.WINDOW_CHANGE, false); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestX11MessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestX11MessagePreparator.java index ee7aba8cd..0e931bd8a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestX11MessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestX11MessagePreparator.java @@ -15,7 +15,7 @@ public class ChannelRequestX11MessagePreparator extends ChannelRequestMessagePreparator { public ChannelRequestX11MessagePreparator(Chooser chooser, ChannelRequestX11Message message) { - super(chooser, message, ChannelRequestType.X11_REQ); + super(chooser, message, ChannelRequestType.X11_REQ, true); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestXonXoffMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestXonXoffMessagePreparator.java index d00b4c98b..3fcc73f6b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestXonXoffMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestXonXoffMessagePreparator.java @@ -16,7 +16,7 @@ public class ChannelRequestXonXoffMessagePreparator public ChannelRequestXonXoffMessagePreparator( Chooser chooser, ChannelRequestXonXoffMessage message) { - super(chooser, message, ChannelRequestType.XON_XOFF); + super(chooser, message, ChannelRequestType.XON_XOFF, false); } @Override From c118b86761abf7aff2f0c472b5df258c928c35e5 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 19 Dec 2024 17:16:03 +0100 Subject: [PATCH 084/203] Use setSoftly...() for Key Exchange. TODO: For better fuzzing, a method would be nice, that allows to read back the modified fields in key exchange messages to the computations in the context. --- .idea/inspectionProfiles/Project_Default.xml | 22 +++++----- .../nds/sshattacker/core/config/Config.java | 19 ++++++++- .../core/crypto/hash/ExchangeHash.java | 1 - .../keys/parser/CertDsaPublicKeyParser.java | 6 +-- .../keys/parser/CertEcdsaPublicKeyParser.java | 6 +-- .../keys/parser/CertRsaPublicKeyParser.java | 6 +-- .../parser/CertXCurvePublicKeyParser.java | 6 +-- .../X509RsaPublicKeySerializer.java | 20 ++++----- .../core/crypto/util/PublicKeyHelper.java | 4 +- .../message/UserAuthHostbasedMessage.java | 8 +--- .../UserAuthHostbasedMessagePreparator.java | 7 ++-- .../common/ModifiableVariableHolder.java | 1 - .../message/DhGexKeyExchangeGroupMessage.java | 35 ++++++++++++++++ .../message/DhGexKeyExchangeInitMessage.java | 20 +++++++++ .../DhGexKeyExchangeOldRequestMessage.java | 7 +++- .../message/DhGexKeyExchangeReplyMessage.java | 27 +++++++++++- .../DhGexKeyExchangeRequestMessage.java | 19 ++++++--- .../message/DhKeyExchangeInitMessage.java | 20 +++++++++ .../message/DhKeyExchangeReplyMessage.java | 27 +++++++++++- .../message/EcdhKeyExchangeInitMessage.java | 4 +- .../message/EcdhKeyExchangeReplyMessage.java | 12 ++++-- .../message/ExchangeHashSignatureMessage.java | 3 ++ .../transport/message/HostKeyMessage.java | 3 ++ .../message/HybridKeyExchangeInitMessage.java | 7 +++- .../HybridKeyExchangeReplyMessage.java | 16 ++++++-- .../message/RsaKeyExchangeDoneMessage.java | 4 +- .../message/RsaKeyExchangePubkeyMessage.java | 12 +++--- .../message/RsaKeyExchangeSecretMessage.java | 4 +- ...hGexKeyExchangeGroupMessagePreparator.java | 28 +++++-------- ...DhGexKeyExchangeInitMessagePreparator.java | 11 ++--- ...eyExchangeOldRequestMessagePreparator.java | 7 +++- ...hGexKeyExchangeReplyMessagePreparator.java | 27 ++++++------ ...exKeyExchangeRequestMessagePreparator.java | 21 ++++++---- .../DhKeyExchangeInitMessagePreparator.java | 10 ++--- .../DhKeyExchangeReplyMessagePreparator.java | 27 ++++++------ .../EcdhKeyExchangeInitMessagePreparator.java | 7 ++-- ...EcdhKeyExchangeReplyMessagePreparator.java | 27 ++++++------ ...ybridKeyExchangeInitMessagePreperator.java | 20 +++++---- ...bridKeyExchangeReplyMessagePreparator.java | 41 ++++++++++--------- .../RsaKeyExchangeDoneMessagePreparator.java | 10 +++-- ...RsaKeyExchangePubkeyMessagePreparator.java | 28 +++++++++---- ...RsaKeyExchangeSecretMessagePreparator.java | 14 +++---- .../core/protocol/util/KeyExchangeUtil.java | 9 ++-- 43 files changed, 405 insertions(+), 208 deletions(-) diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 4103ec205..2d9224c66 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -40,7 +40,9 @@ - + + + @@ -178,7 +180,6 @@ -

The data of the ChannelDataMessages are parsed into a separate message. It is - * therefore practical to ignore the {@code SSH_MSG_CHANNEL_DATA} and only expect the - * messages that were transmitted via channel data. - * - * @see RFC 4254, - * section 5.2 "Data Transfer" - */ - IGNORE_CHANNEL_DATA_WRAPPER; + IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS; public static Set bundle(ReceiveOption... receiveOptions) { return new HashSet<>(Arrays.asList(receiveOptions)); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java index 78f47ad7a..05cd24d98 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java @@ -183,7 +183,6 @@ public static MessageActionResult handleReceivedBytes( ProtocolMessage message = context.getMessageLayer().parse(parsedPacket.get()); message.adjustContext(context); retrievedPackets.add(parsedPacket.get()); - parsedMessages.add(message); if (message instanceof ChannelDataMessage) { // Parse ChannelDataMessage @@ -191,6 +190,8 @@ public static MessageActionResult handleReceivedBytes( context.getDataMessageLayer().parse((ChannelDataMessage) message); innerMessage.adjustContext(context); parsedMessages.add(innerMessage); + } else { + parsedMessages.add(message); } } dataPointer += parseResult.getParsedByteCount(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java index 0e9c1f307..00fe63cfe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/SendMessageHelper.java @@ -12,6 +12,7 @@ import de.rub.nds.sshattacker.core.packet.layer.AbstractPacketLayer; import de.rub.nds.sshattacker.core.protocol.common.HasSentHandler; import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessage; +import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelDataMessage; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.tlsattacker.transport.TransportHandler; import java.io.IOException; @@ -42,16 +43,18 @@ public static MessageActionResult sendMessage( message.prepare(context.getChooser()); } - ProtocolMessage innerMessage = null; if (message instanceof DataMessage) { // Serialize data message to ChannelDataMessage - innerMessage = message; - if (innerMessage instanceof HasSentHandler) { - ((HasSentHandler) innerMessage).adjustContextAfterSent(context); + if (message instanceof HasSentHandler) { + ((HasSentHandler) message).adjustContextAfterSent(context); } // TODO: decide if we should pass prepareBeforeSending + // serialize also prepares the ChannelDataMessage - message = context.getDataMessageLayer().serialize((DataMessage) message); + ChannelDataMessage messageWrapper = + context.getDataMessageLayer().serialize((DataMessage) message); + ((DataMessage) message).setChannelDataWrapper(messageWrapper); + message = messageWrapper; } AbstractPacket packet = context.getMessageLayer().serialize(message); @@ -62,12 +65,6 @@ public static MessageActionResult sendMessage( ArrayList packetList = new ArrayList<>(1); packetList.add(packet); ArrayList> messageList; - if (innerMessage != null) { - messageList = new ArrayList<>(2); - messageList.add(message); - messageList.add(innerMessage); - return new MessageActionResult(packetList, messageList); - } messageList = new ArrayList<>(1); messageList.add(message); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/SshActionFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/SshActionFactory.java index 92cf457f6..bd5999df9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/SshActionFactory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/SshActionFactory.java @@ -49,7 +49,6 @@ public static MessageAction createDataMessageAction( ((ReceiveAction) action) .setReceiveOptions( Set.of( - ReceiveAction.ReceiveOption.IGNORE_CHANNEL_DATA_WRAPPER, ReceiveAction.ReceiveOption .IGNORE_UNEXPECTED_CHANNEL_WINDOW_ADJUSTS)); } From 63564393a08f81c67973653f8d1e49daccc3ff8c Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 6 Feb 2025 16:07:55 +0100 Subject: [PATCH 137/203] Print a warning if ChannelCloseMessage was received. --- .../connection/handler/ChannelCloseMessageHandler.java | 8 ++++++-- .../handler/ChannelOpenConfirmationMessageHandler.java | 4 ++-- .../handler/ChannelWindowAdjustMessageHandler.java | 4 ++-- .../transport/handler/DisconnectMessageHandler.java | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java index 67115bc49..7cadd2579 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java @@ -33,9 +33,13 @@ public void adjustContext(SshContext context, ChannelCloseMessage object) { if (!channel.isOpen().getValue()) { LOGGER.warn( "{} received but channel with id {} is not open, continuing anyway.", - getClass().getSimpleName(), + object.getClass().getSimpleName(), recipientChannelId); } else { + LOGGER.warn( + "{} received for channel with id {}", + object.getClass().getSimpleName(), + recipientChannelId); channel.setCloseMessageReceived(true); if (!channel.isOpen().getValue()) { channelManager.removeChannelByLocalId(recipientChannelId); @@ -44,7 +48,7 @@ public void adjustContext(SshContext context, ChannelCloseMessage object) { } else { LOGGER.warn( "{} received but no channel with id {} found locally, ignoring request to close the channel.", - getClass().getSimpleName(), + object.getClass().getSimpleName(), recipientChannelId); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenConfirmationMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenConfirmationMessageHandler.java index a12b98317..fbed944d5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenConfirmationMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelOpenConfirmationMessageHandler.java @@ -35,7 +35,7 @@ public void adjustContext(SshContext context, ChannelOpenConfirmationMessage obj if (channel == null) { LOGGER.warn( "{} received but no channel with id {} found locally, creating a new channel from defaults with given channel id.", - getClass().getSimpleName(), + object.getClass().getSimpleName(), recipientChannelId); channel = channelManager.createNewChannelFromDefaults( @@ -61,7 +61,7 @@ public void adjustContextAfterMessageSent( } else { LOGGER.warn( "{} sent but no channel with id {} found locally, ignoring request to confirm to open the channel.", - getClass().getSimpleName(), + object.getClass().getSimpleName(), localChannelId); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelWindowAdjustMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelWindowAdjustMessageHandler.java index 023f534f7..663115a74 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelWindowAdjustMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelWindowAdjustMessageHandler.java @@ -35,7 +35,7 @@ public void adjustContext(SshContext context, ChannelWindowAdjustMessage object) } else { LOGGER.warn( "{} received but no channel with id {} found locally, ignoring request to adjust window of the channel.", - getClass().getSimpleName(), + object.getClass().getSimpleName(), recipientChannelId); } } @@ -51,7 +51,7 @@ public void adjustContextAfterMessageSent( } else { LOGGER.warn( "{} sent but no channel with remote id {} found, ignoring request to adjust window of the channel.", - getClass().getSimpleName(), + object.getClass().getSimpleName(), recipientChannelId); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/DisconnectMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/DisconnectMessageHandler.java index bb5cf0d12..c9896b1ca 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/DisconnectMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/DisconnectMessageHandler.java @@ -22,7 +22,7 @@ public class DisconnectMessageHandler extends SshMessageHandler Date: Thu, 6 Feb 2025 16:30:58 +0100 Subject: [PATCH 138/203] fix getFileOrDirectoryHandle() --- .../java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java index 5d0ac644b..af540d08e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java @@ -237,6 +237,7 @@ public byte[] getFileOrDirectoryHandle() { int resultIdx = random.nextInt(openFileHandles.size() + openDirectoryHandles.size()); if (resultIdx >= openFileHandles.size()) { resultIdx -= openFileHandles.size(); + return openDirectoryHandles.get(resultIdx); } return openFileHandles.get(resultIdx); } From ed2ae0b44b97ba0f2f653afae02108f015fe36d3 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 6 Feb 2025 17:35:24 +0100 Subject: [PATCH 139/203] fix SftpFileAttributesPreparator and change the way getSftpNegotiatedVersion() works --- .../de/rub/nds/sshattacker/core/config/Config.java | 4 ++-- .../holder/SftpFileAttributesPreparator.java | 12 +++++++----- .../holder/SftpFileNameEntryPreparator.java | 2 +- .../SftpRequestFileStatMessagePreparator.java | 3 +-- .../request/SftpRequestStatMessagePreparator.java | 3 +-- .../core/workflow/chooser/DefaultChooser.java | 6 +++++- 6 files changed, 17 insertions(+), 13 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 288216a69..93f5b4aff 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -513,7 +513,7 @@ public class Config implements Serializable { /** * Whether the protocol messages that are sent should be consistent with the negotiated SFTP - * protocol version. + * protocol version. If false the configured sftpNegotiatedVersion will be used. */ private Boolean respectSftpNegotiatedVersion; @@ -1302,7 +1302,7 @@ public Config() { // region SFTP Version Exchange initialization sftpClientVersion = 3; sftpServerVersion = 3; - sftpNegotiatedVersion = 1; + sftpNegotiatedVersion = 4; respectSftpNegotiatedVersion = true; // endregion diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java index 2ba0f6ffa..947e18781 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java @@ -30,7 +30,7 @@ public final void prepare(SftpFileAttributes object, Chooser chooser) { SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED); Config config = chooser.getConfig(); - if (chooser.getSftpNegotiatedVersion() > 3 || !config.getRespectSftpNegotiatedVersion()) { + if (chooser.getSftpNegotiatedVersion() > 3) { object.setSoftlyType(SftpFileType.SSH_FILEXFER_TYPE_REGULAR); } else { object.clearType(); @@ -43,7 +43,7 @@ public final void prepare(SftpFileAttributes object, Chooser chooser) { object.clearSize(); } - if (chooser.getSftpNegotiatedVersion() > 3 || !config.getRespectSftpNegotiatedVersion()) { + if (chooser.getSftpNegotiatedVersion() > 3) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_OWNERGROUP, config)) { object.setSoftlyOwner("ssh-attacker", true, config); @@ -72,7 +72,7 @@ public final void prepare(SftpFileAttributes object, Chooser chooser) { object.clearPermissions(); } - if (chooser.getSftpNegotiatedVersion() > 3 || !config.getRespectSftpNegotiatedVersion()) { + if (chooser.getSftpNegotiatedVersion() > 3) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACCESSTIME, config)) { object.setSoftlyAccessTimeLong(0); } else { @@ -89,6 +89,8 @@ public final void prepare(SftpFileAttributes object, Chooser chooser) { } else { object.clearModifyTimeLong(); } + object.clearAccessTime(); + object.clearModifyTime(); } else { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME, config)) { object.setSoftlyAccessTime(0); @@ -99,7 +101,7 @@ public final void prepare(SftpFileAttributes object, Chooser chooser) { } object.clearAllLongTimes(); } - if (chooser.getSftpNegotiatedVersion() > 3 || !config.getRespectSftpNegotiatedVersion()) { + if (chooser.getSftpNegotiatedVersion() > 3) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SUBSECOND_TIMES, config)) { object.setSoftlyAccessTimeNanoseconds(0); object.setSoftlyCreateTimeNanoseconds(0); @@ -111,7 +113,7 @@ public final void prepare(SftpFileAttributes object, Chooser chooser) { object.clearAllNanoseconds(); } - if (chooser.getSftpNegotiatedVersion() > 3 || !config.getRespectSftpNegotiatedVersion()) { + if (chooser.getSftpNegotiatedVersion() > 3) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACL, config)) { if (object.getAclEntries().isEmpty()) { object.addAclEntry(new SftpAclEntry()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java index 68c74d946..3e6c29833 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java @@ -19,7 +19,7 @@ public final void prepare(SftpFileNameEntry object, Chooser chooser) { Config config = chooser.getConfig(); object.setSoftlyFilename("/etc/passwd", true, config); - if (chooser.getSftpNegotiatedVersion() <= 3 || !config.getRespectSftpNegotiatedVersion()) { + if (chooser.getSftpNegotiatedVersion() <= 3) { object.setSoftlyLongName( "-rwxr-xr-x 1 ssh attacker 348911 Mar 25 14:29 passwd", true, config); } else { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java index 75be97a9d..a8ea98d8b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java @@ -26,8 +26,7 @@ public void prepareRequestSpecificContents(SftpRequestFileStatMessage object, Ch true, chooser.getConfig()); - if (chooser.getSftpNegotiatedVersion() > 3 - || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { + if (chooser.getSftpNegotiatedVersion() > 3) { object.setSoftlyFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); } else { object.clearFlags(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java index fdeba8bde..e54b63842 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java @@ -23,8 +23,7 @@ public SftpRequestStatMessagePreparator() { public void prepareRequestSpecificContents(SftpRequestStatMessage object, Chooser chooser) { object.setSoftlyPath("/etc/passwd", true, chooser.getConfig()); - if (chooser.getSftpNegotiatedVersion() > 3 - || !chooser.getConfig().getRespectSftpNegotiatedVersion()) { + if (chooser.getSftpNegotiatedVersion() > 3) { object.setSoftlyFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); } else { object.clearFlags(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java index 753fbd159..ccebd1c0e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java @@ -1091,7 +1091,11 @@ public Integer getSftpServerVersion() { */ @Override public Integer getSftpNegotiatedVersion() { - return context.getSftpNegotiatedVersion().orElse(config.getSftpNegotiatedVersion()); + if (config.getRespectSftpNegotiatedVersion()) { + return context.getSftpNegotiatedVersion().orElse(config.getSftpNegotiatedVersion()); + } else { + return config.getSftpNegotiatedVersion(); + } } // endregion From 8d4ed4105290edee05e02785cb532cd68abaf399 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 6 Feb 2025 19:15:28 +0100 Subject: [PATCH 140/203] Try to fix NullPointerException if we somehow messed up parsing. This should be fixed deeper. But not sure yet where the error is. Also change getSftpNegotiatedVersion() again to return the correct negotiated version in case of parsing. --- .../sshattacker/core/data/sftp/SftpMessageParser.java | 5 ++++- .../sftp/parser/holder/SftpFileAttributesParser.java | 8 ++++---- .../sftp/parser/holder/SftpFileNameEntryParser.java | 2 +- .../request/SftpRequestFileStatMessageParser.java | 2 +- .../parser/request/SftpRequestStatMessageParser.java | 2 +- .../holder/SftpFileAttributesPreparator.java | 11 ++++++----- .../holder/SftpFileNameEntryPreparator.java | 2 +- .../request/SftpRequestFileStatMessagePreparator.java | 2 +- .../request/SftpRequestStatMessagePreparator.java | 2 +- .../sshattacker/core/workflow/chooser/Chooser.java | 2 +- .../core/workflow/chooser/DefaultChooser.java | 8 +++++--- 11 files changed, 26 insertions(+), 20 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java index 74aada197..d8e8ad7d1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java @@ -10,6 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedMessage; import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUnknownMessage; import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.*; @@ -53,7 +54,9 @@ private void parsePacketType() { public static SftpMessage delegateParsing(AbstractDataPacket packet, SshContext context) { byte[] raw = packet.getPayload().getValue(); - + if (raw.length == 0) { + return new SftpUnknownMessage(); + } try { switch (SftpPacketTypeConstant.fromId(raw[0])) { case SSH_FXP_INIT: diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileAttributesParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileAttributesParser.java index 03ae84f86..587a86ff5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileAttributesParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileAttributesParser.java @@ -171,7 +171,7 @@ private void parseExtendedAttributes() { public final SftpFileAttributes parse() { parseFlags(); - if (chooser.getSftpNegotiatedVersion() > 3) { + if (chooser.getSftpNegotiatedVersion(true) > 3) { parseType(); } @@ -179,7 +179,7 @@ public final SftpFileAttributes parse() { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE)) { parseSize(); } - if (chooser.getSftpNegotiatedVersion() > 3) { + if (chooser.getSftpNegotiatedVersion(true) > 3) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_OWNERGROUP)) { parseOwnerGroup(); } @@ -191,7 +191,7 @@ public final SftpFileAttributes parse() { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS)) { parsePermissions(); } - if (chooser.getSftpNegotiatedVersion() > 3) { + if (chooser.getSftpNegotiatedVersion(true) > 3) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACCESSTIME)) { parseAccessTime(); } @@ -216,7 +216,7 @@ public final SftpFileAttributes parse() { } } - if (chooser.getSftpNegotiatedVersion() > 3) { + if (chooser.getSftpNegotiatedVersion(true) > 3) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACL)) { parseAcl(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileNameEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileNameEntryParser.java index 3549b606a..c24e3d679 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileNameEntryParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileNameEntryParser.java @@ -44,7 +44,7 @@ private void parseFilename() { } private void parseLongName() { - if (chooser.getSftpNegotiatedVersion() <= 3) { + if (chooser.getSftpNegotiatedVersion(true) <= 3) { int longNameLength = parseIntField(); nameEntry.setLongNameLength(longNameLength); LOGGER.debug("LongName length: {}", longNameLength); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java index 177cce76c..257dac1cf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java @@ -35,7 +35,7 @@ public SftpRequestFileStatMessage createMessage() { } private void parseFlags() { - if (chooser.getSftpNegotiatedVersion() > 3) { + if (chooser.getSftpNegotiatedVersion(true) > 3) { int flags = parseIntField(); message.setFlags(flags); LOGGER.debug("Flags: {}", flags); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java index 780de0d07..32159eda7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java @@ -35,7 +35,7 @@ public SftpRequestStatMessage createMessage() { } private void parseFlags() { - if (chooser.getSftpNegotiatedVersion() > 3) { + if (chooser.getSftpNegotiatedVersion(true) > 3) { int flags = parseIntField(); message.setFlags(flags); LOGGER.debug("Flags: {}", flags); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java index 947e18781..6ee8ab67e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java @@ -30,7 +30,7 @@ public final void prepare(SftpFileAttributes object, Chooser chooser) { SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED); Config config = chooser.getConfig(); - if (chooser.getSftpNegotiatedVersion() > 3) { + if (chooser.getSftpNegotiatedVersion(false) > 3) { object.setSoftlyType(SftpFileType.SSH_FILEXFER_TYPE_REGULAR); } else { object.clearType(); @@ -43,7 +43,7 @@ public final void prepare(SftpFileAttributes object, Chooser chooser) { object.clearSize(); } - if (chooser.getSftpNegotiatedVersion() > 3) { + if (chooser.getSftpNegotiatedVersion(false) > 3) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_OWNERGROUP, config)) { object.setSoftlyOwner("ssh-attacker", true, config); @@ -72,7 +72,7 @@ public final void prepare(SftpFileAttributes object, Chooser chooser) { object.clearPermissions(); } - if (chooser.getSftpNegotiatedVersion() > 3) { + if (chooser.getSftpNegotiatedVersion(false) > 3) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACCESSTIME, config)) { object.setSoftlyAccessTimeLong(0); } else { @@ -101,7 +101,8 @@ public final void prepare(SftpFileAttributes object, Chooser chooser) { } object.clearAllLongTimes(); } - if (chooser.getSftpNegotiatedVersion() > 3) { + + if (chooser.getSftpNegotiatedVersion(false) > 3) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SUBSECOND_TIMES, config)) { object.setSoftlyAccessTimeNanoseconds(0); object.setSoftlyCreateTimeNanoseconds(0); @@ -113,7 +114,7 @@ public final void prepare(SftpFileAttributes object, Chooser chooser) { object.clearAllNanoseconds(); } - if (chooser.getSftpNegotiatedVersion() > 3) { + if (chooser.getSftpNegotiatedVersion(false) > 3) { if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACL, config)) { if (object.getAclEntries().isEmpty()) { object.addAclEntry(new SftpAclEntry()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java index 3e6c29833..06fd5a93d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java @@ -19,7 +19,7 @@ public final void prepare(SftpFileNameEntry object, Chooser chooser) { Config config = chooser.getConfig(); object.setSoftlyFilename("/etc/passwd", true, config); - if (chooser.getSftpNegotiatedVersion() <= 3) { + if (chooser.getSftpNegotiatedVersion(false) <= 3) { object.setSoftlyLongName( "-rwxr-xr-x 1 ssh attacker 348911 Mar 25 14:29 passwd", true, config); } else { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java index a8ea98d8b..633f60ac4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java @@ -26,7 +26,7 @@ public void prepareRequestSpecificContents(SftpRequestFileStatMessage object, Ch true, chooser.getConfig()); - if (chooser.getSftpNegotiatedVersion() > 3) { + if (chooser.getSftpNegotiatedVersion(false) > 3) { object.setSoftlyFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); } else { object.clearFlags(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java index e54b63842..ce5ee6944 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java @@ -23,7 +23,7 @@ public SftpRequestStatMessagePreparator() { public void prepareRequestSpecificContents(SftpRequestStatMessage object, Chooser chooser) { object.setSoftlyPath("/etc/passwd", true, chooser.getConfig()); - if (chooser.getSftpNegotiatedVersion() > 3) { + if (chooser.getSftpNegotiatedVersion(false) > 3) { object.setSoftlyFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); } else { object.clearFlags(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java index 3b730b987..5dfb4a006 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java @@ -268,7 +268,7 @@ public CompressionMethod getReceiveCompressionMethod() { public abstract Integer getSftpServerVersion(); - public abstract Integer getSftpNegotiatedVersion(); + public abstract Integer getSftpNegotiatedVersion(boolean forParsing); // endregion diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java index ccebd1c0e..e083c373e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java @@ -1085,13 +1085,15 @@ public Integer getSftpServerVersion() { /** * Retrieves the SFTP negotiated version from context. If no version was received (i.e. - * out-of-order workflow), the SFTP negotiated version from config will be returned. + * out-of-order workflow), the SFTP negotiated version from config will be returned. If + * respectSftpNegotiatedVersion is false the configured sftpNegotiatedVersion is returned. If + * forParsing is true, respectSftpNegotiatedVersion is ignored. * * @return The SFTP negotiated protocol version */ @Override - public Integer getSftpNegotiatedVersion() { - if (config.getRespectSftpNegotiatedVersion()) { + public Integer getSftpNegotiatedVersion(boolean forParsing) { + if (forParsing || config.getRespectSftpNegotiatedVersion()) { return context.getSftpNegotiatedVersion().orElse(config.getSftpNegotiatedVersion()); } else { return config.getSftpNegotiatedVersion(); From d9aa1480fa20afa92d14693d79263ef4b38684e0 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Fri, 7 Feb 2025 10:14:16 +0100 Subject: [PATCH 141/203] Add note about cause of parsing error. --- .../java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java index f76f8960e..ca0109dce 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java @@ -102,6 +102,8 @@ public DataMessage parse(ChannelDataMessage message) { if (resultMessage.getCompleteResultingMessage().getValue().length < parsedPacket.get().getPayload().getValue().length) { + // This usually means that we have not implemented the parser for the negotiated + // SFTP version. LOGGER.warn( "Data message did not consume complete data packet. Only parsed {} of {} bytes.", resultMessage.getCompleteResultingMessage().getValue().length, From b6ef1644747d5deaf46897bbbce3dbcbe107b04b Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Fri, 7 Feb 2025 16:22:18 +0100 Subject: [PATCH 142/203] Put connections and actions inside a workflow trace into a wrapper. Warn also about a Connection EOF message. --- .../handler/ChannelEofMessageHandler.java | 27 ++++++++++++++++++- .../core/workflow/WorkflowTrace.java | 2 ++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelEofMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelEofMessageHandler.java index 74a64daa2..bd65bde20 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelEofMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelEofMessageHandler.java @@ -8,6 +8,8 @@ package de.rub.nds.sshattacker.core.protocol.connection.handler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; +import de.rub.nds.sshattacker.core.protocol.connection.Channel; +import de.rub.nds.sshattacker.core.protocol.connection.ChannelManager; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelEofMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelEofMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelEofMessagePreparator; @@ -18,7 +20,30 @@ public class ChannelEofMessageHandler extends SshMessageHandler send close channel message + } + } else { + LOGGER.warn( + "{} received but no channel with id {} found locally.", + object.getClass().getSimpleName(), + recipientChannelId); + } } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTrace.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTrace.java index fd5b628c5..8d8f4e70b 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTrace.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTrace.java @@ -67,6 +67,7 @@ public static WorkflowTrace copy(WorkflowTrace orig) { return copy; } + @XmlElementWrapper @XmlElements({ @XmlElement(type = AliasedConnection.class, name = "AliasedConnection"), @XmlElement(type = InboundConnection.class, name = "InboundConnection"), @@ -75,6 +76,7 @@ public static WorkflowTrace copy(WorkflowTrace orig) { private ArrayList connections = new ArrayList<>(); @HoldsModifiableVariable + @XmlElementWrapper @XmlElements({ @XmlElement(type = SendAction.class, name = "Send"), @XmlElement(type = ReceiveAction.class, name = "Receive"), From a2d9151724f9bd5273f21c72e30ccbf5bf1fd5f7 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 8 Feb 2025 09:23:24 +0100 Subject: [PATCH 143/203] Removed versionExchangeComplete from the sshContext, since it was not implemented and could lead someone to use it. --- .../de/rub/nds/sshattacker/core/state/SshContext.java | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java index 419eef989..34cc0dcb1 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java @@ -379,9 +379,6 @@ public class SshContext { /** If set to true, an SSH_MSG_DISCONNECT has been received from the remote peer */ private boolean disconnectMessageReceived; - /** If set to true, a version exchange message was sent by each side */ - private boolean versionExchangeComplete; - // region Constructors and Initialization public SshContext() { this(Config.createConfig()); @@ -1260,14 +1257,6 @@ public void setDisconnectMessageReceived(Boolean disconnectMessageReceived) { this.disconnectMessageReceived = disconnectMessageReceived; } - public boolean isVersionExchangeComplete() { - return versionExchangeComplete; - } - - public void setVersionExchangeComplete(Boolean complete) { - versionExchangeComplete = complete; - } - public boolean isClient() { return connection.getLocalConnectionEndType() == ConnectionEndType.CLIENT; } From 1e822d4802e197e3bb844f3d25bb8db04d76f378 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 8 Feb 2025 12:31:20 +0100 Subject: [PATCH 144/203] Added option to reopen a SFTP channel in client mode if it was closed from the server. Added possibility to execute dynamically generated actions, that were generated during execution of the workflow trace. --- .../nds/sshattacker/core/config/Config.java | 27 ++++++++ .../handler/ChannelCloseMessageHandler.java | 43 +++++++++++- .../sshattacker/core/state/SshContext.java | 33 +++++++++ .../workflow/DefaultWorkflowExecutor.java | 68 ++++++++++++++++--- .../core/workflow/action/ReceiveAction.java | 16 ++++- 5 files changed, 173 insertions(+), 14 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 93f5b4aff..fe29bdd7b 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -223,6 +223,7 @@ public class Config implements Serializable { // region KeyExchange // TODO: Would be nice to have an option to reuse ephemeral keys during key exchange. // TODO: Would be nice to have an option to disable signature checks + // TODO: We could replace Integer and Boolean with primitives /** * Fallback of minimal acceptable DH group size as reported in the SSH_MSG_KEX_DH_GEX_REQUEST * message @@ -388,6 +389,12 @@ public class Config implements Serializable { /** Default channel values including local channel id and window size */ private ChannelDefaults channelDefaults; + /** + * Whether dynamic actions should be generated to reopen a channel if it was closed. + *

Is currently only implement for Client mode and SFTP subsystem + */ + private Boolean reopenChannelOnClose = true; + /** * Fallback for the wantReply field of messages extending the SSH_MSG_GLOBAL_REQUEST or * SSH_MSG_CHANNEL_REQUEST messages @@ -675,6 +682,8 @@ public class Config implements Serializable { */ private Boolean stopTraceAfterUnexpected = false; + private Boolean allowDynamicGenerationOfActions = true; + // endregion // region ReceiveAction @@ -1520,6 +1529,7 @@ public Config(Config other) { } channelCommand = other.channelCommand; channelDefaults = other.channelDefaults != null ? other.channelDefaults.createCopy() : null; + reopenChannelOnClose = other.reopenChannelOnClose; replyWanted = other.replyWanted; defaultVariableName = other.defaultVariableName; defaultVariableValue = other.defaultVariableValue; @@ -1577,6 +1587,7 @@ public Config(Config other) { resetClientSourcePort = other.resetClientSourcePort; retryFailedClientTcpSocketInitialization = other.retryFailedClientTcpSocketInitialization; stopTraceAfterUnexpected = other.stopTraceAfterUnexpected; + allowDynamicGenerationOfActions = other.allowDynamicGenerationOfActions; quickReceive = other.quickReceive; endReceivingEarly = other.endReceivingEarly; receiveMaximumBytes = other.receiveMaximumBytes; @@ -2248,6 +2259,10 @@ public ChannelDefaults getChannelDefaults() { return channelDefaults; } + public Boolean getReopenChannelOnClose() { + return reopenChannelOnClose; + } + public String getDefaultVariableValue() { return defaultVariableValue; } @@ -2302,6 +2317,10 @@ public void setChannelDefaults(ChannelDefaults channelDefaults) { this.channelDefaults = channelDefaults; } + public void setReopenChannelOnClose(Boolean reopenChannelOnClose) { + this.reopenChannelOnClose = reopenChannelOnClose; + } + public void setDefaultVariableValue(String defaultVariableValue) { this.defaultVariableValue = defaultVariableValue; } @@ -2480,6 +2499,10 @@ public Boolean getStopTraceAfterUnexpected() { return stopTraceAfterUnexpected; } + public Boolean getAllowDynamicGenerationOfActions() { + return allowDynamicGenerationOfActions; + } + // endregion // region Setters for Workflow settings @@ -2552,6 +2575,10 @@ public void setStopTraceAfterUnexpected(Boolean stopTraceAfterUnexpected) { this.stopTraceAfterUnexpected = stopTraceAfterUnexpected; } + public void setAllowDynamicGenerationOfActions(Boolean allowDynamicGenerationOfActions) { + this.allowDynamicGenerationOfActions = allowDynamicGenerationOfActions; + } + // endregion // region Getters for ReceiveAction diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java index 7cadd2579..0f65479b5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java @@ -7,15 +7,23 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; +import de.rub.nds.sshattacker.core.config.Config; +import de.rub.nds.sshattacker.core.constants.ChannelDataType; +import de.rub.nds.sshattacker.core.constants.ChannelType; +import de.rub.nds.sshattacker.core.constants.RunningModeType; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.Channel; import de.rub.nds.sshattacker.core.protocol.connection.ChannelManager; -import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelCloseMessage; +import de.rub.nds.sshattacker.core.protocol.connection.message.*; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelCloseMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelCloseMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.workflow.action.ReceiveAction; +import de.rub.nds.sshattacker.core.workflow.action.SendAction; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -43,6 +51,9 @@ public void adjustContext(SshContext context, ChannelCloseMessage object) { channel.setCloseMessageReceived(true); if (!channel.isOpen().getValue()) { channelManager.removeChannelByLocalId(recipientChannelId); + } else { + // The channel is still open, because we have not yet closed it. + generateDynamicActions(context, channel); } } } else { @@ -53,6 +64,36 @@ public void adjustContext(SshContext context, ChannelCloseMessage object) { } } + private static void generateDynamicActions(SshContext context, Channel channel) { + Config config = context.getConfig(); + if (config.getAllowDynamicGenerationOfActions() + && config.getReopenChannelOnClose() + && config.getDefaultRunningMode() == RunningModeType.CLIENT) { + + // Generate actions to close the channel and reopen it. + String connectionAlias = config.getDefaultClientConnection().getAlias(); + if (channel.getChannelType() == ChannelType.SESSION) { + context.addDynamicGeneratedAction( + new SendAction( + connectionAlias, + new ChannelCloseMessage(), + new ChannelOpenSessionMessage())); + context.addDynamicGeneratedAction( + new ReceiveAction(connectionAlias, new ChannelOpenConfirmationMessage())); + if (channel.getExpectedDataType() == ChannelDataType.SUBSYSTEM_SFTP) { + context.addDynamicGeneratedAction( + new SendAction(connectionAlias, new ChannelRequestSubsystemMessage())); + context.addDynamicGeneratedAction( + new ReceiveAction(connectionAlias, new ChannelSuccessMessage())); + context.addDynamicGeneratedAction( + new SendAction(connectionAlias, new SftpInitMessage())); + context.addDynamicGeneratedAction( + new ReceiveAction(connectionAlias, new SftpVersionMessage())); + } + } + } + } + @Override public void adjustContextAfterMessageSent(SshContext context, ChannelCloseMessage object) { ChannelManager channelManager = context.getChannelManager(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java index 34cc0dcb1..d88f21777 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java @@ -27,6 +27,7 @@ import de.rub.nds.sshattacker.core.protocol.common.layer.MessageLayer; import de.rub.nds.sshattacker.core.protocol.connection.ChannelManager; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.AbstractExtension; +import de.rub.nds.sshattacker.core.workflow.action.SshAction; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import de.rub.nds.sshattacker.core.workflow.chooser.ChooserFactory; import de.rub.nds.tlsattacker.transport.ConnectionEndType; @@ -379,6 +380,14 @@ public class SshContext { /** If set to true, an SSH_MSG_DISCONNECT has been received from the remote peer */ private boolean disconnectMessageReceived; + /** + * Actions that should be executed and injected into the workflow trace of the state that holds + * this ssh context. The actions should be executed by the workflow executor before the next + * official workflow action is executed and should be inserted into the workflow trace at the + * correct position for logging purposes. + */ + private ArrayList dynamicGeneratedActions; + // region Constructors and Initialization public SshContext() { this(Config.createConfig()); @@ -1257,6 +1266,30 @@ public void setDisconnectMessageReceived(Boolean disconnectMessageReceived) { this.disconnectMessageReceived = disconnectMessageReceived; } + public ArrayList getDynamicGeneratedActions() { + return dynamicGeneratedActions; + } + + public void addDynamicGeneratedActions(ArrayList dynamicGeneratedActions) { + if (this.dynamicGeneratedActions == null) { + this.dynamicGeneratedActions = new ArrayList<>(); + } + this.dynamicGeneratedActions.addAll(dynamicGeneratedActions); + } + + public void addDynamicGeneratedAction(SshAction dynamicGeneratedAction) { + if (dynamicGeneratedActions == null) { + dynamicGeneratedActions = new ArrayList<>(); + } + dynamicGeneratedActions.add(dynamicGeneratedAction); + } + + public void clearDynamicGeneratedActions() { + if (dynamicGeneratedActions != null) { + dynamicGeneratedActions.clear(); + } + } + public boolean isClient() { return connection.getLocalConnectionEndType() == ConnectionEndType.CLIENT; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/DefaultWorkflowExecutor.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/DefaultWorkflowExecutor.java index 88a268598..b40967050 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/DefaultWorkflowExecutor.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/DefaultWorkflowExecutor.java @@ -14,7 +14,9 @@ import de.rub.nds.sshattacker.core.workflow.action.ReceivingAction; import de.rub.nds.sshattacker.core.workflow.action.SshAction; import de.rub.nds.sshattacker.core.workflow.action.executor.WorkflowExecutorType; +import java.util.ArrayList; import java.util.List; +import java.util.ListIterator; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -41,23 +43,20 @@ public void executeWorkflow() throws WorkflowExecutionException { state.setStartTimestamp(System.currentTimeMillis()); List sshActions = state.getWorkflowTrace().getSshActions(); - for (SshAction action : sshActions) { - if (config.isStopActionsAfterDisconnect() && hasReceivedDisconnectMessage()) { - LOGGER.debug( - "Skipping all Actions, received DisconnectMessage, StopActionsAfterDisconnect active"); + ListIterator iterator = sshActions.listIterator(); + while (iterator.hasNext()) { + SshAction action = iterator.next(); + if (checkShouldStop()) { break; } + if (config.isStopReceivingAfterDisconnect() && hasReceivedDisconnectMessage() && action instanceof ReceivingAction) { LOGGER.debug( - "Skipping all ReceiveActions, received FatalAlert, StopActionsAfterFatal active"); - break; - } - if (config.getStopActionsAfterIOException() && hasReceivedTransportHandlerException()) { - LOGGER.debug( - "Skipping all Actions, received IO Exception, StopActionsAfterIOException active"); - break; + "Skipping all ReceiveActions, received DisconnectMessage, StopReceivingAfterDisconnect active"); + // Not sure if it really makes sense to keep sending data + continue; } try { @@ -66,6 +65,13 @@ && hasReceivedDisconnectMessage() continue; } + // During the execution of the workflow trace, each executed action can generate new + // dynamic actions that should be executed before the next action defined in the + // workflow trace. + if (config.getAllowDynamicGenerationOfActions()) { + executeDynamicGeneratedActions(iterator); + } + if (config.getStopTraceAfterUnexpected() && !action.executedAsPlanned()) { LOGGER.debug("Skipping all Actions, action did not execute as planned."); break; @@ -94,4 +100,44 @@ && hasReceivedDisconnectMessage() LOGGER.trace("Error during AfterExecutionCallback", ex); } } + + /** + * All executed dynamically generated actions are added to the workflow trace at the position + * before the next regular action. + */ + private void executeDynamicGeneratedActions(ListIterator iterator) { + for (SshContext sshContext : state.getAllSshContexts()) { + ArrayList dynamicGeneratedActions = sshContext.getDynamicGeneratedActions(); + if (dynamicGeneratedActions != null) { + for (SshAction dynamicAction : dynamicGeneratedActions) { + if (checkShouldStop()) { + break; + } + + try { + executeAction(dynamicAction, state); + iterator.add(dynamicAction); + } catch (SkipActionException ex) { + LOGGER.debug("Dynamic generated action was not executed."); + } + } + dynamicGeneratedActions.clear(); + } + } + } + + private boolean checkShouldStop() { + if (config.isStopActionsAfterDisconnect() && hasReceivedDisconnectMessage()) { + LOGGER.debug( + "Skipping all Actions, received DisconnectMessage, StopActionsAfterDisconnect active"); + return true; + } + + if (config.getStopActionsAfterIOException() && hasReceivedTransportHandlerException()) { + LOGGER.debug( + "Skipping all Actions, received IO Exception, StopActionsAfterIOException active"); + return true; + } + return false; + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java index bacbbd755..35ca0d081 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java @@ -278,6 +278,10 @@ public ReceiveAction( setReceiveOptions(receiveOptions); } + public ReceiveAction(Set receiveOptions, List> messages) { + this(receiveOptions, new ArrayList<>(messages)); + } + public ReceiveAction(Set receiveOptions, ProtocolMessage... messages) { this(receiveOptions, new ArrayList<>(Arrays.asList(messages))); } @@ -287,6 +291,10 @@ public ReceiveAction( this(Set.of(receiveOption), expectedMessages); } + public ReceiveAction(ReceiveOption receiveOption, List> messages) { + this(receiveOption, new ArrayList<>(messages)); + } + public ReceiveAction(ReceiveOption receiveOption, ProtocolMessage... messages) { this(receiveOption, new ArrayList<>(Arrays.asList(messages))); } @@ -300,6 +308,10 @@ public ReceiveAction(String connectionAlias, ArrayList> messa expectedMessages = messages; } + public ReceiveAction(String connectionAlias, List> messages) { + this(connectionAlias, new ArrayList<>(messages)); + } + public ReceiveAction(String connectionAlias, ProtocolMessage... messages) { this(connectionAlias, new ArrayList<>(Arrays.asList(messages))); } @@ -334,13 +346,13 @@ public ReceiveAction createCopy() { @Override public void execute(State state) throws WorkflowExecutionException { - SshContext context = state.getSshContext(getConnectionAlias()); + SshContext context = state.getSshContext(connectionAlias); if (isExecuted()) { throw new WorkflowExecutionException("Action already executed!"); } - LOGGER.debug("Receiving messages for connection alias '{}'...", getConnectionAlias()); + LOGGER.debug("Receiving messages for connection alias '{}'...", connectionAlias); MessageActionResult result = ReceiveMessageHelper.receiveMessages(context, expectedMessages); messages = result.getMessageList(); From 505fd6c47d42aa2eb61da7996ada8e2b2a547993 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 8 Feb 2025 13:01:12 +0100 Subject: [PATCH 145/203] Use old local channel ID, if reopening a channel. --- .../java/de/rub/nds/sshattacker/core/config/Config.java | 3 ++- .../connection/handler/ChannelCloseMessageHandler.java | 7 +++++-- .../protocol/connection/message/ChannelCloseMessage.java | 5 +++++ .../connection/message/ChannelOpenSessionMessage.java | 5 +++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index fe29bdd7b..235615a54 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -391,7 +391,8 @@ public class Config implements Serializable { /** * Whether dynamic actions should be generated to reopen a channel if it was closed. - *

Is currently only implement for Client mode and SFTP subsystem + * + *

Is currently only implement for Client mode and SFTP subsystem */ private Boolean reopenChannelOnClose = true; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java index 0f65479b5..e142ffcad 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java @@ -73,13 +73,16 @@ private static void generateDynamicActions(SshContext context, Channel channel) // Generate actions to close the channel and reopen it. String connectionAlias = config.getDefaultClientConnection().getAlias(); if (channel.getChannelType() == ChannelType.SESSION) { + context.addDynamicGeneratedAction( new SendAction( connectionAlias, - new ChannelCloseMessage(), - new ChannelOpenSessionMessage())); + new ChannelCloseMessage(channel.getLocalChannelId().getValue()), + new ChannelOpenSessionMessage( + channel.getLocalChannelId().getValue()))); context.addDynamicGeneratedAction( new ReceiveAction(connectionAlias, new ChannelOpenConfirmationMessage())); + if (channel.getExpectedDataType() == ChannelDataType.SUBSYSTEM_SFTP) { context.addDynamicGeneratedAction( new SendAction(connectionAlias, new ChannelRequestSubsystemMessage())); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelCloseMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelCloseMessage.java index 3e4cff20d..71d71ddba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelCloseMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelCloseMessage.java @@ -19,6 +19,11 @@ public ChannelCloseMessage() { super(); } + public ChannelCloseMessage(int localChannelId) { + super(); + setConfigLocalChannelId(localChannelId); + } + public ChannelCloseMessage(ChannelCloseMessage other) { super(other); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenSessionMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenSessionMessage.java index 3aaea9067..b636d882d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenSessionMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenSessionMessage.java @@ -17,6 +17,11 @@ public ChannelOpenSessionMessage() { super(); } + public ChannelOpenSessionMessage(int localChannelId) { + super(); + setConfigLocalChannelId(localChannelId); + } + public ChannelOpenSessionMessage(ChannelOpenSessionMessage other) { super(other); } From 052c0484944f8029d9043d21cf1bb8152678a51a Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 8 Feb 2025 14:04:12 +0100 Subject: [PATCH 146/203] Print warning about ChannelCloseMessage only if we have not handled it correctly. --- .../handler/ChannelCloseMessageHandler.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java index e142ffcad..4123404a7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java @@ -44,16 +44,18 @@ public void adjustContext(SshContext context, ChannelCloseMessage object) { object.getClass().getSimpleName(), recipientChannelId); } else { - LOGGER.warn( - "{} received for channel with id {}", - object.getClass().getSimpleName(), - recipientChannelId); channel.setCloseMessageReceived(true); if (!channel.isOpen().getValue()) { channelManager.removeChannelByLocalId(recipientChannelId); } else { // The channel is still open, because we have not yet closed it. - generateDynamicActions(context, channel); + if (!generateDynamicActions(context, channel)) { + // In the case that we have not processed the closing msg properly + LOGGER.warn( + "{} received for channel with id {}", + object.getClass().getSimpleName(), + channel.getLocalChannelId()); + } } } } else { @@ -64,7 +66,8 @@ public void adjustContext(SshContext context, ChannelCloseMessage object) { } } - private static void generateDynamicActions(SshContext context, Channel channel) { + /** Returns true if dynamic actions were generated */ + private static boolean generateDynamicActions(SshContext context, Channel channel) { Config config = context.getConfig(); if (config.getAllowDynamicGenerationOfActions() && config.getReopenChannelOnClose() @@ -93,8 +96,10 @@ private static void generateDynamicActions(SshContext context, Channel channel) context.addDynamicGeneratedAction( new ReceiveAction(connectionAlias, new SftpVersionMessage())); } + return true; } } + return false; } @Override From fbdb6a74e32c038bfa85d2b2490b7b627e5dc37d Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 8 Feb 2025 21:37:20 +0100 Subject: [PATCH 147/203] Run formatter Remove obsolet comment in WorkflowExecutorRunnable. Set JDK21 in Project Run configurations. --- .idea/runConfigurations/Client___KEX_only__DH_.xml | 2 +- .../runConfigurations/Client___KEX_only__DH_GEX_.xml | 2 +- .../Client___KEX_only__Dynamic_.xml | 2 +- .idea/runConfigurations/Client___KEX_only__ECDH_.xml | 2 +- .idea/runConfigurations/Client___KEX_only__RSA_.xml | 2 +- .../attacks/pkcs1/util/OaepConverter.java | 2 +- .../core/data/sftp/SftpMessageParser.java | 8 ++++---- .../data/sftp/parser/SftpHandshakeMessageParser.java | 4 ++-- .../core/workflow/WorkflowExecutorRunnable.java | 12 +----------- 9 files changed, 13 insertions(+), 23 deletions(-) diff --git a/.idea/runConfigurations/Client___KEX_only__DH_.xml b/.idea/runConfigurations/Client___KEX_only__DH_.xml index 266daeae0..45f14a67a 100644 --- a/.idea/runConfigurations/Client___KEX_only__DH_.xml +++ b/.idea/runConfigurations/Client___KEX_only__DH_.xml @@ -1,6 +1,6 @@ -

rfc3066 was replaced by rfc4646. But the tags are still valid + * + *

LanguageTag are mostly not used by SSH servers, but they can. + */ + // [ RFC 3066 ] + ART_LOJBAN("art-lojban"), + AZ_ARAB("az-Arab"), + AZ_CYRL("az-Cyrl"), + AZ_LATN("az-Latn"), + BE_LATN("be-Latn"), + BS_CYRL("bs-Cyrl"), + BS_LATN("bs-Latn"), + CEL_GAULISH("cel-gaulish"), + DE_1901("de-1901"), + DE_1996("de-1996"), + DE_AT_1901("de-AT-1901"), + DE_AT_1996("de-AT-1996"), + DE_CH_1901("de-CH-1901"), + DE_CH_1996("de-CH-1996"), + DE_DE_1901("de-DE-1901"), + DE_DE_1996("de-DE-1996"), + EN_BOONT("en-boont"), + EN_GB_OED("en-GB-oed"), + EN_SCOUSE("en-scouse"), + ES_419("es-419"), + I_AMI("i-ami"), + I_BNN("i-bnn"), + I_DEFAULT("i-default"), + I_ENOCHIAN("i-enochian"), + I_HAK("i-hak"), + I_KLINGON("i-klingon"), + I_LUX("i-lux"), + I_MINGO("i-mingo"), + I_NAVAJO("i-navajo"), + I_PWN("i-pwn"), + I_TAO("i-tao"), + I_TAY("i-tay"), + I_TSU("i-tsu"), + IU_CANS("iu-Cans"), + IU_LATN("iu-Latn"), + MN_CYRL("mn-Cyrl"), + MN_MONG("mn-Mong"), + NO_BOK("no-bok"), + NO_NYN("no-nyn"), + SGN_BE_FR("sgn-BE-fr"), + SGN_BE_NL("sgn-BE-nl"), + SGN_BR("sgn-BR"), + SGN_CH_DE("sgn-CH-de"), + SGN_CO("sgn-CO"), + SGN_DE("sgn-DE"), + SGN_DK("sgn-DK"), + SGN_ES("sgn-ES"), + SGN_FR("sgn-FR"), + SGN_GB("sgn-GB"), + SGN_GR("sgn-GR"), + SGN_IE("sgn-IE"), + SGN_IT("sgn-IT"), + SGN_JP("sgn-JP"), + SGN_MX("sgn-MX"), + SGN_NL("sgn-NL"), + SGN_NO("sgn-NO"), + SGN_PT("sgn-PT"), + SGN_SE("sgn-SE"), + SGN_US("sgn-US"), + SGN_ZA("sgn-ZA"), + SL_ROZAJ("sl-rozaj"), + SR_CYRL("sr-Cyrl"), + SR_LATN("sr-Latn"), + TG_ARAB("tg-Arab"), + TG_CYRL("tg-Cyrl"), + UZ_CYRL("uz-Cyrl"), + UZ_LATN("uz-Latn"), + YI_LATN("yi-latn"), + ZH_CMN("zh-cmn"), + ZH_CMN_HANS("zh-cmn-Hans"), + ZH_CMN_HANT("zh-cmn-Hant"), + ZH_GAN("zh-gan"), + ZH_GUOYU("zh-guoyu"), + ZH_HAKKA("zh-hakka"), + ZH_HANS("zh-Hans"), + ZH_HANS_CN("zh-Hans-CN"), + ZH_HANS_HK("zh-Hans-HK"), + ZH_HANS_MO("zh-Hans-MO"), + ZH_HANS_SG("zh-Hans-SG"), + ZH_HANS_TW("zh-Hans-TW"), + ZH_HANT("zh-Hant"), + ZH_HANT_CN("zh-Hant-CN"), + ZH_HANT_HK("zh-Hant-HK"), + ZH_HANT_MO("zh-Hant-MO"), + ZH_HANT_SG("zh-Hant-SG"), + ZH_HANT_TW("zh-Hant-TW"), + ZH_MIN("zh-min"), + ZH_MIN_NAN("zh-min-nan"), + ZH_WUU("zh-wuu"), + ZH_XIANG("zh-xiang"), + ZH_YUE("zh-yue"); + + private final String name; + + public static final Map map; + + static { + Map mutableMap = new TreeMap<>(); + for (LanguageTag tag : values()) { + if (tag.name != null) { + mutableMap.put(tag.name, tag); + } + } + map = Collections.unmodifiableMap(mutableMap); + } + + LanguageTag(String name) { + this.name = name; + } + + @Override + public String toString() { + return name; + } + + public String getName() { + return name; + } + + public static LanguageTag fromName(String name) { + return map.get(name); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/KeyExchangeInitMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/KeyExchangeInitMessageHandler.java index 98f699359..2b24bc038 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/KeyExchangeInitMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/handler/KeyExchangeInitMessageHandler.java @@ -61,11 +61,11 @@ public void adjustContext(SshContext context, KeyExchangeInitMessage object) { object.getCompressionMethodsServerToClient().getValue(), CompressionMethod.class)); context.setServerSupportedLanguagesClientToServer( - Converter.nameListStringToStringList( - object.getLanguagesClientToServer().getValue())); + Converter.nameListToEnumValues( + object.getLanguagesClientToServer().getValue(), LanguageTag.class)); context.setServerSupportedLanguagesServerToClient( - Converter.nameListStringToStringList( - object.getLanguagesServerToClient().getValue())); + Converter.nameListToEnumValues( + object.getLanguagesServerToClient().getValue(), LanguageTag.class)); context.setServerReserved(object.getReserved().getValue()); context.getExchangeHashInputHolder().setServerKeyExchangeInit(object); @@ -115,11 +115,11 @@ && containsKeyExchangeAlgorithm( object.getCompressionMethodsServerToClient().getValue(), CompressionMethod.class)); context.setClientSupportedLanguagesClientToServer( - Converter.nameListStringToStringList( - object.getLanguagesClientToServer().getValue())); + Converter.nameListToEnumValues( + object.getLanguagesClientToServer().getValue(), LanguageTag.class)); context.setClientSupportedLanguagesServerToClient( - Converter.nameListStringToStringList( - object.getLanguagesServerToClient().getValue())); + Converter.nameListToEnumValues( + object.getLanguagesServerToClient().getValue(), LanguageTag.class)); context.setClientReserved(object.getReserved().getValue()); context.getExchangeHashInputHolder().setClientKeyExchangeInit(object); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/KeyExchangeInitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/KeyExchangeInitMessage.java index c806e8702..47322d88a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/KeyExchangeInitMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/message/KeyExchangeInitMessage.java @@ -793,7 +793,7 @@ public void setLanguagesClientToServer(String[] languagesClientToServer) { setLanguagesClientToServer(languagesClientToServer, false); } - public void setLanguagesClientToServer(List languagesClientToServer) { + public void setLanguagesClientToServer(List languagesClientToServer) { setLanguagesClientToServer(languagesClientToServer, false); } @@ -830,9 +830,9 @@ public void setLanguagesClientToServer( } public void setLanguagesClientToServer( - List languagesClientToServer, boolean adjustLengthField) { + List languagesClientToServer, boolean adjustLengthField) { setLanguagesClientToServer( - Converter.listOfNameStringsToString(languagesClientToServer), adjustLengthField); + Converter.listOfNamesToString(languagesClientToServer), adjustLengthField); } public ModifiableInteger getLanguagesServerToClientLength() { @@ -865,7 +865,7 @@ public void setLanguagesServerToClient(String[] languagesServerToClient) { setLanguagesServerToClient(languagesServerToClient, false); } - public void setLanguagesServerToClient(List languagesServerToClient) { + public void setLanguagesServerToClient(List languagesServerToClient) { setLanguagesServerToClient(languagesServerToClient, false); } @@ -902,9 +902,9 @@ public void setLanguagesServerToClient( } public void setLanguagesServerToClient( - List languagesServerToClient, boolean adjustLengthField) { + List languagesServerToClient, boolean adjustLengthField) { setLanguagesServerToClient( - Converter.listOfNameStringsToString(languagesServerToClient), adjustLengthField); + Converter.listOfNamesToString(languagesServerToClient), adjustLengthField); } public ModifiableByte getFirstKeyExchangePacketFollows() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java index ede27bb19..6fa476aec 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java @@ -167,16 +167,16 @@ public class SshContext { private List serverSupportedCompressionMethodsServerToClient; /** List of languages (client to server) supported by the client */ - private List clientSupportedLanguagesClientToServer; + private List clientSupportedLanguagesClientToServer; /** List of languages (server to client) supported by the client */ - private List clientSupportedLanguagesServerToClient; + private List clientSupportedLanguagesServerToClient; /** List of languages (client to server) supported by the server */ - private List serverSupportedLanguagesClientToServer; + private List serverSupportedLanguagesClientToServer; /** List of languages (server to client) supported by the server */ - private List serverSupportedLanguagesServerToClient; + private List serverSupportedLanguagesServerToClient; /** * A boolean flag used to indicate that a guessed key exchange paket will be sent by the client @@ -708,19 +708,19 @@ public Optional> getServerSupportedCompressionMethodsCli return Optional.ofNullable(serverSupportedCompressionMethodsClientToServer); } - public Optional> getClientSupportedLanguagesClientToServer() { + public Optional> getClientSupportedLanguagesClientToServer() { return Optional.ofNullable(clientSupportedLanguagesClientToServer); } - public Optional> getClientSupportedLanguagesServerToClient() { + public Optional> getClientSupportedLanguagesServerToClient() { return Optional.ofNullable(clientSupportedLanguagesServerToClient); } - public Optional> getServerSupportedLanguagesServerToClient() { + public Optional> getServerSupportedLanguagesServerToClient() { return Optional.ofNullable(serverSupportedLanguagesServerToClient); } - public Optional> getServerSupportedLanguagesClientToServer() { + public Optional> getServerSupportedLanguagesClientToServer() { return Optional.ofNullable(serverSupportedLanguagesClientToServer); } @@ -843,22 +843,22 @@ public void setServerSupportedCompressionMethodsClientToServer( } public void setClientSupportedLanguagesClientToServer( - List clientSupportedLanguagesClientToServer) { + List clientSupportedLanguagesClientToServer) { this.clientSupportedLanguagesClientToServer = clientSupportedLanguagesClientToServer; } public void setClientSupportedLanguagesServerToClient( - List clientSupportedLanguagesServerToClient) { + List clientSupportedLanguagesServerToClient) { this.clientSupportedLanguagesServerToClient = clientSupportedLanguagesServerToClient; } public void setServerSupportedLanguagesServerToClient( - List serverSupportedLanguagesServerToClient) { + List serverSupportedLanguagesServerToClient) { this.serverSupportedLanguagesServerToClient = serverSupportedLanguagesServerToClient; } public void setServerSupportedLanguagesClientToServer( - List serverSupportedLanguagesClientToServer) { + List serverSupportedLanguagesClientToServer) { this.serverSupportedLanguagesClientToServer = serverSupportedLanguagesClientToServer; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/util/Converter.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/util/Converter.java index 498cc6c70..1751f8ebf 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/util/Converter.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/util/Converter.java @@ -138,6 +138,7 @@ public static List nameListStringToStringList(String nameListString) { */ public static > List nameListToEnumValues( String nameListString, Class enumClass) { + // Could be simplified if we add a common interface to each enum to get an enum by name return nameStreamToEnumValues(nameListStringToStringStream(nameListString), enumClass); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java index 4de8caf81..dc9bd08eb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java @@ -98,13 +98,13 @@ public SshContext getContext() { public abstract List getServerSupportedCompressionMethodsClientToServer(); - public abstract List getClientSupportedLanguagesClientToServer(); + public abstract List getClientSupportedLanguagesClientToServer(); - public abstract List getClientSupportedLanguagesServerToClient(); + public abstract List getClientSupportedLanguagesServerToClient(); - public abstract List getServerSupportedLanguagesServerToClient(); + public abstract List getServerSupportedLanguagesServerToClient(); - public abstract List getServerSupportedLanguagesClientToServer(); + public abstract List getServerSupportedLanguagesClientToServer(); public abstract boolean getClientFirstKeyExchangePacketFollows(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java index 55bc26431..324682e46 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java @@ -385,7 +385,7 @@ public List getServerSupportedCompressionMethodsClientToServe * @return A list of languages for client to server communication supported by the client */ @Override - public List getClientSupportedLanguagesClientToServer() { + public List getClientSupportedLanguagesClientToServer() { return context.getClientSupportedLanguagesClientToServer() .orElse(config.getClientSupportedLanguagesClientToServer()); } @@ -399,7 +399,7 @@ public List getClientSupportedLanguagesClientToServer() { * @return A list of languages for server to client communication supported by the client */ @Override - public List getClientSupportedLanguagesServerToClient() { + public List getClientSupportedLanguagesServerToClient() { return context.getClientSupportedLanguagesServerToClient() .orElse(config.getClientSupportedLanguagesServerToClient()); } @@ -413,7 +413,7 @@ public List getClientSupportedLanguagesServerToClient() { * @return A list of languages for server to client communication supported by the server */ @Override - public List getServerSupportedLanguagesServerToClient() { + public List getServerSupportedLanguagesServerToClient() { return context.getServerSupportedLanguagesServerToClient() .orElse(config.getServerSupportedLanguagesServerToClient()); } @@ -427,7 +427,7 @@ public List getServerSupportedLanguagesServerToClient() { * @return A list of languages for client to server communication supported by the server */ @Override - public List getServerSupportedLanguagesClientToServer() { + public List getServerSupportedLanguagesClientToServer() { return context.getServerSupportedLanguagesClientToServer() .orElse(config.getServerSupportedLanguagesClientToServer()); } From ce9e2b926acc7bbc9cf1c085b9611dd6c263f58b Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 26 Feb 2025 12:47:04 +0100 Subject: [PATCH 159/203] Fix resetUsingRefelctions() --- .../core/protocol/common/ModifiableVariableHolder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ModifiableVariableHolder.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ModifiableVariableHolder.java index c95b70b84..db18cec9e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ModifiableVariableHolder.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/ModifiableVariableHolder.java @@ -96,7 +96,7 @@ public void resetUsingRefelctions() { LOGGER.debug(ex); } if (mv != null) { - if (mv.getModification() != null || mv.isCreateRandomModification()) { + if (mv.getModifications() != null) { mv.setOriginalValue(null); } else { try { From 0e9fd3bf98dab2a02e0206709415c3e53468e9d6 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 26 Feb 2025 16:58:51 +0100 Subject: [PATCH 160/203] Move ModifiablePath into SSH-Attacker. Because it is not wanted inside Modifiable-Variables. Also removing Constructors for AuthenticationResponseEntry and AuthenticationPromptEntry, because they have no use anymore, since I removed the setSoftly methods. --- .../nds/sshattacker/core/config/Config.java | 4 +- .../SftpRequestCopyFileMessage.java | 5 +- .../SftpRequestExtendedWithPathMessage.java | 4 +- .../SftpRequestHardlinkMessage.java | 4 +- .../SftpRequestPosixRenameMessage.java | 4 +- .../request/SftpRequestRenameMessage.java | 4 +- .../SftpRequestSymbolicLinkMessage.java | 4 +- .../request/SftpRequestWithPathMessage.java | 4 +- .../path/ModifiablePath.java | 103 +++++++++++ .../path/PathAppendValueModification.java | 93 ++++++++++ .../path/PathDeleteModification.java | 139 ++++++++++++++ .../path/PathExplicitValueModification.java | 86 +++++++++ ...hInsertDirectorySeparatorModification.java | 115 ++++++++++++ ...hInsertDirectoryTraversalModification.java | 126 +++++++++++++ .../path/PathInsertValueModification.java | 105 +++++++++++ .../path/PathModificationFactory.java | 49 +++++ .../path/PathPrependValueModification.java | 93 ++++++++++ .../path/PathToggleRootModification.java | 61 +++++++ .../modifiablevariable/path/PathUtil.java | 85 +++++++++ .../holder/AuthenticationPromptEntry.java | 6 - .../holder/AuthenticationResponseEntry.java | 5 - .../pth/PathModificationTest.java | 170 ++++++++++++++++++ .../pth/PathSerializationTest.java | 89 +++++++++ 23 files changed, 1330 insertions(+), 28 deletions(-) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/ModifiablePath.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathAppendValueModification.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathDeleteModification.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathExplicitValueModification.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathInsertDirectorySeparatorModification.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathInsertDirectoryTraversalModification.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathInsertValueModification.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathModificationFactory.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathPrependValueModification.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathToggleRootModification.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathUtil.java create mode 100644 SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathModificationTest.java create mode 100644 SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathSerializationTest.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 98139c81c..e357a9985 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -1106,7 +1106,7 @@ public Config() { preConfiguredAuthResponses = new ArrayList<>(); ArrayList preConfiguredAuthResponse1 = new ArrayList<>(); - preConfiguredAuthResponse1.add(new AuthenticationResponseEntry(password)); + preConfiguredAuthResponse1.add(new AuthenticationResponseEntry()); preConfiguredAuthResponses.add( new AuthenticationResponseEntries(preConfiguredAuthResponse1)); ArrayList preConfiguredAuthResponse2 = new ArrayList<>(); @@ -1116,7 +1116,7 @@ public Config() { preConfiguredAuthPrompts = new ArrayList<>(); ArrayList preConfiguredAuthPrompt1 = new ArrayList<>(); - preConfiguredAuthPrompt1.add(new AuthenticationPromptEntry("Response: ", true)); + preConfiguredAuthPrompt1.add(new AuthenticationPromptEntry()); preConfiguredAuthPrompts.add(new AuthenticationPromptEntries(preConfiguredAuthPrompt1)); // sshkey generated with "openssl ecparam -name secp521r1 -genkey -out key.pem" diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java index 77a8e89c2..0d751a852 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java @@ -9,9 +9,9 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.modifiablevariable.path.ModifiablePath; import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCopyFileMessageHandler; +import de.rub.nds.sshattacker.core.modifiablevariable.path.ModifiablePath; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -99,8 +99,7 @@ public void setDestinationPath(ModifiablePath destinationPath, boolean adjustLen } public void setDestinationPath(String destinationPath, boolean adjustLengthField) { - this.destinationPath = - ModifiableVariableFactory.safelySetValue(this.destinationPath, destinationPath); + this.destinationPath = ModifiablePath.safelySetValue(this.destinationPath, destinationPath); if (adjustLengthField) { setDestinationPathLength( this.destinationPath.getValue().getBytes(StandardCharsets.UTF_8).length); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java index c1e404ab6..02dd67740 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java @@ -9,7 +9,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.modifiablevariable.path.ModifiablePath; +import de.rub.nds.sshattacker.core.modifiablevariable.path.ModifiablePath; import java.nio.charset.StandardCharsets; public abstract class SftpRequestExtendedWithPathMessage< @@ -64,7 +64,7 @@ public void setPath(ModifiablePath path, boolean adjustLengthField) { } public void setPath(String path, boolean adjustLengthField) { - this.path = ModifiableVariableFactory.safelySetValue(this.path, path); + this.path = ModifiablePath.safelySetValue(this.path, path); if (adjustLengthField) { setPathLength(this.path.getValue().getBytes(StandardCharsets.UTF_8).length); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java index acf41c2f9..d1e15eb6b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java @@ -9,8 +9,8 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.modifiablevariable.path.ModifiablePath; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestHardlinkMessageHandler; +import de.rub.nds.sshattacker.core.modifiablevariable.path.ModifiablePath; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.nio.charset.StandardCharsets; @@ -71,7 +71,7 @@ public void setNewPath(ModifiablePath newPath, boolean adjustLengthField) { } public void setNewPath(String newPath, boolean adjustLengthField) { - this.newPath = ModifiableVariableFactory.safelySetValue(this.newPath, newPath); + this.newPath = ModifiablePath.safelySetValue(this.newPath, newPath); if (adjustLengthField) { setNewPathLength(this.newPath.getValue().getBytes(StandardCharsets.UTF_8).length); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java index 19c42c1d4..86fc711e3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java @@ -9,8 +9,8 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.modifiablevariable.path.ModifiablePath; import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestPosixRenameMessageHandler; +import de.rub.nds.sshattacker.core.modifiablevariable.path.ModifiablePath; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.nio.charset.StandardCharsets; @@ -71,7 +71,7 @@ public void setNewPath(ModifiablePath newPath, boolean adjustLengthField) { } public void setNewPath(String newPath, boolean adjustLengthField) { - this.newPath = ModifiableVariableFactory.safelySetValue(this.newPath, newPath); + this.newPath = ModifiablePath.safelySetValue(this.newPath, newPath); if (adjustLengthField) { setNewPathLength(this.newPath.getValue().getBytes(StandardCharsets.UTF_8).length); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRenameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRenameMessage.java index a5cb84e96..2d0f0f92e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRenameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRenameMessage.java @@ -9,8 +9,8 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.modifiablevariable.path.ModifiablePath; import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestRenameMessageHandler; +import de.rub.nds.sshattacker.core.modifiablevariable.path.ModifiablePath; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.nio.charset.StandardCharsets; @@ -72,7 +72,7 @@ public void setNewPath(ModifiablePath newPath, boolean adjustLengthField) { } public void setNewPath(String newPath, boolean adjustLengthField) { - this.newPath = ModifiableVariableFactory.safelySetValue(this.newPath, newPath); + this.newPath = ModifiablePath.safelySetValue(this.newPath, newPath); if (adjustLengthField) { setNewPathLength(this.newPath.getValue().getBytes(StandardCharsets.UTF_8).length); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSymbolicLinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSymbolicLinkMessage.java index e89fffcd0..4f490f44e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSymbolicLinkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSymbolicLinkMessage.java @@ -9,8 +9,8 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.modifiablevariable.path.ModifiablePath; import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestSymbolicLinkMessageHandler; +import de.rub.nds.sshattacker.core.modifiablevariable.path.ModifiablePath; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.nio.charset.StandardCharsets; @@ -75,7 +75,7 @@ public void setTargetPath(ModifiablePath targetPath, boolean adjustLengthField) } public void setTargetPath(String targetPath, boolean adjustLengthField) { - this.targetPath = ModifiableVariableFactory.safelySetValue(this.targetPath, targetPath); + this.targetPath = ModifiablePath.safelySetValue(this.targetPath, targetPath); if (adjustLengthField) { setTargetPathLength(this.targetPath.getValue().getBytes(StandardCharsets.UTF_8).length); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java index eb17d9330..978b58b14 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java @@ -9,7 +9,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.modifiablevariable.path.ModifiablePath; +import de.rub.nds.sshattacker.core.modifiablevariable.path.ModifiablePath; import java.nio.charset.StandardCharsets; public abstract class SftpRequestWithPathMessage> @@ -63,7 +63,7 @@ public void setPath(ModifiablePath path, boolean adjustLengthField) { } public void setPath(String path, boolean adjustLengthField) { - this.path = ModifiableVariableFactory.safelySetValue(this.path, path); + this.path = ModifiablePath.safelySetValue(this.path, path); if (adjustLengthField) { setPathLength(this.path.getValue().getBytes(StandardCharsets.UTF_8).length); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/ModifiablePath.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/ModifiablePath.java new file mode 100644 index 000000000..6f9299149 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/ModifiablePath.java @@ -0,0 +1,103 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2025 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.modifiablevariable.path; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.modifiablevariable.VariableModification; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +@XmlAccessorType(XmlAccessType.PROPERTY) +public class ModifiablePath extends ModifiableString { + + public ModifiablePath() { + super(); + } + + public ModifiablePath(String originalValue) { + super(originalValue); + } + + public ModifiablePath(ModifiablePath other) { + super(other); + } + + @Override + public ModifiablePath createCopy() { + return new ModifiablePath(this); + } + + public static ModifiablePath safelySetValue(ModifiablePath mv, String value) { + if (mv == null) { + return new ModifiablePath(value); + } + mv.setOriginalValue(value); + return mv; + } + + private static ModifiablePath getModifiablePathWithModification( + VariableModification modification) { + ModifiablePath modifiablePath = new ModifiablePath(); + modifiablePath.setModification(modification); + return modifiablePath; + } + + public static ModifiablePath prependPath(String perpendValue) { + return getModifiablePathWithModification( + PathModificationFactory.prependValue(perpendValue)); + } + + public static ModifiablePath appendPath(String appendValue) { + return getModifiablePathWithModification(PathModificationFactory.appendValue(appendValue)); + } + + public static ModifiablePath insertPath(String insertValue, int position) { + return getModifiablePathWithModification( + PathModificationFactory.insertValue(insertValue, position)); + } + + public static ModifiablePath insertDirectoryTraversal(int count, int position) { + return getModifiablePathWithModification( + PathModificationFactory.insertDirectoryTraversal(count, position)); + } + + public static ModifiablePath insertDirectorySeperator(int count, int position) { + return getModifiablePathWithModification( + PathModificationFactory.insertDirectorySeperator(count, position)); + } + + public static ModifiablePath toggleRoot() { + return getModifiablePathWithModification(PathModificationFactory.toggleRoot()); + } + + @Override + public String toString() { + return "ModifiablePath{" + + "originalValue='" + + backslashEscapeString(originalValue) + + '\'' + + innerToString() + + '}'; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof ModifiablePath that)) { + return false; + } + + return getValue() != null ? getValue().equals(that.getValue()) : that.getValue() == null; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathAppendValueModification.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathAppendValueModification.java new file mode 100644 index 000000000..5fcade2f8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathAppendValueModification.java @@ -0,0 +1,93 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2025 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.modifiablevariable.path; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.modifiablevariable.VariableModification; +import de.rub.nds.modifiablevariable.util.IllegalStringAdapter; +import jakarta.xml.bind.annotation.XmlRootElement; +import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import java.util.Objects; + +/** Modification that appends a path parts to the original value. */ +@XmlRootElement +public class PathAppendValueModification extends VariableModification { + + @XmlJavaTypeAdapter(IllegalStringAdapter.class) + private String appendValue; + + public PathAppendValueModification() { + super(); + } + + public PathAppendValueModification(String appendValue) { + super(); + this.appendValue = appendValue; + } + + public PathAppendValueModification(PathAppendValueModification other) { + super(other); + appendValue = other.appendValue; + } + + @Override + public PathAppendValueModification createCopy() { + return new PathAppendValueModification(this); + } + + @Override + protected String modifyImplementationHook(String input) { + if (input == null) { + return null; + } + if (input.endsWith("/")) { + return input + appendValue + "/"; + } + return input + "/" + appendValue; + } + + public String getAppendValue() { + return appendValue; + } + + public void setAppendValue(String appendValue) { + this.appendValue = appendValue; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 31 * hash + Objects.hashCode(appendValue); + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + PathAppendValueModification other = (PathAppendValueModification) obj; + return Objects.equals(appendValue, other.appendValue); + } + + @Override + public String toString() { + return "PathAppendValueModification{" + + "appendValue='" + + backslashEscapeString(appendValue) + + '\'' + + '}'; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathDeleteModification.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathDeleteModification.java new file mode 100644 index 000000000..619bcfeae --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathDeleteModification.java @@ -0,0 +1,139 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2025 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.modifiablevariable.path; + +import de.rub.nds.modifiablevariable.VariableModification; +import de.rub.nds.modifiablevariable.util.ArrayConverter; +import jakarta.xml.bind.annotation.XmlRootElement; +import java.util.Arrays; +import java.util.Objects; + +/** Modification that deletes path parts from the original value. */ +@XmlRootElement +public class PathDeleteModification extends VariableModification { + + private int count; + + private int startPosition; + + public PathDeleteModification() { + super(); + } + + public PathDeleteModification(int startPosition, int count) { + super(); + this.count = count; + this.startPosition = startPosition; + } + + public PathDeleteModification(PathDeleteModification other) { + super(other); + count = other.count; + startPosition = other.startPosition; + } + + @Override + public PathDeleteModification createCopy() { + return new PathDeleteModification(this); + } + + @Override + protected String modifyImplementationHook(String input) { + if (input == null) { + return null; + } + if (input.isEmpty()) { + return input; + } + String[] pathParts = input.split("/"); + if (pathParts.length == 0) { + // It is just a single slash + if (count == 0) { + return input; + } + return ""; + } + boolean leadingSlash = pathParts[0].isEmpty(); + + // Wrap around and also allow to delete at the end of the original value + int deleteStartPosition = + PathUtil.getPathPartPosition(startPosition, leadingSlash, pathParts); + // If the end position overflows, it is fixed at the end of the path + int deleteEndPosition = deleteStartPosition + count; + if (deleteEndPosition > pathParts.length) { + deleteEndPosition = pathParts.length; + } + + String[] partsBefore = Arrays.copyOf(pathParts, deleteStartPosition); + String[] resultParts; + if (deleteEndPosition < pathParts.length) { + String[] partsAfter = + Arrays.copyOfRange(pathParts, deleteEndPosition, pathParts.length); + resultParts = ArrayConverter.concatenate(partsBefore, partsAfter); + } else { + resultParts = partsBefore; + } + + if (input.endsWith("/") && resultParts.length > 0) { + resultParts[resultParts.length - 1] += "/"; + } + return String.join("/", resultParts); + } + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } + + public int getStartPosition() { + return startPosition; + } + + public void setStartPosition(int startPosition) { + this.startPosition = startPosition; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 31 * hash + count; + hash = 31 * hash + startPosition; + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + PathDeleteModification other = (PathDeleteModification) obj; + if (startPosition != other.startPosition) { + return false; + } + return Objects.equals(count, other.count); + } + + @Override + public String toString() { + return "PathDeleteModification{" + + "count=" + + count + + ", startPosition=" + + startPosition + + '}'; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathExplicitValueModification.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathExplicitValueModification.java new file mode 100644 index 000000000..4e45f96ba --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathExplicitValueModification.java @@ -0,0 +1,86 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2025 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.modifiablevariable.path; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.modifiablevariable.VariableModification; +import de.rub.nds.modifiablevariable.util.IllegalStringAdapter; +import jakarta.xml.bind.annotation.XmlRootElement; +import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import java.util.Objects; + +@XmlRootElement +public class PathExplicitValueModification extends VariableModification { + + @XmlJavaTypeAdapter(IllegalStringAdapter.class) + protected String explicitValue; + + public PathExplicitValueModification() { + super(); + } + + public PathExplicitValueModification(String explicitValue) { + super(); + this.explicitValue = explicitValue; + } + + public PathExplicitValueModification(PathExplicitValueModification other) { + super(other); + explicitValue = other.explicitValue; + } + + @Override + public PathExplicitValueModification createCopy() { + return new PathExplicitValueModification(this); + } + + @Override + protected String modifyImplementationHook(String input) { + return explicitValue; + } + + public String getExplicitValue() { + return explicitValue; + } + + public void setExplicitValue(String explicitValue) { + this.explicitValue = explicitValue; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 31 * hash + Objects.hashCode(explicitValue); + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + PathExplicitValueModification other = (PathExplicitValueModification) obj; + return Objects.equals(explicitValue, other.explicitValue); + } + + @Override + public String toString() { + return "PathExplicitValueModification{" + + "explicitValue='" + + backslashEscapeString(explicitValue) + + '\'' + + '}'; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathInsertDirectorySeparatorModification.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathInsertDirectorySeparatorModification.java new file mode 100644 index 000000000..26f905182 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathInsertDirectorySeparatorModification.java @@ -0,0 +1,115 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2025 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.modifiablevariable.path; + +import de.rub.nds.modifiablevariable.VariableModification; +import de.rub.nds.modifiablevariable.util.IllegalStringAdapter; +import jakarta.xml.bind.annotation.XmlRootElement; +import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import java.util.Objects; + +/** Modification that inserts directory separators as path parts to the original value. */ +@XmlRootElement +public class PathInsertDirectorySeparatorModification extends VariableModification { + + @XmlJavaTypeAdapter(IllegalStringAdapter.class) + private String insertValue; + + private int count; + private int startPosition; + + public PathInsertDirectorySeparatorModification() { + super(); + } + + public PathInsertDirectorySeparatorModification(int count, int startPosition) { + super(); + this.count = count; + this.startPosition = startPosition; + updateInsertValue(); + } + + public PathInsertDirectorySeparatorModification( + PathInsertDirectorySeparatorModification other) { + super(other); + insertValue = other.insertValue; + count = other.count; + startPosition = other.startPosition; + } + + @Override + public PathInsertDirectorySeparatorModification createCopy() { + return new PathInsertDirectorySeparatorModification(this); + } + + private void updateInsertValue() { + insertValue = "/".repeat(Math.max(0, count)); + } + + @Override + protected String modifyImplementationHook(String input) { + return PathUtil.insertValueAsPathPart(input, insertValue, startPosition); + } + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + updateInsertValue(); + } + + public int getStartPosition() { + return startPosition; + } + + public void setStartPosition(int startPosition) { + this.startPosition = startPosition; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 31 * hash + count; + hash = 31 * hash + startPosition; + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + PathInsertDirectorySeparatorModification other = + (PathInsertDirectorySeparatorModification) obj; + if (startPosition != other.startPosition) { + return false; + } + return Objects.equals(count, other.count); + } + + @Override + public String toString() { + return "PathInsertDirectorySeparatorModification{" + + "insertValue='" + + insertValue + + '\'' + + ", count=" + + count + + ", startPosition=" + + startPosition + + '}'; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathInsertDirectoryTraversalModification.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathInsertDirectoryTraversalModification.java new file mode 100644 index 000000000..10ac9086d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathInsertDirectoryTraversalModification.java @@ -0,0 +1,126 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2025 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.modifiablevariable.path; + +import de.rub.nds.modifiablevariable.VariableModification; +import de.rub.nds.modifiablevariable.util.IllegalStringAdapter; +import jakarta.xml.bind.annotation.XmlRootElement; +import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import java.util.Objects; + +/** Modification that directory traversal path parts the original value. */ +@XmlRootElement +public class PathInsertDirectoryTraversalModification extends VariableModification { + + @XmlJavaTypeAdapter(IllegalStringAdapter.class) + private String insertValue; + + private int count; + private int startPosition; + + public PathInsertDirectoryTraversalModification() { + super(); + } + + public PathInsertDirectoryTraversalModification(int count, int startPosition) { + super(); + this.count = count; + this.startPosition = startPosition; + updateInsertValue(); + } + + public PathInsertDirectoryTraversalModification( + PathInsertDirectoryTraversalModification other) { + super(other); + insertValue = other.insertValue; + count = other.count; + startPosition = other.startPosition; + } + + @Override + public PathInsertDirectoryTraversalModification createCopy() { + return new PathInsertDirectoryTraversalModification(this); + } + + private void updateInsertValue() { + if (count <= 0) { + insertValue = ""; + return; + } + StringBuilder builder = new StringBuilder(count * 3 - 1); + for (int i = 0; i < count; i++) { + builder.append(".."); + if (i < count - 1) { + builder.append("/"); + } + } + insertValue = builder.toString(); + } + + @Override + protected String modifyImplementationHook(String input) { + return PathUtil.insertValueAsPathPart(input, insertValue, startPosition); + } + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + updateInsertValue(); + } + + public int getStartPosition() { + return startPosition; + } + + public void setStartPosition(int startPosition) { + this.startPosition = startPosition; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 31 * hash + count; + hash = 31 * hash + startPosition; + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + PathInsertDirectoryTraversalModification other = + (PathInsertDirectoryTraversalModification) obj; + if (startPosition != other.startPosition) { + return false; + } + return Objects.equals(count, other.count); + } + + @Override + public String toString() { + return "PathInsertDirectoryTraversalModification{" + + "insertValue='" + + insertValue + + '\'' + + ", count=" + + count + + ", startPosition=" + + startPosition + + '}'; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathInsertValueModification.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathInsertValueModification.java new file mode 100644 index 000000000..6a868e96b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathInsertValueModification.java @@ -0,0 +1,105 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2025 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.modifiablevariable.path; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.modifiablevariable.VariableModification; +import de.rub.nds.modifiablevariable.util.IllegalStringAdapter; +import jakarta.xml.bind.annotation.XmlRootElement; +import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import java.util.Objects; + +/** Modification that inserts path parts to the original value. */ +@XmlRootElement +public class PathInsertValueModification extends VariableModification { + + @XmlJavaTypeAdapter(IllegalStringAdapter.class) + private String insertValue; + + private int startPosition; + + public PathInsertValueModification() { + super(); + } + + public PathInsertValueModification(String insertValue, int startPosition) { + super(); + this.insertValue = insertValue; + this.startPosition = startPosition; + } + + public PathInsertValueModification(PathInsertValueModification other) { + super(other); + insertValue = other.insertValue; + startPosition = other.startPosition; + } + + @Override + public PathInsertValueModification createCopy() { + return new PathInsertValueModification(this); + } + + @Override + protected String modifyImplementationHook(String input) { + return PathUtil.insertValueAsPathPart(input, insertValue, startPosition); + } + + public String getInsertValue() { + return insertValue; + } + + public void setInsertValue(String insertValue) { + this.insertValue = insertValue; + } + + public int getStartPosition() { + return startPosition; + } + + public void setStartPosition(int startPosition) { + this.startPosition = startPosition; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 31 * hash + Objects.hashCode(insertValue); + hash = 31 * hash + startPosition; + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + PathInsertValueModification other = (PathInsertValueModification) obj; + if (startPosition != other.startPosition) { + return false; + } + return Objects.equals(insertValue, other.insertValue); + } + + @Override + public String toString() { + return "PathInsertValueModification{" + + "insertValue='" + + backslashEscapeString(insertValue) + + '\'' + + ", startPosition=" + + startPosition + + '}'; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathModificationFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathModificationFactory.java new file mode 100644 index 000000000..e0c941dbe --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathModificationFactory.java @@ -0,0 +1,49 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2025 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.modifiablevariable.path; + +import de.rub.nds.modifiablevariable.VariableModification; + +public final class PathModificationFactory { + + private PathModificationFactory() { + super(); + } + + public static VariableModification prependValue(String value) { + return new PathPrependValueModification(value); + } + + public static VariableModification explicitValue(String value) { + return new PathExplicitValueModification(value); + } + + public static VariableModification appendValue(String value) { + return new PathAppendValueModification(value); + } + + public static VariableModification insertValue(String value, int position) { + return new PathInsertValueModification(value, position); + } + + public static VariableModification delete(int position, int count) { + return new PathDeleteModification(position, count); + } + + public static VariableModification insertDirectoryTraversal(int count, int position) { + return new PathInsertDirectoryTraversalModification(count, position); + } + + public static VariableModification insertDirectorySeperator(int count, int position) { + return new PathInsertDirectorySeparatorModification(count, position); + } + + public static VariableModification toggleRoot() { + return new PathToggleRootModification(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathPrependValueModification.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathPrependValueModification.java new file mode 100644 index 000000000..6483cfc86 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathPrependValueModification.java @@ -0,0 +1,93 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2025 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.modifiablevariable.path; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.modifiablevariable.VariableModification; +import de.rub.nds.modifiablevariable.util.IllegalStringAdapter; +import jakarta.xml.bind.annotation.XmlRootElement; +import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import java.util.Objects; + +/** Modification that prepends a string to the original value. */ +@XmlRootElement +public class PathPrependValueModification extends VariableModification { + + @XmlJavaTypeAdapter(IllegalStringAdapter.class) + private String prependValue; + + public PathPrependValueModification() { + super(); + } + + public PathPrependValueModification(String prependValue) { + super(); + this.prependValue = prependValue; + } + + public PathPrependValueModification(PathPrependValueModification other) { + super(other); + prependValue = other.prependValue; + } + + @Override + public PathPrependValueModification createCopy() { + return new PathPrependValueModification(this); + } + + @Override + protected String modifyImplementationHook(String input) { + if (input == null) { + return null; + } + if (input.startsWith("/")) { + return "/" + prependValue + input; + } + return prependValue + "/" + input; + } + + public String getPrependValue() { + return prependValue; + } + + public void setPrependValue(String prependValue) { + this.prependValue = prependValue; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 31 * hash + Objects.hashCode(prependValue); + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + PathPrependValueModification other = (PathPrependValueModification) obj; + return Objects.equals(prependValue, other.prependValue); + } + + @Override + public String toString() { + return "PathPrependValueModification{" + + "prependValue='" + + backslashEscapeString(prependValue) + + '\'' + + '}'; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathToggleRootModification.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathToggleRootModification.java new file mode 100644 index 000000000..d7ac348c7 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathToggleRootModification.java @@ -0,0 +1,61 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2025 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.modifiablevariable.path; + +import de.rub.nds.modifiablevariable.VariableModification; +import jakarta.xml.bind.annotation.XmlRootElement; + +/** Modification that toggle the root slash of the original value. */ +@XmlRootElement +public class PathToggleRootModification extends VariableModification { + + public PathToggleRootModification() { + super(); + } + + public PathToggleRootModification(PathToggleRootModification other) { + super(other); + } + + @Override + public PathToggleRootModification createCopy() { + return new PathToggleRootModification(this); + } + + @Override + protected String modifyImplementationHook(String input) { + if (input == null) { + return null; + } + if (!input.isEmpty() && input.charAt(0) == '/') { + return input.substring(1); + } + return "/" + input; + } + + @Override + public int hashCode() { + return 7; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + return getClass() == obj.getClass(); + } + + @Override + public String toString() { + return "PathToggleRootModification{}"; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathUtil.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathUtil.java new file mode 100644 index 000000000..a3c4f3dee --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/PathUtil.java @@ -0,0 +1,85 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2025 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.modifiablevariable.path; + +public final class PathUtil { + + private PathUtil() { + super(); + } + + public static String insertValueAsPathPart( + String input, String insertValue, int startPosition) { + if (input == null) { + return null; + } + + if (input.isEmpty()) { + return insertValue; + } + String[] pathParts = input.split("/"); + if (pathParts.length == 0) { + // It is just a single slash + pathParts = new String[] {""}; + } + boolean leadingSlash = pathParts[0].isEmpty(); + + // Wrap around and also allow to insert at the end of the original value + int insertPosition = getInsertPosition(startPosition, leadingSlash, pathParts); + + if (insertPosition == 0 && leadingSlash) { + pathParts[insertPosition] = "/" + insertValue; + } else if (insertPosition == pathParts.length) { + pathParts[insertPosition - 1] = pathParts[insertPosition - 1] + "/" + insertValue; + } else { + pathParts[insertPosition] = insertValue + "/" + pathParts[insertPosition]; + } + if (input.endsWith("/")) { + pathParts[pathParts.length - 1] += "/"; + } + return String.join("/", pathParts); + } + + private static int getInsertPosition( + int startPosition, boolean leadingSlash, String[] pathParts) { + int insertPosition; + if (leadingSlash) { + // If the path starts with a slash, skip the first empty path part. + insertPosition = startPosition % pathParts.length; + if (startPosition < 0) { + insertPosition += pathParts.length - 1; + } + insertPosition++; + } else { + insertPosition = startPosition % (pathParts.length + 1); + if (startPosition < 0) { + insertPosition += pathParts.length; + } + } + return insertPosition; + } + + public static int getPathPartPosition( + int startPosition, boolean leadingSlash, String[] pathParts) { + int pathPartPosition; + if (leadingSlash) { + // If the path starts with a slash, skip the first empty path part. + pathPartPosition = startPosition % (pathParts.length - 1); + if (startPosition < 0) { + pathPartPosition += pathParts.length - 2; + } + pathPartPosition++; + } else { + pathPartPosition = startPosition % pathParts.length; + if (startPosition < 0) { + pathPartPosition += pathParts.length - 1; + } + } + return pathPartPosition; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java index 8a210b1b6..5ed4578d3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationPromptEntry.java @@ -28,12 +28,6 @@ public AuthenticationPromptEntry() { super(); } - public AuthenticationPromptEntry(String prompt, boolean echo) { - super(); - setPrompt(prompt, true); - setEcho(echo); - } - public AuthenticationPromptEntry(AuthenticationPromptEntry other) { super(other); promptLength = other.promptLength != null ? other.promptLength.createCopy() : null; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java index 4a4f44f73..8b0cf4f9e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/message/holder/AuthenticationResponseEntry.java @@ -25,11 +25,6 @@ public AuthenticationResponseEntry() { super(); } - public AuthenticationResponseEntry(String response) { - super(); - setResponse(response, true); - } - public AuthenticationResponseEntry(AuthenticationResponseEntry other) { super(other); responseLength = other.responseLength != null ? other.responseLength.createCopy() : null; diff --git a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathModificationTest.java b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathModificationTest.java new file mode 100644 index 000000000..f030e0542 --- /dev/null +++ b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathModificationTest.java @@ -0,0 +1,170 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2025 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.modifieablevariable.pth; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +import de.rub.nds.sshattacker.core.modifiablevariable.path.ModifiablePath; +import de.rub.nds.sshattacker.core.modifiablevariable.path.PathDeleteModification; +import de.rub.nds.sshattacker.core.modifiablevariable.path.PathInsertValueModification; +import org.junit.jupiter.api.Test; + +public class PathModificationTest { + + @Test + public void testInsert() { + ModifiablePath nullPath = new ModifiablePath(); + nullPath.setModification(new PathInsertValueModification("test", 2)); + assertNull(nullPath.getValue()); + + ModifiablePath emptyPath = new ModifiablePath(""); + emptyPath.setModification(new PathInsertValueModification("test", 0)); + assertEquals("test", emptyPath.getValue()); + emptyPath.setModification(new PathInsertValueModification("test", 10)); + assertEquals("test", emptyPath.getValue()); + + ModifiablePath simplePathLeadingSlash = new ModifiablePath("/this/is/a/path"); + simplePathLeadingSlash.setModification(new PathInsertValueModification("test", 0)); + assertEquals("/test/this/is/a/path", simplePathLeadingSlash.getValue()); + simplePathLeadingSlash.setModification(new PathInsertValueModification("test", 4)); + assertEquals("/this/is/a/path/test", simplePathLeadingSlash.getValue()); + simplePathLeadingSlash.setModification(new PathInsertValueModification("test", 5)); + assertEquals("/test/this/is/a/path", simplePathLeadingSlash.getValue()); + simplePathLeadingSlash.setModification(new PathInsertValueModification("test", 6)); + assertEquals("/this/test/is/a/path", simplePathLeadingSlash.getValue()); + simplePathLeadingSlash.setModification(new PathInsertValueModification("test", 11)); + assertEquals("/this/test/is/a/path", simplePathLeadingSlash.getValue()); + + ModifiablePath simplePathLeadingAndTrailingSlash = new ModifiablePath("/this/is/a/path/"); + simplePathLeadingAndTrailingSlash.setModification( + new PathInsertValueModification("test", 0)); + assertEquals("/test/this/is/a/path/", simplePathLeadingAndTrailingSlash.getValue()); + simplePathLeadingAndTrailingSlash.setModification( + new PathInsertValueModification("test", 4)); + assertEquals("/this/is/a/path/test/", simplePathLeadingAndTrailingSlash.getValue()); + simplePathLeadingAndTrailingSlash.setModification( + new PathInsertValueModification("test", 5)); + assertEquals("/test/this/is/a/path/", simplePathLeadingAndTrailingSlash.getValue()); + simplePathLeadingAndTrailingSlash.setModification( + new PathInsertValueModification("test", 6)); + assertEquals("/this/test/is/a/path/", simplePathLeadingAndTrailingSlash.getValue()); + simplePathLeadingAndTrailingSlash.setModification( + new PathInsertValueModification("test", 11)); + assertEquals("/this/test/is/a/path/", simplePathLeadingAndTrailingSlash.getValue()); + + ModifiablePath simplePath = new ModifiablePath("this/is/a/path"); + simplePath.setModification(new PathInsertValueModification("test", 0)); + assertEquals("test/this/is/a/path", simplePath.getValue()); + simplePath.setModification(new PathInsertValueModification("test", 4)); + assertEquals("this/is/a/path/test", simplePath.getValue()); + simplePath.setModification(new PathInsertValueModification("test", 5)); + assertEquals("test/this/is/a/path", simplePath.getValue()); + simplePath.setModification(new PathInsertValueModification("test", 6)); + assertEquals("this/test/is/a/path", simplePath.getValue()); + simplePath.setModification(new PathInsertValueModification("test", 11)); + assertEquals("this/test/is/a/path", simplePath.getValue()); + + ModifiablePath simplePathTrailingSlash = new ModifiablePath("this/is/a/path/"); + simplePathTrailingSlash.setModification(new PathInsertValueModification("test", 0)); + assertEquals("test/this/is/a/path/", simplePathTrailingSlash.getValue()); + simplePathTrailingSlash.setModification(new PathInsertValueModification("test", 4)); + assertEquals("this/is/a/path/test/", simplePathTrailingSlash.getValue()); + simplePathTrailingSlash.setModification(new PathInsertValueModification("test", 5)); + assertEquals("test/this/is/a/path/", simplePathTrailingSlash.getValue()); + simplePathTrailingSlash.setModification(new PathInsertValueModification("test", 6)); + assertEquals("this/test/is/a/path/", simplePathTrailingSlash.getValue()); + simplePathTrailingSlash.setModification(new PathInsertValueModification("test", 11)); + assertEquals("this/test/is/a/path/", simplePathTrailingSlash.getValue()); + + ModifiablePath rootPath = new ModifiablePath("/"); + rootPath.setModification(new PathInsertValueModification("test", 0)); + assertEquals("/test/", rootPath.getValue()); + rootPath.setModification(new PathInsertValueModification("test", 2)); + assertEquals("/test/", rootPath.getValue()); + rootPath.setModification(new PathInsertValueModification("test", 5)); + assertEquals("/test/", rootPath.getValue()); + } + + @Test + public void testDelete() { + ModifiablePath nullPath = new ModifiablePath(); + nullPath.setModification(new PathDeleteModification(0, 1)); + assertNull(nullPath.getValue()); + + ModifiablePath emptyPath = new ModifiablePath(""); + emptyPath.setModification(new PathDeleteModification(0, 1)); + assertEquals("", emptyPath.getValue()); + emptyPath.setModification(new PathDeleteModification(1, 10)); + assertEquals("", emptyPath.getValue()); + + ModifiablePath simplePathLeadingSlash = new ModifiablePath("/this/is/a/path"); + simplePathLeadingSlash.setModification(new PathDeleteModification(0, 0)); + assertEquals("/this/is/a/path", simplePathLeadingSlash.getValue()); + simplePathLeadingSlash.setModification(new PathDeleteModification(4, 4)); + assertEquals("", simplePathLeadingSlash.getValue()); + simplePathLeadingSlash.setModification(new PathDeleteModification(4, 1)); + assertEquals("/is/a/path", simplePathLeadingSlash.getValue()); + simplePathLeadingSlash.setModification(new PathDeleteModification(5, 1)); + assertEquals("/this/a/path", simplePathLeadingSlash.getValue()); + simplePathLeadingSlash.setModification(new PathDeleteModification(6, 1)); + assertEquals("/this/is/path", simplePathLeadingSlash.getValue()); + simplePathLeadingSlash.setModification(new PathDeleteModification(11, 11)); + assertEquals("/this/is/a", simplePathLeadingSlash.getValue()); + + ModifiablePath simplePathLeadingAndTrailingSlash = new ModifiablePath("/this/is/a/path/"); + simplePathLeadingAndTrailingSlash.setModification(new PathDeleteModification(0, 0)); + assertEquals("/this/is/a/path/", simplePathLeadingAndTrailingSlash.getValue()); + simplePathLeadingAndTrailingSlash.setModification(new PathDeleteModification(4, 4)); + assertEquals("/", simplePathLeadingAndTrailingSlash.getValue()); + simplePathLeadingAndTrailingSlash.setModification(new PathDeleteModification(4, 1)); + assertEquals("/is/a/path/", simplePathLeadingAndTrailingSlash.getValue()); + simplePathLeadingAndTrailingSlash.setModification(new PathDeleteModification(5, 1)); + assertEquals("/this/a/path/", simplePathLeadingAndTrailingSlash.getValue()); + simplePathLeadingAndTrailingSlash.setModification(new PathDeleteModification(6, 1)); + assertEquals("/this/is/path/", simplePathLeadingAndTrailingSlash.getValue()); + simplePathLeadingAndTrailingSlash.setModification(new PathDeleteModification(11, 11)); + assertEquals("/this/is/a/", simplePathLeadingAndTrailingSlash.getValue()); + + ModifiablePath simplePath = new ModifiablePath("this/is/a/path"); + simplePath.setModification(new PathDeleteModification(0, 0)); + assertEquals("this/is/a/path", simplePath.getValue()); + simplePath.setModification(new PathDeleteModification(4, 4)); + assertEquals("", simplePath.getValue()); + simplePath.setModification(new PathDeleteModification(4, 1)); + assertEquals("is/a/path", simplePath.getValue()); + simplePath.setModification(new PathDeleteModification(5, 1)); + assertEquals("this/a/path", simplePath.getValue()); + simplePath.setModification(new PathDeleteModification(6, 1)); + assertEquals("this/is/path", simplePath.getValue()); + simplePath.setModification(new PathDeleteModification(11, 11)); + assertEquals("this/is/a", simplePath.getValue()); + + ModifiablePath simplePathTrailingSlash = new ModifiablePath("this/is/a/path/"); + simplePathTrailingSlash.setModification(new PathDeleteModification(0, 0)); + assertEquals("this/is/a/path/", simplePathTrailingSlash.getValue()); + simplePathTrailingSlash.setModification(new PathDeleteModification(4, 4)); + assertEquals("", simplePathTrailingSlash.getValue()); + simplePathTrailingSlash.setModification(new PathDeleteModification(4, 1)); + assertEquals("is/a/path/", simplePathTrailingSlash.getValue()); + simplePathTrailingSlash.setModification(new PathDeleteModification(5, 1)); + assertEquals("this/a/path/", simplePathTrailingSlash.getValue()); + simplePathTrailingSlash.setModification(new PathDeleteModification(6, 1)); + assertEquals("this/is/path/", simplePathTrailingSlash.getValue()); + simplePathTrailingSlash.setModification(new PathDeleteModification(11, 11)); + assertEquals("this/is/a/", simplePathTrailingSlash.getValue()); + + ModifiablePath rootPath = new ModifiablePath("/"); + rootPath.setModification(new PathDeleteModification(0, 0)); + assertEquals("/", rootPath.getValue()); + rootPath.setModification(new PathDeleteModification(2, 2)); + assertEquals("", rootPath.getValue()); + rootPath.setModification(new PathDeleteModification(5, 5)); + assertEquals("", rootPath.getValue()); + } +} diff --git a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathSerializationTest.java b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathSerializationTest.java new file mode 100644 index 000000000..4bb5a725a --- /dev/null +++ b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathSerializationTest.java @@ -0,0 +1,89 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2025 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.modifieablevariable.pth; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import de.rub.nds.modifiablevariable.VariableModification; +import de.rub.nds.sshattacker.core.modifiablevariable.path.ModifiablePath; +import de.rub.nds.sshattacker.core.modifiablevariable.path.PathInsertValueModification; +import de.rub.nds.sshattacker.core.modifiablevariable.path.PathModificationFactory; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBException; +import jakarta.xml.bind.Marshaller; +import jakarta.xml.bind.Unmarshaller; +import java.io.StringReader; +import java.io.StringWriter; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PathSerializationTest { + + private static final Logger LOGGER = LogManager.getLogger(); + + private ModifiablePath start; + + private String expectedResult, result; + + private StringWriter writer; + + private JAXBContext context; + + private Marshaller m; + + private Unmarshaller um; + + @BeforeEach + public void setUp() throws JAXBException { + start = new ModifiablePath("Hello from Test ❤️\\ \u0000 \u0001 \u0006"); + expectedResult = null; + result = null; + + writer = new StringWriter(); + context = JAXBContext.newInstance(ModifiablePath.class, PathInsertValueModification.class); + m = context.createMarshaller(); + m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); + um = context.createUnmarshaller(); + } + + @Test + public void testSerializeDeserializeSimple() throws Exception { + start.setModification(null); + start.setAssertEquals("Hello from Test 2 \\ \u0000 \u0001 \u0006"); + m.marshal(start, writer); + + String xmlString = writer.toString(); + LOGGER.debug(xmlString); + + um = context.createUnmarshaller(); + ModifiablePath unmarshalled = (ModifiablePath) um.unmarshal(new StringReader(xmlString)); + + expectedResult = "Hello from Test ❤️\\ \u0000 \u0001 \u0006"; + result = unmarshalled.getValue(); + assertEquals(expectedResult, result); + } + + @Test + public void testSerializeDeserializeWithModification() throws Exception { + VariableModification modifier = PathModificationFactory.insertValue("Uff! ", 0); + start.setModification(modifier); + m.marshal(start, writer); + + String xmlString = writer.toString(); + LOGGER.debug(xmlString); + + um = context.createUnmarshaller(); + ModifiablePath unmarshalled = (ModifiablePath) um.unmarshal(new StringReader(xmlString)); + + expectedResult = "Uff! /Hello from Test ❤️\\ \u0000 \u0001 \u0006"; + result = unmarshalled.getValue(); + assertEquals(expectedResult, result); + } +} From b364f620ccaf57dd374e83433ef3d6d0c55c7bc4 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 27 Feb 2025 11:25:44 +0100 Subject: [PATCH 161/203] Explicitly add Variable Modifications classes for serialization, because they are no longer strongly typed. Also add very simple tests, for testing serialization. --- .../nds/sshattacker/core/config/ConfigIO.java | 12 +- .../workflow/WorkflowTraceSerializer.java | 14 ++- .../core/serialization/SerializationTest.java | 111 ++++++++++++++++++ 3 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 SSH-Core/src/test/java/de/rub/nds/sshattacker/core/serialization/SerializationTest.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigIO.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigIO.java index 2d60abc1a..a892f6aa1 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigIO.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigIO.java @@ -7,12 +7,15 @@ */ package de.rub.nds.sshattacker.core.config; +import de.rub.nds.modifiablevariable.VariableModification; import de.rub.nds.sshattacker.core.config.filter.ConfigDisplayFilter; import jakarta.xml.bind.JAXBContext; import jakarta.xml.bind.JAXBException; import jakarta.xml.bind.Unmarshaller; import jakarta.xml.bind.util.JAXBSource; import java.io.*; +import java.util.HashSet; +import java.util.Set; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; @@ -21,6 +24,7 @@ import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; +import org.reflections.Reflections; public final class ConfigIO { @@ -29,7 +33,13 @@ public final class ConfigIO { static synchronized JAXBContext getJAXBContext() throws JAXBException { if (context == null) { - context = JAXBContext.newInstance(Config.class); + Set> classes = new HashSet<>(); + classes.add(Config.class); + // We need to add all VariableModification classes because modifications are not + // strongly typed + Reflections reflections = new Reflections("de.rub.nds"); + classes.addAll(reflections.getSubTypesOf(VariableModification.class)); + context = JAXBContext.newInstance(classes.toArray(new Class[0])); } return context; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceSerializer.java index 1ad328d1e..a97845581 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceSerializer.java @@ -7,15 +7,14 @@ */ package de.rub.nds.sshattacker.core.workflow; +import de.rub.nds.modifiablevariable.VariableModification; import jakarta.xml.bind.JAXBContext; import jakarta.xml.bind.JAXBException; import jakarta.xml.bind.Unmarshaller; import jakarta.xml.bind.util.JAXBSource; import java.io.*; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; @@ -26,6 +25,7 @@ import javax.xml.transform.stream.StreamResult; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.reflections.Reflections; public final class WorkflowTraceSerializer { @@ -36,7 +36,13 @@ public final class WorkflowTraceSerializer { static synchronized JAXBContext getJAXBContext() throws JAXBException { if (context == null) { - context = JAXBContext.newInstance(WorkflowTrace.class); + Set> classes = new HashSet<>(); + classes.add(WorkflowTrace.class); + // We need to add all VariableModification classes because modifications are not + // strongly typed + Reflections reflections = new Reflections("de.rub.nds"); + classes.addAll(reflections.getSubTypesOf(VariableModification.class)); + context = JAXBContext.newInstance(classes.toArray(new Class[0])); } return context; } diff --git a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/serialization/SerializationTest.java b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/serialization/SerializationTest.java new file mode 100644 index 000000000..9f9f76827 --- /dev/null +++ b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/serialization/SerializationTest.java @@ -0,0 +1,111 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2025 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.serialization; + +import static org.junit.jupiter.api.Assertions.*; + +import de.rub.nds.modifiablevariable.util.Modifiable; +import de.rub.nds.sshattacker.core.config.Config; +import de.rub.nds.sshattacker.core.config.ConfigIO; +import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationPromptEntries; +import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationResponseEntries; +import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthInfoRequestMessage; +import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthInfoResponseMessage; +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationPromptEntry; +import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationResponseEntry; +import de.rub.nds.sshattacker.core.workflow.WorkflowTrace; +import de.rub.nds.sshattacker.core.workflow.WorkflowTraceSerializer; +import de.rub.nds.sshattacker.core.workflow.action.ReceiveAction; +import de.rub.nds.sshattacker.core.workflow.action.SendAction; +import java.io.*; +import java.util.ArrayList; +import org.junit.jupiter.api.Test; + +public class SerializationTest { + + @Test + public void testSerializeDeserializeConfig() { + Config config = new Config(); + + ArrayList preConfiguredAuthResponses = new ArrayList<>(); + + // First Auth Response + ArrayList preConfiguredAuthResponse1 = new ArrayList<>(); + AuthenticationResponseEntry firstResponse = new AuthenticationResponseEntry(); + firstResponse.setResponse(Modifiable.explicit("test")); + preConfiguredAuthResponse1.add(firstResponse); + preConfiguredAuthResponses.add( + new AuthenticationResponseEntries(preConfiguredAuthResponse1)); + + // Second Auth Response + ArrayList preConfiguredAuthResponse2 = new ArrayList<>(); + AuthenticationResponseEntry secondResponse = new AuthenticationResponseEntry(); + secondResponse.setResponse(Modifiable.explicit("test2")); + preConfiguredAuthResponse2.add(secondResponse); + preConfiguredAuthResponses.add( + new AuthenticationResponseEntries(preConfiguredAuthResponse2)); + + // Auth Prompt + ArrayList preConfiguredAuthPrompts = new ArrayList<>(); + ArrayList preConfiguredAuthPrompt1 = new ArrayList<>(); + AuthenticationPromptEntry firstPrompt = new AuthenticationPromptEntry(); + firstPrompt.setPrompt(Modifiable.explicit("AUTHENTICATE:")); + preConfiguredAuthPrompt1.add(firstPrompt); + preConfiguredAuthPrompts.add(new AuthenticationPromptEntries(preConfiguredAuthPrompt1)); + + config.setPreConfiguredAuthResponses(preConfiguredAuthResponses); + config.setPreConfiguredAuthPrompts(preConfiguredAuthPrompts); + + ByteArrayOutputStream firstOutputStream = new ByteArrayOutputStream(); + ConfigIO.write(config, firstOutputStream); + byte[] firstWrite = firstOutputStream.toByteArray(); + + Config deserializedConfig = ConfigIO.read(new ByteArrayInputStream(firstWrite)); + + ByteArrayOutputStream secondOutputStream = new ByteArrayOutputStream(); + ConfigIO.write(deserializedConfig, secondOutputStream); + byte[] secondWrite = secondOutputStream.toByteArray(); + + assertArrayEquals(firstWrite, secondWrite, "Config serialization should be consitent"); + } + + @Test + public void testSerializeDeserializeWorkflowTrace() throws Exception { + WorkflowTrace workflowTrace = new WorkflowTrace(); + + ArrayList preConfiguredAuthResponses = new ArrayList<>(); + + // Send Action + UserAuthInfoRequestMessage request = new UserAuthInfoRequestMessage(); + AuthenticationPromptEntry firstPrompt = new AuthenticationPromptEntry(); + firstPrompt.setPrompt(Modifiable.explicit("AUTHENTICATE:")); + request.addPromptEntry(firstPrompt); + workflowTrace.addSshAction(new SendAction(request)); + + // Receive Action + UserAuthInfoResponseMessage response = new UserAuthInfoResponseMessage(); + AuthenticationResponseEntry firstResponse = new AuthenticationResponseEntry(); + firstResponse.setResponse(Modifiable.explicit("test1")); + response.addResponseEntry(firstResponse); + workflowTrace.addSshAction(new ReceiveAction(response)); + + ByteArrayOutputStream firstOutputStream = new ByteArrayOutputStream(); + WorkflowTraceSerializer.write(firstOutputStream, workflowTrace); + byte[] firstWrite = firstOutputStream.toByteArray(); + + WorkflowTrace deserializedTrace = + WorkflowTraceSerializer.insecureRead(new ByteArrayInputStream(firstWrite)); + + ByteArrayOutputStream secondOutputStream = new ByteArrayOutputStream(); + WorkflowTraceSerializer.write(secondOutputStream, deserializedTrace); + byte[] secondWrite = secondOutputStream.toByteArray(); + + assertArrayEquals( + firstWrite, secondWrite, "WorkflowTrace serialization should be consitent"); + } +} From 609a90ff473dfeb1fb4719a04383f054c5492fc3 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 27 Feb 2025 11:26:51 +0100 Subject: [PATCH 162/203] org.Reflections is now a dependency because of the commit before. --- SSH-Core/pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/SSH-Core/pom.xml b/SSH-Core/pom.xml index e63ca95f2..e1095ea93 100755 --- a/SSH-Core/pom.xml +++ b/SSH-Core/pom.xml @@ -37,7 +37,6 @@ org.reflections reflections - test From af9e2db5d8e85c480843b19a6d805d5fc42932b2 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 27 Feb 2025 11:59:18 +0100 Subject: [PATCH 163/203] remove unused variable in test --- .../nds/sshattacker/core/serialization/SerializationTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/serialization/SerializationTest.java b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/serialization/SerializationTest.java index 9f9f76827..ec35cb1d9 100644 --- a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/serialization/SerializationTest.java +++ b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/serialization/SerializationTest.java @@ -78,8 +78,6 @@ public void testSerializeDeserializeConfig() { public void testSerializeDeserializeWorkflowTrace() throws Exception { WorkflowTrace workflowTrace = new WorkflowTrace(); - ArrayList preConfiguredAuthResponses = new ArrayList<>(); - // Send Action UserAuthInfoRequestMessage request = new UserAuthInfoRequestMessage(); AuthenticationPromptEntry firstPrompt = new AuthenticationPromptEntry(); From 127859c1a99abcca7d18e7356d20634bbbb85dba Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 27 Feb 2025 12:18:33 +0100 Subject: [PATCH 164/203] Add missing builder methods to ModifiablePath. --- .../de/rub/nds/sshattacker/core/config/ConfigIO.java | 3 +-- .../core/modifiablevariable/path/ModifiablePath.java | 9 +++++++++ .../core/workflow/WorkflowTraceSerializer.java | 3 +-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigIO.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigIO.java index a892f6aa1..e050d7243 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigIO.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/ConfigIO.java @@ -35,8 +35,7 @@ static synchronized JAXBContext getJAXBContext() throws JAXBException { if (context == null) { Set> classes = new HashSet<>(); classes.add(Config.class); - // We need to add all VariableModification classes because modifications are not - // strongly typed + // Add all VariableModification classes because they aren't strongly typed Reflections reflections = new Reflections("de.rub.nds"); classes.addAll(reflections.getSubTypesOf(VariableModification.class)); context = JAXBContext.newInstance(classes.toArray(new Class[0])); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/ModifiablePath.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/ModifiablePath.java index 6f9299149..4c28e88ca 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/ModifiablePath.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/ModifiablePath.java @@ -51,6 +51,15 @@ private static ModifiablePath getModifiablePathWithModification( return modifiablePath; } + public static ModifiablePath explicitPath(String explicitValue) { + return getModifiablePathWithModification( + PathModificationFactory.explicitValue(explicitValue)); + } + + public static ModifiablePath deletePath(int position, int count) { + return getModifiablePathWithModification(PathModificationFactory.delete(position, count)); + } + public static ModifiablePath prependPath(String perpendValue) { return getModifiablePathWithModification( PathModificationFactory.prependValue(perpendValue)); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceSerializer.java index a97845581..0fd54d0e7 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/WorkflowTraceSerializer.java @@ -38,8 +38,7 @@ static synchronized JAXBContext getJAXBContext() throws JAXBException { if (context == null) { Set> classes = new HashSet<>(); classes.add(WorkflowTrace.class); - // We need to add all VariableModification classes because modifications are not - // strongly typed + // Add all VariableModification classes because they aren't strongly typed Reflections reflections = new Reflections("de.rub.nds"); classes.addAll(reflections.getSubTypesOf(VariableModification.class)); context = JAXBContext.newInstance(classes.toArray(new Class[0])); From 0c2145a0e6787006266d7b3e8fb57383839d161d Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 27 Feb 2025 16:00:45 +0100 Subject: [PATCH 165/203] Split SFTP v4 Messages out from SFTPv3 messages. This way the code is cleaner / easier to read, it would be possible to create singletons for Parsers and the user can choose himself what message versions he wants to use, without relying on the config option for forced negotiated sftp version. --- .../nds/sshattacker/core/config/Config.java | 18 +- .../core/data/sftp/SftpManager.java | 8 +- .../core/data/sftp/SftpMessageParser.java | 90 ++- .../handler/SftpInitMessageHandler.java | 10 +- .../handler/SftpUnknownMessageHandler.java | 10 +- .../handler/SftpVersionMessageHandler.java | 10 +- ...pRequestCheckFileHandleMessageHandler.java | 12 +- ...ftpRequestCheckFileNameMessageHandler.java | 12 +- .../SftpRequestCopyDataMessageHandler.java | 12 +- .../SftpRequestCopyFileMessageHandler.java | 12 +- .../SftpRequestExpandPathMessageHandler.java | 12 +- .../SftpRequestFileStatVfsMessageHandler.java | 12 +- .../SftpRequestFileSyncMessageHandler.java | 12 +- ...ftpRequestGetTempFolderMessageHandler.java | 12 +- .../SftpRequestHardlinkMessageHandler.java | 12 +- ...ftpRequestHomeDirectoryMessageHandler.java | 12 +- .../SftpRequestLimitsMessageHandler.java | 12 +- .../SftpRequestLinkSetStatMessageHandler.java | 16 +- ...tpRequestMakeTempFolderMessageHandler.java | 12 +- .../SftpRequestPosixRenameMessageHandler.java | 12 +- ...tpRequestSpaceAvailableMessageHandler.java | 12 +- .../SftpRequestStatVfsMessageHandler.java | 12 +- .../SftpRequestTextSeekMessageHandler.java | 12 +- .../SftpRequestUnknownMessageHandler.java | 12 +- ...pRequestUsersGroupsByIdMessageHandler.java | 12 +- .../SftpRequestVendorIdMessageHandler.java | 12 +- .../SftpResponseCheckFileMessageHandler.java | 12 +- .../SftpResponseLimitsMessageHandler.java | 12 +- ...pResponseSpaceAvailableMessageHandler.java | 12 +- .../SftpResponseStatVfsMessageHandler.java | 12 +- .../SftpResponseUnknownMessageHandler.java | 12 +- ...ResponseUsersGroupsByIdMessageHandler.java | 12 +- .../SftpAbstractExtensionHandler.java | 4 +- .../SftpExtensionCheckFileHandler.java | 10 +- .../SftpExtensionCopyDataHandler.java | 10 +- .../SftpExtensionCopyFileHandler.java | 10 +- .../SftpExtensionExpandPathHandler.java | 10 +- .../SftpExtensionFileStatVfsHandler.java | 10 +- .../SftpExtensionFileSyncHandler.java | 10 +- .../SftpExtensionGetTempFolderHandler.java | 10 +- .../SftpExtensionHardlinkHandler.java | 10 +- .../SftpExtensionHomeDirectoryHandler.java | 10 +- .../extension/SftpExtensionLimitsHandler.java | 10 +- .../SftpExtensionLinkSetStatHandler.java | 10 +- .../SftpExtensionMakeTempFolderHandler.java | 10 +- .../SftpExtensionNewlineHandler.java | 10 +- .../SftpExtensionPosixRenameHandler.java | 10 +- .../SftpExtensionSpaceAvailableHandler.java | 10 +- .../SftpExtensionStatVfsHandler.java | 10 +- .../SftpExtensionTextSeekHandler.java | 10 +- .../SftpExtensionUnknownHandler.java | 10 +- .../SftpExtensionUsersGroupsByIdHandler.java | 10 +- .../SftpExtensionVendorIdHandler.java | 10 +- .../handler/holder/SftpAclEntryHandler.java | 10 +- .../holder/SftpFileAttributesHandler.java | 14 +- .../SftpFileExtendedAttributeHandler.java | 10 +- .../holder/SftpFileNameEntryHandler.java | 14 +- .../handler/holder/SftpIdEntryHandler.java | 10 +- .../handler/holder/SftpNameEntryHandler.java | 10 +- .../SftpRequestCloseMessageHandler.java | 10 +- .../SftpRequestFileSetStatMessageHandler.java | 14 +- .../SftpRequestFileStatMessageHandler.java | 14 +- .../SftpRequestLinkStatMessageHandler.java | 10 +- .../SftpRequestMakeDirMessageHandler.java | 14 +- .../request/SftpRequestMessageHandler.java | 4 +- .../SftpRequestOpenDirMessageHandler.java | 10 +- .../SftpRequestOpenMessageHandler.java | 14 +- .../SftpRequestReadDirMessageHandler.java | 10 +- .../SftpRequestReadLinkMessageHandler.java | 10 +- .../SftpRequestReadMessageHandler.java | 10 +- .../SftpRequestRealPathMessageHandler.java | 10 +- .../SftpRequestRemoveDirMessageHandler.java | 10 +- .../SftpRequestRemoveMessageHandler.java | 10 +- .../SftpRequestRenameMessageHandler.java | 10 +- .../SftpRequestSetStatMessageHandler.java | 14 +- .../SftpRequestStatMessageHandler.java | 14 +- ...SftpRequestSymbolicLinkMessageHandler.java | 10 +- .../SftpRequestWriteMessageHandler.java | 10 +- .../SftpResponseAttributesMessageHandler.java | 14 +- .../SftpResponseDataMessageHandler.java | 10 +- .../SftpResponseHandleMessageHandler.java | 10 +- .../response/SftpResponseMessageHandler.java | 4 +- .../SftpResponseNameMessageHandler.java | 14 +- .../SftpResponseStatusMessageHandler.java | 10 +- .../message/SftpHandshakeMessage.java | 4 +- .../{ => common}/message/SftpInitMessage.java | 4 +- .../message/SftpUnknownMessage.java | 4 +- .../message/SftpVersionMessage.java | 4 +- .../SftpRequestCheckFileHandleMessage.java | 4 +- .../SftpRequestCheckFileNameMessage.java | 4 +- .../SftpRequestCopyDataMessage.java | 4 +- .../SftpRequestCopyFileMessage.java | 4 +- .../SftpRequestExpandPathMessage.java | 4 +- .../SftpRequestExtendedMessage.java | 4 +- .../SftpRequestExtendedWithHandleMessage.java | 2 +- .../SftpRequestExtendedWithPathMessage.java | 2 +- .../SftpRequestFileStatVfsMessage.java | 4 +- .../SftpRequestFileSyncMessage.java | 4 +- .../SftpRequestGetTempFolderMessage.java | 4 +- .../SftpRequestHardlinkMessage.java | 4 +- .../SftpRequestHomeDirectoryMessage.java | 4 +- .../SftpRequestLimitsMessage.java | 4 +- .../SftpRequestLinkSetStatMessage.java | 6 +- .../SftpRequestMakeTempFolderMessage.java | 4 +- .../SftpRequestPosixRenameMessage.java | 4 +- .../SftpRequestSpaceAvailableMessage.java | 4 +- .../SftpRequestStatVfsMessage.java | 4 +- .../SftpRequestTextSeekMessage.java | 6 +- .../SftpRequestUnknownMessage.java | 4 +- .../SftpRequestUsersGroupsByIdMessage.java | 6 +- .../SftpRequestVendorIdMessage.java | 4 +- .../SftpResponseCheckFileMessage.java | 6 +- .../SftpResponseLimitsMessage.java | 6 +- .../SftpResponseSpaceAvailableMessage.java | 6 +- .../SftpResponseStatVfsMessage.java | 6 +- .../SftpResponseUnknownMessage.java | 6 +- .../SftpResponseUsersGroupsByIdMessage.java | 8 +- .../extension/SftpAbstractExtension.java | 4 +- .../extension/SftpExtensionCheckFile.java | 4 +- .../extension/SftpExtensionCopyData.java | 4 +- .../extension/SftpExtensionCopyFile.java | 4 +- .../extension/SftpExtensionExpandPath.java | 4 +- .../extension/SftpExtensionFileStatVfs.java | 4 +- .../extension/SftpExtensionFileSync.java | 4 +- .../extension/SftpExtensionGetTempFolder.java | 4 +- .../extension/SftpExtensionHardlink.java | 4 +- .../extension/SftpExtensionHomeDirectory.java | 4 +- .../extension/SftpExtensionLimits.java | 4 +- .../extension/SftpExtensionLinkSetStat.java | 4 +- .../SftpExtensionMakeTempFolder.java | 4 +- .../extension/SftpExtensionNewline.java | 5 +- .../extension/SftpExtensionPosixRename.java | 4 +- .../SftpExtensionSpaceAvailable.java | 4 +- .../extension/SftpExtensionStatVfs.java | 4 +- .../extension/SftpExtensionTextSeek.java | 5 +- .../extension/SftpExtensionUnknown.java | 4 +- .../SftpExtensionUsersGroupsById.java | 4 +- .../extension/SftpExtensionVendorId.java | 4 +- .../extension/SftpExtensionWithVersion.java | 2 +- .../message/holder/SftpAclEntry.java | 4 +- .../message/holder/SftpFileAttributes.java | 249 ++++++++ .../holder/SftpFileExtendedAttribute.java | 4 +- .../message/holder/SftpFileNameEntry.java | 4 +- .../message/holder/SftpIdEntry.java | 4 +- .../message/holder/SftpNameEntry.java | 4 +- .../request/SftpRequestCloseMessage.java | 4 +- .../SftpRequestFileSetStatMessage.java | 6 +- .../request/SftpRequestFileStatMessage.java | 30 +- .../request/SftpRequestLinkStatMessage.java | 4 +- .../request/SftpRequestMakeDirMessage.java | 6 +- .../message/request/SftpRequestMessage.java | 2 +- .../request/SftpRequestOpenDirMessage.java | 4 +- .../request/SftpRequestOpenMessage.java | 6 +- .../request/SftpRequestReadDirMessage.java | 4 +- .../request/SftpRequestReadLinkMessage.java | 4 +- .../request/SftpRequestReadMessage.java | 4 +- .../request/SftpRequestRealPathMessage.java | 4 +- .../request/SftpRequestRemoveDirMessage.java | 4 +- .../request/SftpRequestRemoveMessage.java | 4 +- .../request/SftpRequestRenameMessage.java | 4 +- .../request/SftpRequestSetStatMessage.java | 6 +- .../request/SftpRequestStatMessage.java | 30 +- .../SftpRequestSymbolicLinkMessage.java | 4 +- .../request/SftpRequestWithHandleMessage.java | 2 +- .../request/SftpRequestWithPathMessage.java | 2 +- .../request/SftpRequestWriteMessage.java | 4 +- .../SftpResponseAttributesMessage.java | 6 +- .../response/SftpResponseDataMessage.java | 4 +- .../response/SftpResponseHandleMessage.java | 4 +- .../message/response/SftpResponseMessage.java | 2 +- .../response/SftpResponseNameMessage.java | 6 +- .../response/SftpResponseStatusMessage.java | 4 +- .../parser/SftpHandshakeMessageParser.java | 8 +- .../parser/SftpInitMessageParser.java | 4 +- .../parser/SftpUnknownMessageParser.java | 4 +- .../parser/SftpVersionMessageParser.java | 4 +- ...tpRequestCheckFileHandleMessageParser.java | 4 +- ...SftpRequestCheckFileNameMessageParser.java | 4 +- .../SftpRequestCopyDataMessageParser.java | 4 +- .../SftpRequestCopyFileMessageParser.java | 4 +- .../SftpRequestExpandPathMessageParser.java | 4 +- .../SftpRequestExtendedMessageParser.java | 6 +- ...equestExtendedWithHandleMessageParser.java | 4 +- ...pRequestExtendedWithPathMessageParser.java | 4 +- .../SftpRequestFileStatVfsMessageParser.java | 4 +- .../SftpRequestFileSyncMessageParser.java | 4 +- ...SftpRequestGetTempFolderMessageParser.java | 4 +- .../SftpRequestHardlinkMessageParser.java | 4 +- ...SftpRequestHomeDirectoryMessageParser.java | 4 +- .../SftpRequestLimitsMessageParser.java | 4 +- .../SftpRequestLinkSetStatMessageParser.java | 17 +- ...ftpRequestMakeTempFolderMessageParser.java | 4 +- .../SftpRequestPosixRenameMessageParser.java | 4 +- ...ftpRequestSpaceAvailableMessageParser.java | 4 +- .../SftpRequestStatVfsMessageParser.java | 4 +- .../SftpRequestTextSeekMessageParser.java | 4 +- .../SftpRequestUnknownMessageParser.java | 4 +- ...tpRequestUsersGroupsByIdMessageParser.java | 6 +- .../SftpRequestVendorIdMessageParser.java | 4 +- .../SftpResponseCheckFileMessageParser.java | 6 +- .../SftpResponseLimitsMessageParser.java | 6 +- ...tpResponseSpaceAvailableMessageParser.java | 6 +- .../SftpResponseStatVfsMessageParser.java | 6 +- .../SftpResponseUnknownMessageParser.java | 6 +- ...pResponseUsersGroupsByIdMessageParser.java | 8 +- .../SftpAbstractExtensionParser.java | 4 +- .../extension/SftpExtensionNewlineParser.java | 4 +- .../extension/SftpExtensionUnknownParser.java | 4 +- .../SftpExtensionVendorIdParser.java | 4 +- .../SftpExtensionWithVersionParser.java | 4 +- .../parser/holder/SftpAclEntryParser.java | 4 +- .../holder/SftpFileAttributesParser.java | 109 ++++ .../SftpFileExtendedAttributeParser.java | 4 +- .../holder/SftpFileNameEntryParser.java | 29 +- .../parser/holder/SftpIdEntryParser.java | 4 +- .../parser/holder/SftpNameEntryParser.java | 4 +- .../SftpRequestCloseMessageParser.java | 4 +- .../SftpRequestFileSetStatMessageParser.java | 17 +- .../SftpRequestFileStatMessageParser.java | 30 + .../SftpRequestLinkStatMessageParser.java | 4 +- .../SftpRequestMakeDirMessageParser.java | 17 +- .../request/SftpRequestMessageParser.java | 4 +- .../SftpRequestOpenDirMessageParser.java | 4 +- .../request/SftpRequestOpenMessageParser.java | 16 +- .../SftpRequestReadDirMessageParser.java | 4 +- .../SftpRequestReadLinkMessageParser.java | 4 +- .../request/SftpRequestReadMessageParser.java | 4 +- .../SftpRequestRealPathMessageParser.java | 4 +- .../SftpRequestRemoveDirMessageParser.java | 4 +- .../SftpRequestRemoveMessageParser.java | 4 +- .../SftpRequestRenameMessageParser.java | 4 +- .../SftpRequestSetStatMessageParser.java | 17 +- .../request/SftpRequestStatMessageParser.java | 30 + .../SftpRequestSymbolicLinkMessageParser.java | 4 +- .../SftpRequestWithHandleMessageParser.java | 4 +- .../SftpRequestWithPathMessageParser.java | 4 +- .../SftpRequestWriteMessageParser.java | 4 +- .../SftpResponseAttributesMessageParser.java | 17 +- .../SftpResponseDataMessageParser.java | 4 +- .../SftpResponseHandleMessageParser.java | 4 +- .../response/SftpResponseMessageParser.java | 4 +- .../SftpResponseNameMessageParser.java | 16 +- .../SftpResponseStatusMessageParser.java | 4 +- .../preperator/SftpInitMessagePreparator.java | 19 +- .../SftpUnknownMessagePreparator.java | 4 +- .../SftpVersionMessagePreparator.java | 4 +- ...questCheckFileHandleMessagePreparator.java | 4 +- ...RequestCheckFileNameMessagePreparator.java | 4 +- .../SftpRequestCopyDataMessagePreparator.java | 4 +- .../SftpRequestCopyFileMessagePreparator.java | 4 +- ...ftpRequestExpandPathMessagePreparator.java | 4 +- .../SftpRequestExtendedMessagePreparator.java | 6 +- ...tpRequestFileStatVfsMessagePreparator.java | 4 +- .../SftpRequestFileSyncMessagePreparator.java | 4 +- ...RequestGetTempFolderMessagePreparator.java | 4 +- .../SftpRequestHardlinkMessagePreparator.java | 4 +- ...RequestHomeDirectoryMessagePreparator.java | 4 +- .../SftpRequestLimitsMessagePreparator.java | 4 +- ...tpRequestLinkSetStatMessagePreparator.java | 4 +- ...equestMakeTempFolderMessagePreparator.java | 4 +- ...tpRequestPosixRenameMessagePreparator.java | 4 +- ...equestSpaceAvailableMessagePreparator.java | 4 +- .../SftpRequestStatVfsMessagePreparator.java | 4 +- .../SftpRequestTextSeekMessagePreparator.java | 4 +- .../SftpRequestUnknownMessagePreparator.java | 4 +- ...questUsersGroupsByIdMessagePreparator.java | 4 +- .../SftpRequestVendorIdMessagePreparator.java | 4 +- ...ftpResponseCheckFileMessagePreparator.java | 4 +- ...SftpResponseExtendedMessagePreparator.java | 6 +- .../SftpResponseLimitsMessagePreparator.java | 4 +- ...sponseSpaceAvailableMessagePreparator.java | 4 +- .../SftpResponseStatVfsMessagePreparator.java | 4 +- .../SftpResponseUnknownMessagePreparator.java | 4 +- ...ponseUsersGroupsByIdMessagePreparator.java | 6 +- .../SftpAbstractExtensionPreparator.java | 4 +- .../SftpExtensionFileStatVfsPreparator.java | 4 +- .../SftpExtensionNewlinePreparator.java | 4 +- .../SftpExtensionStatVfsPreparator.java | 4 +- .../SftpExtensionUnknownPreparator.java | 4 +- .../SftpExtensionVendorIdPreparator.java | 4 +- .../SftpExtensionWithVersionPreparator.java | 4 +- .../holder/SftpAclEntryPreparator.java | 4 +- .../holder/SftpFileAttributesPreparator.java | 76 +++ .../SftpFileExtendedAttributePreparator.java | 4 +- .../holder/SftpFileNameEntryPreparator.java | 13 +- .../holder/SftpIdEntryPreparator.java | 4 +- .../holder/SftpNameEntryPreparator.java | 4 +- .../SftpRequestCloseMessagePreparator.java | 4 +- ...tpRequestFileSetStatMessagePreparator.java | 4 +- .../SftpRequestFileStatMessagePreparator.java | 11 +- .../SftpRequestLinkStatMessagePreparator.java | 4 +- .../SftpRequestMakeDirMessagePreparator.java | 4 +- .../request/SftpRequestMessagePreparator.java | 4 +- .../SftpRequestOpenDirMessagePreparator.java | 4 +- .../SftpRequestOpenMessagePreparator.java | 4 +- .../SftpRequestReadDirMessagePreparator.java | 4 +- .../SftpRequestReadLinkMessagePreparator.java | 4 +- .../SftpRequestReadMessagePreparator.java | 4 +- .../SftpRequestRealPathMessagePreparator.java | 4 +- ...SftpRequestRemoveDirMessagePreparator.java | 4 +- .../SftpRequestRemoveMessagePreparator.java | 4 +- .../SftpRequestRenameMessagePreparator.java | 4 +- .../SftpRequestSetStatMessagePreparator.java | 4 +- .../SftpRequestStatMessagePreparator.java | 11 +- ...pRequestSymbolicLinkMessagePreparator.java | 4 +- .../SftpRequestWriteMessagePreparator.java | 4 +- ...tpResponseAttributesMessagePreparator.java | 4 +- .../SftpResponseDataMessagePreparator.java | 4 +- .../SftpResponseHandleMessagePreparator.java | 4 +- .../SftpResponseMessagePreparator.java | 4 +- .../SftpResponseNameMessagePreparator.java | 4 +- .../SftpResponseStatusMessagePreparator.java | 4 +- .../SftpHandshakeMessageSerializer.java | 4 +- .../serializer/SftpInitMessageSerializer.java | 4 +- .../SftpUnknownMessageSerializer.java | 4 +- .../SftpVersionMessageSerializer.java | 4 +- ...questCheckFileHandleMessageSerializer.java | 4 +- ...RequestCheckFileNameMessageSerializer.java | 4 +- .../SftpRequestCopyDataMessageSerializer.java | 4 +- .../SftpRequestCopyFileMessageSerializer.java | 4 +- ...ftpRequestExpandPathMessageSerializer.java | 4 +- .../SftpRequestExtendedMessageSerializer.java | 6 +- ...stExtendedWithHandleMessageSerializer.java | 4 +- ...uestExtendedWithPathMessageSerializer.java | 4 +- ...tpRequestFileStatVfsMessageSerializer.java | 4 +- .../SftpRequestFileSyncMessageSerializer.java | 4 +- ...RequestGetTempFolderMessageSerializer.java | 4 +- .../SftpRequestHardlinkMessageSerializer.java | 4 +- ...RequestHomeDirectoryMessageSerializer.java | 4 +- .../SftpRequestLimitsMessageSerializer.java | 4 +- ...tpRequestLinkSetStatMessageSerializer.java | 4 +- ...equestMakeTempFolderMessageSerializer.java | 4 +- ...tpRequestPosixRenameMessageSerializer.java | 4 +- ...equestSpaceAvailableMessageSerializer.java | 4 +- .../SftpRequestStatVfsMessageSerializer.java | 4 +- .../SftpRequestTextSeekMessageSerializer.java | 4 +- .../SftpRequestUnknownMessageSerializer.java | 4 +- ...questUsersGroupsByIdMessageSerializer.java | 4 +- .../SftpRequestVendorIdMessageSerializer.java | 4 +- ...ftpResponseCheckFileMessageSerializer.java | 6 +- .../SftpResponseLimitsMessageSerializer.java | 6 +- ...sponseSpaceAvailableMessageSerializer.java | 6 +- .../SftpResponseStatVfsMessageSerializer.java | 6 +- .../SftpResponseUnknownMessageSerializer.java | 6 +- ...ponseUsersGroupsByIdMessageSerializer.java | 6 +- .../SftpAbstractExtensionSerializer.java | 4 +- .../SftpExtensionNewlineSerializer.java | 4 +- .../SftpExtensionUnknownSerializer.java | 4 +- .../SftpExtensionVendorIdSerializer.java | 4 +- .../SftpExtensionWithVersionSerializer.java | 4 +- .../holder/SftpAclEntrySerializer.java | 4 +- .../holder/SftpFileAttributesSerializer.java | 91 +++ .../SftpFileExtendedAttributeSerializer.java | 4 +- .../holder/SftpFileNameEntrySerializer.java | 18 +- .../holder/SftpIdEntrySerializer.java | 4 +- .../holder/SftpNameEntrySerializer.java | 4 +- .../SftpRequestCloseMessageSerializer.java | 4 +- ...tpRequestFileSetStatMessageSerializer.java | 4 +- .../SftpRequestFileStatMessageSerializer.java | 19 + .../SftpRequestLinkStatMessageSerializer.java | 4 +- .../SftpRequestMakeDirMessageSerializer.java | 4 +- .../request/SftpRequestMessageSerializer.java | 4 +- .../SftpRequestOpenDirMessageSerializer.java | 4 +- .../SftpRequestOpenMessageSerializer.java | 4 +- .../SftpRequestReadDirMessageSerializer.java | 4 +- .../SftpRequestReadLinkMessageSerializer.java | 4 +- .../SftpRequestReadMessageSerializer.java | 4 +- .../SftpRequestRealPathMessageSerializer.java | 4 +- ...SftpRequestRemoveDirMessageSerializer.java | 4 +- .../SftpRequestRemoveMessageSerializer.java | 4 +- .../SftpRequestRenameMessageSerializer.java | 4 +- .../SftpRequestSetStatMessageSerializer.java | 4 +- .../SftpRequestStatMessageSerializer.java | 19 + ...pRequestSymbolicLinkMessageSerializer.java | 4 +- ...ftpRequestWithHandleMessageSerializer.java | 4 +- .../SftpRequestWithPathMessageSerializer.java | 4 +- .../SftpRequestWriteMessageSerializer.java | 4 +- ...tpResponseAttributesMessageSerializer.java | 4 +- .../SftpResponseDataMessageSerializer.java | 4 +- .../SftpResponseHandleMessageSerializer.java | 4 +- .../SftpResponseMessageSerializer.java | 4 +- .../SftpResponseNameMessageSerializer.java | 4 +- .../SftpResponseStatusMessageSerializer.java | 4 +- .../message/holder/SftpFileAttributes.java | 595 ------------------ .../holder/SftpFileAttributesParser.java | 234 ------- .../SftpRequestFileStatMessageParser.java | 49 -- .../request/SftpRequestStatMessageParser.java | 49 -- .../holder/SftpFileAttributesPreparator.java | 158 ----- .../holder/SftpFileAttributesSerializer.java | 171 ----- .../SftpRequestFileStatMessageSerializer.java | 33 - .../SftpRequestStatMessageSerializer.java | 33 - .../handler/ChannelCloseMessageHandler.java | 4 +- .../sshattacker/core/state/SshContext.java | 2 +- .../core/workflow/action/MessageAction.java | 14 +- .../core/workflow/action/ReceiveAction.java | 14 +- .../core/workflow/chooser/Chooser.java | 2 +- .../core/workflow/chooser/DefaultChooser.java | 12 +- .../factory/WorkflowConfigurationFactory.java | 14 +- 398 files changed, 1822 insertions(+), 2633 deletions(-) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/SftpInitMessageHandler.java (84%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/SftpUnknownMessageHandler.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/SftpVersionMessageHandler.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestCopyDataMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestCopyFileMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestExpandPathMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestFileSyncMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestHardlinkMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestLimitsMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java (58%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestPosixRenameMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestStatVfsMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestTextSeekMessageHandler.java (66%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestUnknownMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_request/SftpRequestVendorIdMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_response/SftpResponseCheckFileMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_response/SftpResponseLimitsMessageHandler.java (62%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_response/SftpResponseStatVfsMessageHandler.java (62%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_response/SftpResponseUnknownMessageHandler.java (62%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpAbstractExtensionHandler.java (72%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionCheckFileHandler.java (74%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionCopyDataHandler.java (74%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionCopyFileHandler.java (74%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionExpandPathHandler.java (74%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionFileStatVfsHandler.java (73%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionFileSyncHandler.java (74%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionGetTempFolderHandler.java (75%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionHardlinkHandler.java (74%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionHomeDirectoryHandler.java (75%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionLimitsHandler.java (74%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionLinkSetStatHandler.java (74%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionMakeTempFolderHandler.java (75%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionNewlineHandler.java (70%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionPosixRenameHandler.java (74%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionSpaceAvailableHandler.java (75%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionStatVfsHandler.java (72%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionTextSeekHandler.java (74%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionUnknownHandler.java (70%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionUsersGroupsByIdHandler.java (75%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/extension/SftpExtensionVendorIdHandler.java (70%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/holder/SftpAclEntryHandler.java (70%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/holder/SftpFileAttributesHandler.java (67%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/holder/SftpFileExtendedAttributeHandler.java (71%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/holder/SftpFileNameEntryHandler.java (62%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/holder/SftpIdEntryHandler.java (70%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/holder/SftpNameEntryHandler.java (70%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestCloseMessageHandler.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestFileSetStatMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestFileStatMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestLinkStatMessageHandler.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestMakeDirMessageHandler.java (64%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestMessageHandler.java (84%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestOpenDirMessageHandler.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestOpenMessageHandler.java (64%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestReadDirMessageHandler.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestReadLinkMessageHandler.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestReadMessageHandler.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestRealPathMessageHandler.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestRemoveDirMessageHandler.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestRemoveMessageHandler.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestRenameMessageHandler.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestSetStatMessageHandler.java (64%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestStatMessageHandler.java (64%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestSymbolicLinkMessageHandler.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/request/SftpRequestWriteMessageHandler.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/response/SftpResponseAttributesMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/response/SftpResponseDataMessageHandler.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/response/SftpResponseHandleMessageHandler.java (72%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/response/SftpResponseMessageHandler.java (80%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/response/SftpResponseNameMessageHandler.java (63%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/handler/response/SftpResponseStatusMessageHandler.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/SftpHandshakeMessage.java (97%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/SftpInitMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/SftpUnknownMessage.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/SftpVersionMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestCheckFileHandleMessage.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestCheckFileNameMessage.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestCopyDataMessage.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestCopyFileMessage.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestExpandPathMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestExtendedMessage.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestExtendedWithHandleMessage.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestExtendedWithPathMessage.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestFileStatVfsMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestFileSyncMessage.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestGetTempFolderMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestHardlinkMessage.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestHomeDirectoryMessage.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestLimitsMessage.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestLinkSetStatMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestMakeTempFolderMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestPosixRenameMessage.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestSpaceAvailableMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestStatVfsMessage.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestTextSeekMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestUnknownMessage.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestUsersGroupsByIdMessage.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_request/SftpRequestVendorIdMessage.java (97%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_response/SftpResponseCheckFileMessage.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_response/SftpResponseLimitsMessage.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_response/SftpResponseSpaceAvailableMessage.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_response/SftpResponseStatVfsMessage.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_response/SftpResponseUnknownMessage.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extended_response/SftpResponseUsersGroupsByIdMessage.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpAbstractExtension.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionCheckFile.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionCopyData.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionCopyFile.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionExpandPath.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionFileStatVfs.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionFileSync.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionGetTempFolder.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionHardlink.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionHomeDirectory.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionLimits.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionLinkSetStat.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionMakeTempFolder.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionNewline.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionPosixRename.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionSpaceAvailable.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionStatVfs.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionTextSeek.java (84%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionUnknown.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionUsersGroupsById.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionVendorId.java (97%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/extension/SftpExtensionWithVersion.java (97%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/holder/SftpAclEntry.java (96%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpFileAttributes.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/holder/SftpFileExtendedAttribute.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/holder/SftpFileNameEntry.java (97%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/holder/SftpIdEntry.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/holder/SftpNameEntry.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestCloseMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestFileSetStatMessage.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestFileStatMessage.java (62%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestLinkStatMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestMakeDirMessage.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestMessage.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestOpenDirMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestOpenMessage.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestReadDirMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestReadLinkMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestReadMessage.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestRealPathMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestRemoveDirMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestRemoveMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestRenameMessage.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestSetStatMessage.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestStatMessage.java (61%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestSymbolicLinkMessage.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestWithHandleMessage.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestWithPathMessage.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/request/SftpRequestWriteMessage.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/response/SftpResponseAttributesMessage.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/response/SftpResponseDataMessage.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/response/SftpResponseHandleMessage.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/response/SftpResponseMessage.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/response/SftpResponseNameMessage.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/message/response/SftpResponseStatusMessage.java (97%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/SftpHandshakeMessageParser.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/SftpInitMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/SftpUnknownMessageParser.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/SftpVersionMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestCheckFileNameMessageParser.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestCopyDataMessageParser.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestCopyFileMessageParser.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestExpandPathMessageParser.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestExtendedMessageParser.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestExtendedWithHandleMessageParser.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestExtendedWithPathMessageParser.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestFileStatVfsMessageParser.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestFileSyncMessageParser.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestGetTempFolderMessageParser.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestHardlinkMessageParser.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestHomeDirectoryMessageParser.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestLimitsMessageParser.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestLinkSetStatMessageParser.java (65%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestMakeTempFolderMessageParser.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestPosixRenameMessageParser.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestSpaceAvailableMessageParser.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestStatVfsMessageParser.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestTextSeekMessageParser.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestUnknownMessageParser.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_request/SftpRequestVendorIdMessageParser.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_response/SftpResponseCheckFileMessageParser.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_response/SftpResponseLimitsMessageParser.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_response/SftpResponseStatVfsMessageParser.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_response/SftpResponseUnknownMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java (84%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extension/SftpAbstractExtensionParser.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extension/SftpExtensionNewlineParser.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extension/SftpExtensionUnknownParser.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extension/SftpExtensionVendorIdParser.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/extension/SftpExtensionWithVersionParser.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/holder/SftpAclEntryParser.java (92%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpFileAttributesParser.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/holder/SftpFileExtendedAttributeParser.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/holder/SftpFileNameEntryParser.java (67%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/holder/SftpIdEntryParser.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/holder/SftpNameEntryParser.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestCloseMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestFileSetStatMessageParser.java (65%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestFileStatMessageParser.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestLinkStatMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestMakeDirMessageParser.java (66%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestMessageParser.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestOpenDirMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestOpenMessageParser.java (72%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestReadDirMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestReadLinkMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestReadMessageParser.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestRealPathMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestRemoveDirMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestRemoveMessageParser.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestRenameMessageParser.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestSetStatMessageParser.java (66%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestStatMessageParser.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestSymbolicLinkMessageParser.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestWithHandleMessageParser.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestWithPathMessageParser.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/request/SftpRequestWriteMessageParser.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/response/SftpResponseAttributesMessageParser.java (65%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/response/SftpResponseDataMessageParser.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/response/SftpResponseHandleMessageParser.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/response/SftpResponseMessageParser.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/response/SftpResponseNameMessageParser.java (74%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/parser/response/SftpResponseStatusMessageParser.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/SftpInitMessagePreparator.java (60%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/SftpUnknownMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/SftpVersionMessagePreparator.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java (84%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestExtendedMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestGetTempFolderMessagePreparator.java (80%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestLimitsMessagePreparator.java (79%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java (80%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java (80%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestUnknownMessagePreparator.java (79%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java (79%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_response/SftpResponseExtendedMessagePreparator.java (68%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_response/SftpResponseLimitsMessagePreparator.java (79%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_response/SftpResponseUnknownMessagePreparator.java (77%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extension/SftpAbstractExtensionPreparator.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extension/SftpExtensionFileStatVfsPreparator.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extension/SftpExtensionNewlinePreparator.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extension/SftpExtensionStatVfsPreparator.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extension/SftpExtensionUnknownPreparator.java (80%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extension/SftpExtensionVendorIdPreparator.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/extension/SftpExtensionWithVersionPreparator.java (81%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/holder/SftpAclEntryPreparator.java (86%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileAttributesPreparator.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/holder/SftpFileExtendedAttributePreparator.java (80%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/holder/SftpFileNameEntryPreparator.java (61%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/holder/SftpIdEntryPreparator.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/holder/SftpNameEntryPreparator.java (79%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestCloseMessagePreparator.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestFileSetStatMessagePreparator.java (84%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestFileStatMessagePreparator.java (66%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestLinkStatMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestMakeDirMessagePreparator.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestMessagePreparator.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestOpenDirMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestOpenMessagePreparator.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestReadDirMessagePreparator.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestReadLinkMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestReadMessagePreparator.java (84%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestRealPathMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestRemoveDirMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestRemoveMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestRenameMessagePreparator.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestSetStatMessagePreparator.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestStatMessagePreparator.java (64%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/request/SftpRequestWriteMessagePreparator.java (84%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/response/SftpResponseAttributesMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/response/SftpResponseDataMessagePreparator.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/response/SftpResponseHandleMessagePreparator.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/response/SftpResponseMessagePreparator.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/response/SftpResponseNameMessagePreparator.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/preperator/response/SftpResponseStatusMessagePreparator.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/SftpHandshakeMessageSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/SftpInitMessageSerializer.java (70%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/SftpUnknownMessageSerializer.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/SftpVersionMessageSerializer.java (71%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestCopyDataMessageSerializer.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestCopyFileMessageSerializer.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestExpandPathMessageSerializer.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestExtendedMessageSerializer.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestExtendedWithHandleMessageSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestExtendedWithPathMessageSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestFileStatVfsMessageSerializer.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestFileSyncMessageSerializer.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestGetTempFolderMessageSerializer.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestHardlinkMessageSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestHomeDirectoryMessageSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestLimitsMessageSerializer.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestLinkSetStatMessageSerializer.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestMakeTempFolderMessageSerializer.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestPosixRenameMessageSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestSpaceAvailableMessageSerializer.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestStatVfsMessageSerializer.java (76%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestTextSeekMessageSerializer.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestUnknownMessageSerializer.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_request/SftpRequestVendorIdMessageSerializer.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_response/SftpResponseLimitsMessageSerializer.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_response/SftpResponseUnknownMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java (84%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extension/SftpAbstractExtensionSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extension/SftpExtensionNewlineSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extension/SftpExtensionUnknownSerializer.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extension/SftpExtensionVendorIdSerializer.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/extension/SftpExtensionWithVersionSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/holder/SftpAclEntrySerializer.java (93%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpFileAttributesSerializer.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/holder/SftpFileExtendedAttributeSerializer.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/holder/SftpFileNameEntrySerializer.java (74%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/holder/SftpIdEntrySerializer.java (86%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/holder/SftpNameEntrySerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestCloseMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestFileSetStatMessageSerializer.java (83%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestFileStatMessageSerializer.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestLinkStatMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestMakeDirMessageSerializer.java (83%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestMessageSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestOpenDirMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestOpenMessageSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestReadDirMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestReadLinkMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestReadMessageSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestRealPathMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestRemoveDirMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestRemoveMessageSerializer.java (78%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestRenameMessageSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestSetStatMessageSerializer.java (83%) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestStatMessageSerializer.java rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestSymbolicLinkMessageSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestWithHandleMessageSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestWithPathMessageSerializer.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/request/SftpRequestWriteMessageSerializer.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/response/SftpResponseAttributesMessageSerializer.java (82%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/response/SftpResponseDataMessageSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/response/SftpResponseHandleMessageSerializer.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/response/SftpResponseMessageSerializer.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/response/SftpResponseNameMessageSerializer.java (87%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/{ => common}/serializer/response/SftpResponseStatusMessageSerializer.java (93%) delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileAttributesParser.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileAttributesSerializer.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java delete mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestStatMessageSerializer.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index e357a9985..6faf86e52 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -15,7 +15,7 @@ import de.rub.nds.sshattacker.core.constants.*; import de.rub.nds.sshattacker.core.crypto.ec.PointFormatter; import de.rub.nds.sshattacker.core.crypto.keys.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.*; import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationPromptEntries; import de.rub.nds.sshattacker.core.protocol.authentication.AuthenticationResponseEntries; import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationPromptEntry; @@ -496,12 +496,6 @@ public class Config implements Serializable { /** SFTP negotiated protocol version */ private Integer sftpNegotiatedVersion; - /** - * Whether the protocol messages that are sent should be consistent with the negotiated SFTP - * protocol version. If false the configured sftpNegotiatedVersion will be used. - */ - private Boolean respectSftpNegotiatedVersion; - // endregion // region SSH Extensions @@ -1284,7 +1278,6 @@ public Config() { sftpClientVersion = 3; sftpServerVersion = 3; sftpNegotiatedVersion = 4; - respectSftpNegotiatedVersion = true; // endregion // region SFTP Extension @@ -1516,7 +1509,6 @@ public Config(Config other) { sftpClientVersion = other.sftpClientVersion; sftpServerVersion = other.sftpServerVersion; sftpNegotiatedVersion = other.sftpNegotiatedVersion; - respectSftpNegotiatedVersion = other.respectSftpNegotiatedVersion; if (other.sftpClientSupportedExtensions != null) { sftpClientSupportedExtensions = new ArrayList<>(other.sftpClientSupportedExtensions.size()); @@ -2572,10 +2564,6 @@ public Integer getSftpNegotiatedVersion() { return sftpNegotiatedVersion; } - public Boolean getRespectSftpNegotiatedVersion() { - return respectSftpNegotiatedVersion; - } - // endregion // region Setters for SFTP Version Exchange public void setSftpClientVersion(Integer sftpClientVersion) { @@ -2590,10 +2578,6 @@ public void setSftpNegotiatedVersion(Integer sftpNegotiatedVersion) { this.sftpNegotiatedVersion = sftpNegotiatedVersion; } - public void setRespectSftpNegotiatedVersion(Boolean respectSftpNegotiatedVersion) { - this.respectSftpNegotiatedVersion = respectSftpNegotiatedVersion; - } - // endregion // region Getters SFTP Extensions diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java index af540d08e..497294bef 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java @@ -8,10 +8,10 @@ package de.rub.nds.sshattacker.core.data.sftp; import de.rub.nds.sshattacker.core.constants.SftpStatusCode; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.*; -import de.rub.nds.sshattacker.core.data.sftp.message.request.*; -import de.rub.nds.sshattacker.core.data.sftp.message.response.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.*; import de.rub.nds.sshattacker.core.exceptions.DataManagerException; import de.rub.nds.sshattacker.core.state.SshContext; import java.util.ArrayList; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java index 8e6b2369e..5ff566436 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java @@ -10,18 +10,22 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUnknownMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.*; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpInitMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpUnknownMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpVersionMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.*; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.*; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.*; -import de.rub.nds.sshattacker.core.data.sftp.parser.response.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExtendedMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.SftpInitMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.SftpUnknownMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.SftpVersionMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.*; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response.*; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.*; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.*; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.SftpV4InitMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.request.*; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.response.SftpV4ResponseAttributesMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.response.SftpV4ResponseNameMessageParser; import de.rub.nds.sshattacker.core.exceptions.ParserException; import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessageParser; import de.rub.nds.sshattacker.core.state.SshContext; @@ -53,6 +57,17 @@ private void parsePacketType() { } public static SftpMessage delegateParsing(AbstractDataPacket packet, SshContext context) { + int sftpVersion = + context.getSftpNegotiatedVersion() + .orElse(context.getConfig().getSftpNegotiatedVersion()); + if (sftpVersion >= 4) { + return delegateParsingV4(packet, context); + } else { + return delegateParsingV3(packet, context); + } + } + + public static SftpMessage delegateParsingV3(AbstractDataPacket packet, SshContext context) { byte[] raw = packet.getPayload().getValue(); if (raw.length == 0) { return new SftpUnknownMessage(); @@ -61,37 +76,29 @@ public static SftpMessage delegateParsing(AbstractDataPacket packet, SshConte return switch (SftpPacketTypeConstant.fromId(raw[0])) { case SSH_FXP_INIT -> new SftpInitMessageParser(raw).parse(); case SSH_FXP_VERSION -> new SftpVersionMessageParser(raw).parse(); - case SSH_FXP_OPEN -> - new SftpRequestOpenMessageParser(raw, context.getChooser()).parse(); + case SSH_FXP_OPEN -> new SftpRequestOpenMessageParser(raw).parse(); case SSH_FXP_CLOSE -> new SftpRequestCloseMessageParser(raw).parse(); case SSH_FXP_READ -> new SftpRequestReadMessageParser(raw).parse(); case SSH_FXP_WRITE -> new SftpRequestWriteMessageParser(raw).parse(); case SSH_FXP_LSTAT -> new SftpRequestLinkStatMessageParser(raw).parse(); - case SSH_FXP_FSTAT -> - new SftpRequestFileStatMessageParser(raw, context.getChooser()).parse(); - case SSH_FXP_SETSTAT -> - new SftpRequestSetStatMessageParser(raw, context.getChooser()).parse(); - case SSH_FXP_FSETSTAT -> - new SftpRequestFileSetStatMessageParser(raw, context.getChooser()).parse(); + case SSH_FXP_FSTAT -> new SftpRequestFileStatMessageParser(raw).parse(); + case SSH_FXP_SETSTAT -> new SftpRequestSetStatMessageParser(raw).parse(); + case SSH_FXP_FSETSTAT -> new SftpRequestFileSetStatMessageParser(raw).parse(); case SSH_FXP_OPENDIR -> new SftpRequestOpenDirMessageParser(raw).parse(); case SSH_FXP_READDIR -> new SftpRequestReadDirMessageParser(raw).parse(); case SSH_FXP_REMOVE -> new SftpRequestRemoveMessageParser(raw).parse(); - case SSH_FXP_MKDIR -> - new SftpRequestMakeDirMessageParser(raw, context.getChooser()).parse(); + case SSH_FXP_MKDIR -> new SftpRequestMakeDirMessageParser(raw).parse(); case SSH_FXP_RMDIR -> new SftpRequestRemoveDirMessageParser(raw).parse(); case SSH_FXP_REALPATH -> new SftpRequestRealPathMessageParser(raw).parse(); - case SSH_FXP_STAT -> - new SftpRequestStatMessageParser(raw, context.getChooser()).parse(); + case SSH_FXP_STAT -> new SftpRequestStatMessageParser(raw).parse(); case SSH_FXP_RENAME -> new SftpRequestRenameMessageParser(raw).parse(); case SSH_FXP_READLINK -> new SftpRequestReadLinkMessageParser(raw).parse(); case SSH_FXP_SYMLINK -> new SftpRequestSymbolicLinkMessageParser(raw).parse(); case SSH_FXP_STATUS -> new SftpResponseStatusMessageParser(raw).parse(); case SSH_FXP_HANDLE -> new SftpResponseHandleMessageParser(raw).parse(); case SSH_FXP_DATA -> new SftpResponseDataMessageParser(raw).parse(); - case SSH_FXP_NAME -> - new SftpResponseNameMessageParser(raw, context.getChooser()).parse(); - case SSH_FXP_ATTRS -> - new SftpResponseAttributesMessageParser(raw, context.getChooser()).parse(); + case SSH_FXP_NAME -> new SftpResponseNameMessageParser(raw).parse(); + case SSH_FXP_ATTRS -> new SftpResponseAttributesMessageParser(raw).parse(); case SSH_FXP_EXTENDED -> handleExtendedRequestMessageParsing(raw, context); case SSH_FXP_EXTENDED_REPLY -> handleExtendedResponseMessageParsing(raw, context); default -> { @@ -108,6 +115,30 @@ public static SftpMessage delegateParsing(AbstractDataPacket packet, SshConte } } + public static SftpMessage delegateParsingV4(AbstractDataPacket packet, SshContext context) { + byte[] raw = packet.getPayload().getValue(); + if (raw.length == 0) { + return new SftpUnknownMessage(); + } + try { + return switch (SftpPacketTypeConstant.fromId(raw[0])) { + case SSH_FXP_INIT -> new SftpV4InitMessageParser(raw).parse(); + case SSH_FXP_OPEN -> new SftpV4RequestOpenMessageParser(raw).parse(); + case SSH_FXP_FSTAT -> new SftpV4RequestFileStatMessageParser(raw).parse(); + case SSH_FXP_SETSTAT -> new SftpV4RequestSetStatMessageParser(raw).parse(); + case SSH_FXP_FSETSTAT -> new SftpV4RequestFileSetStatMessageParser(raw).parse(); + case SSH_FXP_MKDIR -> new SftpV4RequestMakeDirMessageParser(raw).parse(); + case SSH_FXP_STAT -> new SftpV4RequestStatMessageParser(raw).parse(); + case SSH_FXP_NAME -> new SftpV4ResponseNameMessageParser(raw).parse(); + case SSH_FXP_ATTRS -> new SftpV4ResponseAttributesMessageParser(raw).parse(); + default -> delegateParsingV3(packet, context); + }; + } catch (ParserException e) { + LOGGER.debug("Error while Parsing, now parsing as UnknownMessage", e); + return new SftpUnknownMessageParser(raw).parse(); + } + } + public static SftpMessage handleExtendedRequestMessageParsing( byte[] raw, SshContext context) { SftpRequestUnknownMessage message = new SftpRequestUnknownMessageParser(raw).parse(); @@ -131,8 +162,7 @@ public static SftpMessage handleExtendedRequestMessageParsing( case F_STAT_VFS_OPENSSH_COM -> new SftpRequestFileStatVfsMessageParser(raw).parse(); case HARDLINK_OPENSSH_COM -> new SftpRequestHardlinkMessageParser(raw).parse(); case F_SYNC_OPENSSH_COM -> new SftpRequestFileSyncMessageParser(raw).parse(); - case L_SET_STAT -> - new SftpRequestLinkSetStatMessageParser(raw, context.getChooser()).parse(); + case L_SET_STAT -> new SftpRequestLinkSetStatMessageParser(raw).parse(); case LIMITS -> new SftpRequestLimitsMessageParser(raw).parse(); case EXPAND_PATH -> new SftpRequestExpandPathMessageParser(raw).parse(); case USERS_GROUPS_BY_ID -> new SftpRequestUsersGroupsByIdMessageParser(raw).parse(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java index dff49b034..bf443e0f5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpInitMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.common.handler; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpInitMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpInitMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpInitMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.SftpInitMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.SftpInitMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.SftpInitMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpUnknownMessageHandler.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpUnknownMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpUnknownMessageHandler.java index 342efb7fa..2c7e6fabb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpUnknownMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpUnknownMessageHandler.java @@ -5,14 +5,14 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.common.handler; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpUnknownMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpUnknownMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpUnknownMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.SftpUnknownMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.SftpUnknownMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.SftpUnknownMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java index 936dcf2e4..80bb92124 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/SftpVersionMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler; +package de.rub.nds.sshattacker.core.data.sftp.common.handler; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.SftpVersionMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.SftpVersionMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.SftpVersionMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.SftpVersionMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.SftpVersionMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.SftpVersionMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java index 0a8dbc2f1..9d8cfb554 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileHandleMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestCheckFileHandleMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestCheckFileHandleMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestCheckFileHandleMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCheckFileHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestCheckFileHandleMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestCheckFileHandleMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestCheckFileHandleMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestCheckFileHandleMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java index 3bcbd95e5..cb23994a1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileNameMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestCheckFileNameMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestCheckFileNameMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestCheckFileNameMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCheckFileNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestCheckFileNameMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestCheckFileNameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestCheckFileNameMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestCheckFileNameMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCopyDataMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyDataMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCopyDataMessageHandler.java index 68f456655..8010d7b36 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyDataMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCopyDataMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyDataMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestCopyDataMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestCopyDataMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestCopyDataMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCopyDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestCopyDataMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestCopyDataMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestCopyDataMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestCopyDataMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyFileMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCopyFileMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyFileMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCopyFileMessageHandler.java index ad03a22b3..51a8c065e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestCopyFileMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCopyFileMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyFileMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestCopyFileMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestCopyFileMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestCopyFileMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCopyFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestCopyFileMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestCopyFileMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestCopyFileMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestCopyFileMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestExpandPathMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestExpandPathMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestExpandPathMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestExpandPathMessageHandler.java index 3b34b2620..e1a363bcd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestExpandPathMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestExpandPathMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExpandPathMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestExpandPathMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestExpandPathMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestExpandPathMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExpandPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestExpandPathMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestExpandPathMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestExpandPathMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestExpandPathMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java index 740824203..e1c524859 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileStatVfsMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestFileStatVfsMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestFileStatVfsMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestFileStatVfsMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestFileStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestFileStatVfsMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestFileStatVfsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestFileStatVfsMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileStatVfsMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileSyncMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestFileSyncMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileSyncMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestFileSyncMessageHandler.java index 9d3f76e29..a303c68a1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestFileSyncMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestFileSyncMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileSyncMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestFileSyncMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestFileSyncMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestFileSyncMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestFileSyncMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestFileSyncMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestFileSyncMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestFileSyncMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileSyncMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java index d61571e7f..a2c4ba305 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestGetTempFolderMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestGetTempFolderMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestGetTempFolderMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestGetTempFolderMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestGetTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestGetTempFolderMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestGetTempFolderMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestGetTempFolderMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestGetTempFolderMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHardlinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestHardlinkMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHardlinkMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestHardlinkMessageHandler.java index b6c17291c..0e587db40 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHardlinkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestHardlinkMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHardlinkMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestHardlinkMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestHardlinkMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestHardlinkMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestHardlinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestHardlinkMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestHardlinkMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestHardlinkMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestHardlinkMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java index fb87f49e7..8e5cc81a9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHomeDirectoryMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestHomeDirectoryMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestHomeDirectoryMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestHomeDirectoryMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestHomeDirectoryMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestHomeDirectoryMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestHomeDirectoryMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestHomeDirectoryMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestHomeDirectoryMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLimitsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestLimitsMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLimitsMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestLimitsMessageHandler.java index 90688cf42..6ae375d22 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLimitsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestLimitsMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLimitsMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestLimitsMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestLimitsMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestLimitsMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestLimitsMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestLimitsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestLimitsMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestLimitsMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java similarity index 58% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java index 4f4a9cc3b..0a04070e8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLinkSetStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestLinkSetStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestLinkSetStatMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestLinkSetStatMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestLinkSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestLinkSetStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestLinkSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestLinkSetStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestLinkSetStatMessageHandler @@ -19,13 +19,13 @@ public class SftpRequestLinkSetStatMessageHandler @Override public SftpRequestLinkSetStatMessageParser getParser(byte[] array, SshContext context) { - return new SftpRequestLinkSetStatMessageParser(array, context.getChooser()); + return new SftpRequestLinkSetStatMessageParser(array); } @Override public SftpRequestLinkSetStatMessageParser getParser( byte[] array, int startPosition, SshContext context) { - return new SftpRequestLinkSetStatMessageParser(array, startPosition, context.getChooser()); + return new SftpRequestLinkSetStatMessageParser(array, startPosition); } public static final SftpRequestLinkSetStatMessagePreparator PREPARATOR = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java index 33542a833..4f4a01292 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestMakeTempFolderMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestMakeTempFolderMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestMakeTempFolderMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestMakeTempFolderMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestMakeTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestMakeTempFolderMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestMakeTempFolderMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestMakeTempFolderMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestMakeTempFolderMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestPosixRenameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestPosixRenameMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestPosixRenameMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestPosixRenameMessageHandler.java index 9ff1e7893..a14d54c3e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestPosixRenameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestPosixRenameMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestPosixRenameMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestPosixRenameMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestPosixRenameMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestPosixRenameMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestPosixRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestPosixRenameMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestPosixRenameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestPosixRenameMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestPosixRenameMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java index 92ea5b47e..f3e2ebcfb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestSpaceAvailableMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestSpaceAvailableMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestSpaceAvailableMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestSpaceAvailableMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestSpaceAvailableMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestSpaceAvailableMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestSpaceAvailableMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestSpaceAvailableMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestStatVfsMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestStatVfsMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestStatVfsMessageHandler.java index 0f85ef9af..ddab29597 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestStatVfsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestStatVfsMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestStatVfsMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestStatVfsMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestStatVfsMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestStatVfsMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestStatVfsMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestStatVfsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestStatVfsMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestStatVfsMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestTextSeekMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestTextSeekMessageHandler.java similarity index 66% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestTextSeekMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestTextSeekMessageHandler.java index cc4732586..f2fa50689 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestTextSeekMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestTextSeekMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestTextSeekMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestTextSeekMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestTextSeekMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestTextSeekMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestTextSeekMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestTextSeekMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestTextSeekMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestTextSeekMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestTextSeekMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestUnknownMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUnknownMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestUnknownMessageHandler.java index 2fe38691a..9bcc028d3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUnknownMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestUnknownMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUnknownMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestUnknownMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestUnknownMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestUnknownMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestUnknownMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestUnknownMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestUnknownMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestUnknownMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java index cb35a57ad..6531612a5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUsersGroupsByIdMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestUsersGroupsByIdMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestUsersGroupsByIdMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestUsersGroupsByIdMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestUsersGroupsByIdMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestUsersGroupsByIdMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestUsersGroupsByIdMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestUsersGroupsByIdMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestVendorIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestVendorIdMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestVendorIdMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestVendorIdMessageHandler.java index fafe6df2b..c3e2b526b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_request/SftpRequestVendorIdMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestVendorIdMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestVendorIdMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_request.SftpRequestVendorIdMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request.SftpRequestVendorIdMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request.SftpRequestVendorIdMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestVendorIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestVendorIdMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestVendorIdMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestVendorIdMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestVendorIdMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseCheckFileMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseCheckFileMessageHandler.java index 05e9f1de0..21f57d742 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseCheckFileMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseCheckFileMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseCheckFileMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseCheckFileMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseCheckFileMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response.SftpResponseCheckFileMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseCheckFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response.SftpResponseCheckFileMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response.SftpResponseCheckFileMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response.SftpResponseCheckFileMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseCheckFileMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseLimitsMessageHandler.java similarity index 62% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseLimitsMessageHandler.java index bb8142728..d8b9f704c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseLimitsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseLimitsMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseLimitsMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseLimitsMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseLimitsMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response.SftpResponseLimitsMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response.SftpResponseLimitsMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response.SftpResponseLimitsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response.SftpResponseLimitsMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseLimitsMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java index e09a96325..95755c475 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseSpaceAvailableMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseSpaceAvailableMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseSpaceAvailableMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response.SftpResponseSpaceAvailableMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response.SftpResponseSpaceAvailableMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response.SftpResponseSpaceAvailableMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response.SftpResponseSpaceAvailableMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseSpaceAvailableMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseStatVfsMessageHandler.java similarity index 62% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseStatVfsMessageHandler.java index 1b050072a..2d52c60c4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseStatVfsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseStatVfsMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseStatVfsMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseStatVfsMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseStatVfsMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response.SftpResponseStatVfsMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response.SftpResponseStatVfsMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response.SftpResponseStatVfsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response.SftpResponseStatVfsMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseStatVfsMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseUnknownMessageHandler.java similarity index 62% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseUnknownMessageHandler.java index 3b6e5b75c..cbb012ac1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUnknownMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseUnknownMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUnknownMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseUnknownMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseUnknownMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response.SftpResponseUnknownMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response.SftpResponseUnknownMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response.SftpResponseUnknownMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response.SftpResponseUnknownMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseUnknownMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java index 3e5c6d265..65b361d0b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUsersGroupsByIdMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.extended_response.SftpResponseUsersGroupsByIdMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response.SftpResponseUsersGroupsByIdMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response.SftpResponseUsersGroupsByIdMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response.SftpResponseUsersGroupsByIdMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response.SftpResponseUsersGroupsByIdMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response.SftpResponseUsersGroupsByIdMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseUsersGroupsByIdMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpAbstractExtensionHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpAbstractExtensionHandler.java similarity index 72% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpAbstractExtensionHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpAbstractExtensionHandler.java index 06af71632..5e8d89bbd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpAbstractExtensionHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpAbstractExtensionHandler.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.protocol.common.Handler; public abstract class SftpAbstractExtensionHandler> diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCheckFileHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCheckFileHandler.java similarity index 74% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCheckFileHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCheckFileHandler.java index 148f85f06..778b04155 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCheckFileHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCheckFileHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionCheckFile; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionCheckFile; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionCheckFileHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCopyDataHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCopyDataHandler.java similarity index 74% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCopyDataHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCopyDataHandler.java index 8873288af..bb070159f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCopyDataHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCopyDataHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionCopyData; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionCopyData; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionCopyDataHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCopyFileHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCopyFileHandler.java similarity index 74% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCopyFileHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCopyFileHandler.java index f0ae6e73f..448f7a0a1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionCopyFileHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCopyFileHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionCopyFile; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionCopyFile; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionCopyFileHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionExpandPathHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionExpandPathHandler.java similarity index 74% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionExpandPathHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionExpandPathHandler.java index 611d3fcf0..f27de2bd7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionExpandPathHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionExpandPathHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionExpandPath; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionExpandPath; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionExpandPathHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileStatVfsHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionFileStatVfsHandler.java similarity index 73% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileStatVfsHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionFileStatVfsHandler.java index 26a975eeb..2b684de60 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileStatVfsHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionFileStatVfsHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionFileStatVfs; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionFileStatVfsPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionFileStatVfs; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionFileStatVfsPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionFileStatVfsHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileSyncHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionFileSyncHandler.java similarity index 74% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileSyncHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionFileSyncHandler.java index bbfe6b750..b45562e7c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionFileSyncHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionFileSyncHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionFileSync; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionFileSync; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionFileSyncHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionGetTempFolderHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionGetTempFolderHandler.java similarity index 75% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionGetTempFolderHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionGetTempFolderHandler.java index 4ec92d662..70be8490c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionGetTempFolderHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionGetTempFolderHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionGetTempFolder; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionGetTempFolder; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionGetTempFolderHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionHardlinkHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionHardlinkHandler.java similarity index 74% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionHardlinkHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionHardlinkHandler.java index 74435cf8a..64a74f8a8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionHardlinkHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionHardlinkHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionHardlink; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionHardlink; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionHardlinkHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionHomeDirectoryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionHomeDirectoryHandler.java similarity index 75% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionHomeDirectoryHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionHomeDirectoryHandler.java index 282cb2411..b9cd93589 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionHomeDirectoryHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionHomeDirectoryHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionHomeDirectory; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionHomeDirectory; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionHomeDirectoryHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionLimitsHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLimitsHandler.java similarity index 74% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionLimitsHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLimitsHandler.java index 3c5b67caa..b525322fe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionLimitsHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLimitsHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionLimits; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionLimits; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionLimitsHandler extends SftpAbstractExtensionHandler { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionLinkSetStatHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLinkSetStatHandler.java similarity index 74% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionLinkSetStatHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLinkSetStatHandler.java index 6d778d74f..eea44b5d9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionLinkSetStatHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLinkSetStatHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionLinkSetStat; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionLinkSetStat; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionLinkSetStatHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionMakeTempFolderHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionMakeTempFolderHandler.java similarity index 75% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionMakeTempFolderHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionMakeTempFolderHandler.java index b31ce4765..c1a6a9098 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionMakeTempFolderHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionMakeTempFolderHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionMakeTempFolder; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionMakeTempFolder; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionMakeTempFolderHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionNewlineHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionNewlineHandler.java similarity index 70% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionNewlineHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionNewlineHandler.java index ea46b0706..2294853bf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionNewlineHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionNewlineHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionNewline; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionNewlineParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionNewlinePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionNewlineSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionNewline; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionNewlineParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionNewlinePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionNewlineSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionNewlineHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionPosixRenameHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionPosixRenameHandler.java similarity index 74% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionPosixRenameHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionPosixRenameHandler.java index b1591cac9..30f0e7f2c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionPosixRenameHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionPosixRenameHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionPosixRename; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionPosixRename; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionPosixRenameHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionSpaceAvailableHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionSpaceAvailableHandler.java similarity index 75% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionSpaceAvailableHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionSpaceAvailableHandler.java index a8eb48269..f6e586662 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionSpaceAvailableHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionSpaceAvailableHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionSpaceAvailable; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionSpaceAvailable; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionSpaceAvailableHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionStatVfsHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionStatVfsHandler.java similarity index 72% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionStatVfsHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionStatVfsHandler.java index 0df54cecb..016e5477b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionStatVfsHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionStatVfsHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionStatVfs; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionStatVfsPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionStatVfs; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionStatVfsPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionStatVfsHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionTextSeekHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionTextSeekHandler.java similarity index 74% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionTextSeekHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionTextSeekHandler.java index 30b59e5b5..b1c6a9de1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionTextSeekHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionTextSeekHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionTextSeek; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionTextSeek; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionTextSeekHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionUnknownHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUnknownHandler.java similarity index 70% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionUnknownHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUnknownHandler.java index 03242393c..80819bd90 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionUnknownHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUnknownHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionUnknown; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionUnknownParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionUnknownPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionUnknownSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionUnknown; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionUnknownParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionUnknownPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionUnknownSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionUnknownHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionUsersGroupsByIdHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUsersGroupsByIdHandler.java similarity index 75% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionUsersGroupsByIdHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUsersGroupsByIdHandler.java index 6f2acfc1f..a86b7c4c9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionUsersGroupsByIdHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUsersGroupsByIdHandler.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionUsersGroupsById; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionWithVersionPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionWithVersionSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionUsersGroupsById; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionUsersGroupsByIdHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionVendorIdHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionVendorIdHandler.java similarity index 70% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionVendorIdHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionVendorIdHandler.java index b3c8aaf55..08e1d16db 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/extension/SftpExtensionVendorIdHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionVendorIdHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.extension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionVendorId; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.SftpExtensionVendorIdParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.extension.SftpExtensionVendorIdPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.extension.SftpExtensionVendorIdSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionVendorId; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionVendorIdParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionVendorIdPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionVendorIdSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpExtensionVendorIdHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpAclEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpAclEntryHandler.java similarity index 70% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpAclEntryHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpAclEntryHandler.java index 952440808..ee4a7c317 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpAclEntryHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpAclEntryHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpAclEntry; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpAclEntryParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.holder.SftpAclEntryPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.holder.SftpAclEntrySerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpAclEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpAclEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder.SftpAclEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder.SftpAclEntrySerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileAttributesHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileAttributesHandler.java similarity index 67% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileAttributesHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileAttributesHandler.java index 06a030945..48e218e7e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileAttributesHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileAttributesHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileAttributesParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.holder.SftpFileAttributesPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.holder.SftpFileAttributesSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpFileAttributesParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder.SftpFileAttributesPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder.SftpFileAttributesSerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -21,12 +21,12 @@ public void adjustContext(SshContext context, SftpFileAttributes object) {} @Override public SftpFileAttributesParser getParser(byte[] array, SshContext context) { - return new SftpFileAttributesParser(array, context.getChooser()); + return new SftpFileAttributesParser(array); } @Override public SftpFileAttributesParser getParser(byte[] array, int startPosition, SshContext context) { - return new SftpFileAttributesParser(array, startPosition, context.getChooser()); + return new SftpFileAttributesParser(array, startPosition); } public static final SftpFileAttributesPreparator PREPARATOR = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileExtendedAttributeHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileExtendedAttributeHandler.java similarity index 71% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileExtendedAttributeHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileExtendedAttributeHandler.java index 06148c88c..a1d3c2d70 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileExtendedAttributeHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileExtendedAttributeHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileExtendedAttribute; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileExtendedAttributeParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.holder.SftpFileExtendedAttributePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.holder.SftpFileExtendedAttributeSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpFileExtendedAttributeParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder.SftpFileExtendedAttributePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder.SftpFileExtendedAttributeSerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileNameEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileNameEntryHandler.java similarity index 62% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileNameEntryHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileNameEntryHandler.java index 560d12612..8e1bfad1a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpFileNameEntryHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileNameEntryHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileNameEntry; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileNameEntryParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.holder.SftpFileNameEntryPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.holder.SftpFileNameEntrySerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpFileNameEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder.SftpFileNameEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder.SftpFileNameEntrySerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; @@ -21,12 +21,12 @@ public void adjustContext(SshContext context, SftpFileNameEntry object) {} @Override public SftpFileNameEntryParser getParser(byte[] array, SshContext context) { - return new SftpFileNameEntryParser(array, context.getChooser()); + return new SftpFileNameEntryParser(array); } @Override public SftpFileNameEntryParser getParser(byte[] array, int startPosition, SshContext context) { - return new SftpFileNameEntryParser(array, startPosition, context.getChooser()); + return new SftpFileNameEntryParser(array, startPosition); } public static final SftpFileNameEntryPreparator PREPARATOR = new SftpFileNameEntryPreparator(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpIdEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpIdEntryHandler.java similarity index 70% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpIdEntryHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpIdEntryHandler.java index 2589559b6..15d9c0b2b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpIdEntryHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpIdEntryHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpIdEntry; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpIdEntryParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.holder.SftpIdEntryPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.holder.SftpIdEntrySerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpIdEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpIdEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder.SftpIdEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder.SftpIdEntrySerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpNameEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpNameEntryHandler.java similarity index 70% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpNameEntryHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpNameEntryHandler.java index 82a9543a7..011a1881e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/holder/SftpNameEntryHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpNameEntryHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpNameEntry; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpNameEntryParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.holder.SftpNameEntryPreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.holder.SftpNameEntrySerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpNameEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder.SftpNameEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder.SftpNameEntrySerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestCloseMessageHandler.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestCloseMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestCloseMessageHandler.java index aa2043e85..bef5d9210 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestCloseMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestCloseMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestCloseMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestCloseMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestCloseMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestCloseMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestCloseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestCloseMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestCloseMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestCloseMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestCloseMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestFileSetStatMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestFileSetStatMessageHandler.java index f17429f54..7a8bdc66c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestFileSetStatMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileSetStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestFileSetStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestFileSetStatMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestFileSetStatMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestFileSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestFileSetStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestFileSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestFileSetStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileSetStatMessageHandler @@ -18,13 +18,13 @@ public class SftpRequestFileSetStatMessageHandler @Override public SftpRequestFileSetStatMessageParser getParser(byte[] array, SshContext context) { - return new SftpRequestFileSetStatMessageParser(array, context.getChooser()); + return new SftpRequestFileSetStatMessageParser(array); } @Override public SftpRequestFileSetStatMessageParser getParser( byte[] array, int startPosition, SshContext context) { - return new SftpRequestFileSetStatMessageParser(array, startPosition, context.getChooser()); + return new SftpRequestFileSetStatMessageParser(array, startPosition); } public static final SftpRequestFileSetStatMessagePreparator PREPARATOR = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestFileStatMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestFileStatMessageHandler.java index d8f2daf4c..fdf3edbb7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestFileStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestFileStatMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestFileStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestFileStatMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestFileStatMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestFileStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestFileStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestFileStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestFileStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestFileStatMessageHandler @@ -18,13 +18,13 @@ public class SftpRequestFileStatMessageHandler @Override public SftpRequestFileStatMessageParser getParser(byte[] array, SshContext context) { - return new SftpRequestFileStatMessageParser(array, context.getChooser()); + return new SftpRequestFileStatMessageParser(array); } @Override public SftpRequestFileStatMessageParser getParser( byte[] array, int startPosition, SshContext context) { - return new SftpRequestFileStatMessageParser(array, startPosition, context.getChooser()); + return new SftpRequestFileStatMessageParser(array, startPosition); } public static final SftpRequestFileStatMessagePreparator PREPARATOR = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestLinkStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestLinkStatMessageHandler.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestLinkStatMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestLinkStatMessageHandler.java index e0565591c..51d932722 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestLinkStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestLinkStatMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestLinkStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestLinkStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestLinkStatMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestLinkStatMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestLinkStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestLinkStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestLinkStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestLinkStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestLinkStatMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestMakeDirMessageHandler.java similarity index 64% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestMakeDirMessageHandler.java index a3a8b8e81..cefd41603 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMakeDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestMakeDirMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMakeDirMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestMakeDirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestMakeDirMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestMakeDirMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestMakeDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestMakeDirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMakeDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestMakeDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestMakeDirMessageHandler @@ -18,13 +18,13 @@ public class SftpRequestMakeDirMessageHandler @Override public SftpRequestMakeDirMessageParser getParser(byte[] array, SshContext context) { - return new SftpRequestMakeDirMessageParser(array, context.getChooser()); + return new SftpRequestMakeDirMessageParser(array); } @Override public SftpRequestMakeDirMessageParser getParser( byte[] array, int startPosition, SshContext context) { - return new SftpRequestMakeDirMessageParser(array, startPosition, context.getChooser()); + return new SftpRequestMakeDirMessageParser(array, startPosition); } public static final SftpRequestMakeDirMessagePreparator PREPARATOR = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestMessageHandler.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestMessageHandler.java index e03088e3d..eef7deee7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestMessageHandler.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestMessage; import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestOpenDirMessageHandler.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenDirMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestOpenDirMessageHandler.java index c788420ec..483e31475 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestOpenDirMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenDirMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestOpenDirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestOpenDirMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestOpenDirMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestOpenDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestOpenDirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestOpenDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestOpenDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestOpenDirMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestOpenMessageHandler.java similarity index 64% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestOpenMessageHandler.java index b19e89a27..0565c8337 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestOpenMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestOpenMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestOpenMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestOpenMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestOpenMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestOpenMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestOpenMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestOpenMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestOpenMessageHandler @@ -18,13 +18,13 @@ public class SftpRequestOpenMessageHandler @Override public SftpRequestOpenMessageParser getParser(byte[] array, SshContext context) { - return new SftpRequestOpenMessageParser(array, context.getChooser()); + return new SftpRequestOpenMessageParser(array); } @Override public SftpRequestOpenMessageParser getParser( byte[] array, int startPosition, SshContext context) { - return new SftpRequestOpenMessageParser(array, startPosition, context.getChooser()); + return new SftpRequestOpenMessageParser(array, startPosition); } public static final SftpRequestOpenMessagePreparator PREPARATOR = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadDirMessageHandler.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadDirMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadDirMessageHandler.java index 3573b433f..5240fb212 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadDirMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadDirMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestReadDirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestReadDirMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestReadDirMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestReadDirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestReadDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestReadDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestReadDirMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadLinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadLinkMessageHandler.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadLinkMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadLinkMessageHandler.java index 1fb2fd7b7..163880756 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadLinkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadLinkMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadLinkMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestReadLinkMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestReadLinkMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestReadLinkMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestReadLinkMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestReadLinkMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestReadLinkMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestReadLinkMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadMessageHandler.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadMessageHandler.java index d35a44dc4..46347a8a6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestReadMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestReadMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestReadMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestReadMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestReadMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestReadMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestReadMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestReadMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRealPathMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRealPathMessageHandler.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRealPathMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRealPathMessageHandler.java index bc8fc558f..f0146af27 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRealPathMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRealPathMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRealPathMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestRealPathMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestRealPathMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestRealPathMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRealPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestRealPathMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestRealPathMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestRealPathMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRealPathMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRemoveDirMessageHandler.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveDirMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRemoveDirMessageHandler.java index 036701278..7702dd48a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRemoveDirMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveDirMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestRemoveDirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestRemoveDirMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestRemoveDirMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRemoveDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestRemoveDirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestRemoveDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestRemoveDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRemoveDirMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRemoveMessageHandler.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRemoveMessageHandler.java index 1829024ea..ef5dd71e1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRemoveMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRemoveMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestRemoveMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestRemoveMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestRemoveMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRemoveMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestRemoveMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestRemoveMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestRemoveMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRemoveMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRenameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRenameMessageHandler.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRenameMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRenameMessageHandler.java index a5d47896b..4c6ed1821 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestRenameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRenameMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRenameMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestRenameMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestRenameMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestRenameMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestRenameMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestRenameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestRenameMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestRenameMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestSetStatMessageHandler.java similarity index 64% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestSetStatMessageHandler.java index c595866b9..4050bfc03 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestSetStatMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSetStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestSetStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestSetStatMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestSetStatMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestSetStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestSetStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestSetStatMessageHandler @@ -18,13 +18,13 @@ public class SftpRequestSetStatMessageHandler @Override public SftpRequestSetStatMessageParser getParser(byte[] array, SshContext context) { - return new SftpRequestSetStatMessageParser(array, context.getChooser()); + return new SftpRequestSetStatMessageParser(array); } @Override public SftpRequestSetStatMessageParser getParser( byte[] array, int startPosition, SshContext context) { - return new SftpRequestSetStatMessageParser(array, startPosition, context.getChooser()); + return new SftpRequestSetStatMessageParser(array, startPosition); } public static final SftpRequestSetStatMessagePreparator PREPARATOR = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestStatMessageHandler.java similarity index 64% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestStatMessageHandler.java index f24ec6fef..bf29f8b60 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestStatMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestStatMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestStatMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestStatMessageHandler @@ -18,13 +18,13 @@ public class SftpRequestStatMessageHandler @Override public SftpRequestStatMessageParser getParser(byte[] array, SshContext context) { - return new SftpRequestStatMessageParser(array, context.getChooser()); + return new SftpRequestStatMessageParser(array); } @Override public SftpRequestStatMessageParser getParser( byte[] array, int startPosition, SshContext context) { - return new SftpRequestStatMessageParser(array, startPosition, context.getChooser()); + return new SftpRequestStatMessageParser(array, startPosition); } public static final SftpRequestStatMessagePreparator PREPARATOR = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSymbolicLinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestSymbolicLinkMessageHandler.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSymbolicLinkMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestSymbolicLinkMessageHandler.java index 35d605512..3489082fb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestSymbolicLinkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestSymbolicLinkMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSymbolicLinkMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestSymbolicLinkMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestSymbolicLinkMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestSymbolicLinkMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestSymbolicLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestSymbolicLinkMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestSymbolicLinkMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestSymbolicLinkMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestSymbolicLinkMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestWriteMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestWriteMessageHandler.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestWriteMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestWriteMessageHandler.java index b283862a6..ed3422736 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/request/SftpRequestWriteMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestWriteMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.request; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWriteMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestWriteMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestWriteMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestWriteMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWriteMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestWriteMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestWriteMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestWriteMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpRequestWriteMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseAttributesMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseAttributesMessageHandler.java index d54cbd9d1..8c34641e2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseAttributesMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseAttributesMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.response; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.response; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseAttributesMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseAttributesMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseAttributesMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseAttributesMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseAttributesMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseAttributesMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseAttributesMessageHandler @@ -18,13 +18,13 @@ public class SftpResponseAttributesMessageHandler @Override public SftpResponseAttributesMessageParser getParser(byte[] array, SshContext context) { - return new SftpResponseAttributesMessageParser(array, context.getChooser()); + return new SftpResponseAttributesMessageParser(array); } @Override public SftpResponseAttributesMessageParser getParser( byte[] array, int startPosition, SshContext context) { - return new SftpResponseAttributesMessageParser(array, startPosition, context.getChooser()); + return new SftpResponseAttributesMessageParser(array, startPosition); } public static final SftpResponseAttributesMessagePreparator PREPARATOR = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseDataMessageHandler.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseDataMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseDataMessageHandler.java index 9a5614a38..b79c295f7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseDataMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseDataMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.response; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.response; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseDataMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseDataMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseDataMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseDataMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseDataMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseDataMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseDataMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseDataMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseHandleMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseHandleMessageHandler.java similarity index 72% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseHandleMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseHandleMessageHandler.java index dc01d46a5..9e2ca90f3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseHandleMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseHandleMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.response; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.response; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseHandleMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseHandleMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseHandleMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseHandleMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseHandleMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseHandleMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseHandleMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseHandleMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseMessageHandler.java similarity index 80% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseMessageHandler.java index c779b8c8b..c2f33aafa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseMessageHandler.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.response; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.response; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseMessage; import de.rub.nds.sshattacker.core.state.SshContext; public abstract class SftpResponseMessageHandler> diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseNameMessageHandler.java similarity index 63% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseNameMessageHandler.java index ccf93709e..3f1891fb3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseNameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseNameMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.response; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.response; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseNameMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseNameMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseNameMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseNameMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseNameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseNameMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseNameMessageHandler @@ -18,13 +18,13 @@ public class SftpResponseNameMessageHandler @Override public SftpResponseNameMessageParser getParser(byte[] array, SshContext context) { - return new SftpResponseNameMessageParser(array, context.getChooser()); + return new SftpResponseNameMessageParser(array); } @Override public SftpResponseNameMessageParser getParser( byte[] array, int startPosition, SshContext context) { - return new SftpResponseNameMessageParser(array, startPosition, context.getChooser()); + return new SftpResponseNameMessageParser(array, startPosition); } public static final SftpResponseNameMessagePreparator PREPARATOR = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseStatusMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseStatusMessageHandler.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseStatusMessageHandler.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseStatusMessageHandler.java index 7a30344f6..eb92257a2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/handler/response/SftpResponseStatusMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseStatusMessageHandler.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.handler.response; +package de.rub.nds.sshattacker.core.data.sftp.common.handler.response; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseStatusMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseStatusMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseStatusMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseStatusMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseStatusMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseStatusMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseStatusMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseStatusMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; public class SftpResponseStatusMessageHandler diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpHandshakeMessage.java similarity index 97% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpHandshakeMessage.java index 02d9b00fe..db595e783 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpHandshakeMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpHandshakeMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.common.message; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.sshattacker.core.data.sftp.SftpMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.*; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpInitMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpInitMessage.java index 6e9476f9d..5722bc30d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpInitMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpInitMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.common.message; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpInitMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.SftpInitMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpUnknownMessage.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpUnknownMessage.java index e429295dd..971312818 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpUnknownMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.common.message; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.SftpMessage; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpUnknownMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.SftpUnknownMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpVersionMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpVersionMessage.java index d08e18e87..b98d5ea04 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/SftpVersionMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpVersionMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message; +package de.rub.nds.sshattacker.core.data.sftp.common.message; -import de.rub.nds.sshattacker.core.data.sftp.handler.SftpVersionMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.SftpVersionMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCheckFileHandleMessage.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCheckFileHandleMessage.java index 9a30daba1..bd6803ba6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCheckFileHandleMessage.java @@ -5,14 +5,14 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.constants.HashAlgorithm; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCheckFileHandleMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestCheckFileHandleMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCheckFileNameMessage.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCheckFileNameMessage.java index b97f8881e..0ce14536a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCheckFileNameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCheckFileNameMessage.java @@ -5,14 +5,14 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.constants.HashAlgorithm; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCheckFileNameMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestCheckFileNameMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCopyDataMessage.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCopyDataMessage.java index 979a1943e..ed328ef48 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCopyDataMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCopyDataMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestCopyDataMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCopyFileMessage.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCopyFileMessage.java index 0d751a852..45ce70f8b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestCopyFileMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCopyFileMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestCopyFileMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestCopyFileMessageHandler; import de.rub.nds.sshattacker.core.modifiablevariable.path.ModifiablePath; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.util.Converter; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExpandPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExpandPathMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExpandPathMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExpandPathMessage.java index 27e07569b..7bf517b4a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExpandPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExpandPathMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestExpandPathMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestExpandPathMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExtendedMessage.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExtendedMessage.java index 71b1d1a4d..a64d44bdf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExtendedMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestMessage; import java.nio.charset.StandardCharsets; public abstract class SftpRequestExtendedMessage> diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExtendedWithHandleMessage.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithHandleMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExtendedWithHandleMessage.java index 23c00ede6..60a2e090d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExtendedWithHandleMessage.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExtendedWithPathMessage.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExtendedWithPathMessage.java index 02dd67740..61230997a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestExtendedWithPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExtendedWithPathMessage.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileStatVfsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestFileStatVfsMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileStatVfsMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestFileStatVfsMessage.java index 2a03c75e4..fefb0aff8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileStatVfsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestFileStatVfsMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestFileStatVfsMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestFileStatVfsMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileSyncMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestFileSyncMessage.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileSyncMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestFileSyncMessage.java index b3161519c..0582039b6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestFileSyncMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestFileSyncMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestFileSyncMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestFileSyncMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestGetTempFolderMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestGetTempFolderMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestGetTempFolderMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestGetTempFolderMessage.java index 27f215796..0b71a11c7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestGetTempFolderMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestGetTempFolderMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestGetTempFolderMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestGetTempFolderMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestHardlinkMessage.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestHardlinkMessage.java index d1e15eb6b..9cd00cb00 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHardlinkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestHardlinkMessage.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestHardlinkMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestHardlinkMessageHandler; import de.rub.nds.sshattacker.core.modifiablevariable.path.ModifiablePath; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestHomeDirectoryMessage.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestHomeDirectoryMessage.java index 26f683968..56e88d63e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestHomeDirectoryMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestHomeDirectoryMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestHomeDirectoryMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestHomeDirectoryMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLimitsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestLimitsMessage.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLimitsMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestLimitsMessage.java index fb70ddaa9..820d84a1b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLimitsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestLimitsMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestLimitsMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestLimitsMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestLinkSetStatMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestLinkSetStatMessage.java index f9f9689d4..b1d2a9b9a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestLinkSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestLinkSetStatMessage.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestLinkSetStatMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestLinkSetStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestMakeTempFolderMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestMakeTempFolderMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestMakeTempFolderMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestMakeTempFolderMessage.java index f5dd1b69d..59cc645f6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestMakeTempFolderMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestMakeTempFolderMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestMakeTempFolderMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestMakeTempFolderMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestPosixRenameMessage.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestPosixRenameMessage.java index 86fc711e3..4a7473af2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestPosixRenameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestPosixRenameMessage.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestPosixRenameMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestPosixRenameMessageHandler; import de.rub.nds.sshattacker.core.modifiablevariable.path.ModifiablePath; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestSpaceAvailableMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestSpaceAvailableMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestSpaceAvailableMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestSpaceAvailableMessage.java index d1b84b1b9..5f52bf369 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestSpaceAvailableMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestSpaceAvailableMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestSpaceAvailableMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestSpaceAvailableMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestStatVfsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestStatVfsMessage.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestStatVfsMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestStatVfsMessage.java index 079ce026e..a176ac8d8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestStatVfsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestStatVfsMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestStatVfsMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestStatVfsMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestTextSeekMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestTextSeekMessage.java index 7ef44a770..9085084d1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestTextSeekMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestTextSeekMessage.java @@ -5,17 +5,17 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.longint.ModifiableLong; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestTextSeekMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestTextSeekMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +/** This extended request is only available from version 4 onwards */ public class SftpRequestTextSeekMessage extends SftpRequestExtendedWithHandleMessage { - private ModifiableLong lineNumber; public SftpRequestTextSeekMessage() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestUnknownMessage.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestUnknownMessage.java index d8bfc0d39..9cda1dcd0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestUnknownMessage.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestUnknownMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestUnknownMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestUsersGroupsByIdMessage.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestUsersGroupsByIdMessage.java index f9baa529e..3e952c851 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestUsersGroupsByIdMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestUsersGroupsByIdMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestUsersGroupsByIdMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpIdEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestUsersGroupsByIdMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpIdEntry; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import jakarta.xml.bind.annotation.XmlElement; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestVendorIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestVendorIdMessage.java similarity index 97% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestVendorIdMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestVendorIdMessage.java index 1419630a2..617db47aa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_request/SftpRequestVendorIdMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestVendorIdMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_request.SftpRequestVendorIdMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestVendorIdMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseCheckFileMessage.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseCheckFileMessage.java index b209c7ffc..924b434de 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseCheckFileMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseCheckFileMessage.java @@ -5,15 +5,15 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.constants.HashAlgorithm; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseCheckFileMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_response.SftpResponseCheckFileMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseMessage; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseLimitsMessage.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseLimitsMessage.java index 8cafc637d..4c4293ec1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseLimitsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseLimitsMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.longint.ModifiableLong; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseLimitsMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_response.SftpResponseLimitsMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseMessage; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseSpaceAvailableMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseSpaceAvailableMessage.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseSpaceAvailableMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseSpaceAvailableMessage.java index 4b5fe6dce..a4ac38292 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseSpaceAvailableMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseSpaceAvailableMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseSpaceAvailableMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_response.SftpResponseSpaceAvailableMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseMessage; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseStatVfsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseStatVfsMessage.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseStatVfsMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseStatVfsMessage.java index 17f837bd6..06a362433 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseStatVfsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseStatVfsMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.longint.ModifiableLong; import de.rub.nds.sshattacker.core.constants.SftpVfsFlag; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseStatVfsMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_response.SftpResponseStatVfsMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseMessage; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUnknownMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseUnknownMessage.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUnknownMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseUnknownMessage.java index b83b09c76..823047f29 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUnknownMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseUnknownMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseUnknownMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_response.SftpResponseUnknownMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseMessage; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseUsersGroupsByIdMessage.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseUsersGroupsByIdMessage.java index 19afc1b1d..5d8972472 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extended_response/SftpResponseUsersGroupsByIdMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_response/SftpResponseUsersGroupsByIdMessage.java @@ -5,15 +5,15 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.extended_response.SftpResponseUsersGroupsByIdMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpNameEntry; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_response.SftpResponseUsersGroupsByIdMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseMessage; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import jakarta.xml.bind.annotation.XmlElement; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpAbstractExtension.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpAbstractExtension.java index 2ee145b72..e2022112b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpAbstractExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpAbstractExtension.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpAbstractExtensionHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpAbstractExtensionHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCheckFile.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionCheckFile.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCheckFile.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionCheckFile.java index a7acdcb2c..a8f556421 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCheckFile.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionCheckFile.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionCheckFileHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionCheckFileHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyData.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionCopyData.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyData.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionCopyData.java index d0bbc0d76..ae609fd24 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyData.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionCopyData.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionCopyDataHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionCopyDataHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyFile.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionCopyFile.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyFile.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionCopyFile.java index 1e3736762..8e64d7651 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionCopyFile.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionCopyFile.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionCopyFileHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionCopyFileHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionExpandPath.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionExpandPath.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionExpandPath.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionExpandPath.java index 7d53df192..17b0c30b5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionExpandPath.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionExpandPath.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionExpandPathHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionExpandPathHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileStatVfs.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionFileStatVfs.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileStatVfs.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionFileStatVfs.java index 5435d61a8..f4abf0b33 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileStatVfs.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionFileStatVfs.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionFileStatVfsHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionFileStatVfsHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileSync.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionFileSync.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileSync.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionFileSync.java index cdc2ce12d..549b67016 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionFileSync.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionFileSync.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionFileSyncHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionFileSyncHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionGetTempFolder.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionGetTempFolder.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionGetTempFolder.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionGetTempFolder.java index bd0a97b5c..ef56b6119 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionGetTempFolder.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionGetTempFolder.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionGetTempFolderHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionGetTempFolderHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHardlink.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionHardlink.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHardlink.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionHardlink.java index 05ba3fe5f..a06effde9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHardlink.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionHardlink.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionHardlinkHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionHardlinkHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHomeDirectory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionHomeDirectory.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHomeDirectory.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionHomeDirectory.java index 922856bc6..814cfd10b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionHomeDirectory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionHomeDirectory.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionHomeDirectoryHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionHomeDirectoryHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLimits.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionLimits.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLimits.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionLimits.java index 1e51dcdca..d059e53a3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLimits.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionLimits.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionLimitsHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionLimitsHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLinkSetStat.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionLinkSetStat.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLinkSetStat.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionLinkSetStat.java index f14e9e441..5ce1d0c5e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionLinkSetStat.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionLinkSetStat.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionLinkSetStatHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionLinkSetStatHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionMakeTempFolder.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionMakeTempFolder.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionMakeTempFolder.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionMakeTempFolder.java index 668afad06..0a0b2347d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionMakeTempFolder.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionMakeTempFolder.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionMakeTempFolderHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionMakeTempFolderHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionNewline.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionNewline.java index 4fb24d51c..b2b1e3255 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionNewline.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionNewline.java @@ -5,16 +5,17 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionNewlineHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionNewlineHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.nio.charset.StandardCharsets; +/** This extension is only available from version 4 onwards */ public class SftpExtensionNewline extends SftpAbstractExtension { private ModifiableInteger newlineSeperatorLength; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionPosixRename.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionPosixRename.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionPosixRename.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionPosixRename.java index 8c856934b..edc9295eb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionPosixRename.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionPosixRename.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionPosixRenameHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionPosixRenameHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionSpaceAvailable.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionSpaceAvailable.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionSpaceAvailable.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionSpaceAvailable.java index c0483c632..fd0813616 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionSpaceAvailable.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionSpaceAvailable.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionSpaceAvailableHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionSpaceAvailableHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionStatVfs.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionStatVfs.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionStatVfs.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionStatVfs.java index b5e8f52c8..e767e6003 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionStatVfs.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionStatVfs.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionStatVfsHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionStatVfsHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionTextSeek.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionTextSeek.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionTextSeek.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionTextSeek.java index 7cf7fb72a..df81c57fe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionTextSeek.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionTextSeek.java @@ -5,12 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionTextSeekHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionTextSeekHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +/** This extension is only available from version 4 onwards */ public class SftpExtensionTextSeek extends SftpExtensionWithVersion { public SftpExtensionTextSeek() { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUnknown.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionUnknown.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUnknown.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionUnknown.java index dd6b88e23..0e7fcc5ef 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUnknown.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionUnknown.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionUnknownHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionUnknownHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUsersGroupsById.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionUsersGroupsById.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUsersGroupsById.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionUsersGroupsById.java index 24ecd9dc1..59982f6fe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionUsersGroupsById.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionUsersGroupsById.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionUsersGroupsByIdHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionUsersGroupsByIdHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionVendorId.java similarity index 97% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionVendorId.java index 24a3a43cb..41b885376 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionVendorId.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionVendorId.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.extension.SftpExtensionVendorIdHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.extension.SftpExtensionVendorIdHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionWithVersion.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionWithVersion.java similarity index 97% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionWithVersion.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionWithVersion.java index ed0dc2e8c..d373972b3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/extension/SftpExtensionWithVersion.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extension/SftpExtensionWithVersion.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.message.extension; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpAclEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpAclEntry.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpAclEntry.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpAclEntry.java index ee1c758d3..96ee72571 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpAclEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpAclEntry.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.message.holder; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; @@ -13,7 +13,7 @@ import de.rub.nds.sshattacker.core.constants.SftpAceFlag; import de.rub.nds.sshattacker.core.constants.SftpAceMask; import de.rub.nds.sshattacker.core.constants.SftpAceType; -import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpAclEntryHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.holder.SftpAclEntryHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpFileAttributes.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpFileAttributes.java new file mode 100644 index 000000000..06325d6bd --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpFileAttributes.java @@ -0,0 +1,249 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.common.message.holder; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.holder.SftpFileAttributesHandler; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElementWrapper; +import jakarta.xml.bind.annotation.XmlElements; +import java.util.ArrayList; +import java.util.List; + +public class SftpFileAttributes extends ModifiableVariableHolder { + + private ModifiableInteger flags; + private ModifiableLong size; + private ModifiableInteger userId; + private ModifiableInteger groupId; + private ModifiableInteger permissions; + private ModifiableInteger accessTime; + private ModifiableInteger modifyTime; + private ModifiableInteger extendedCount; + + @HoldsModifiableVariable + @XmlElementWrapper + @XmlElements( + @XmlElement(type = SftpFileExtendedAttribute.class, name = "SftpFileExtendedAttribute")) + private ArrayList extendedAttributes = new ArrayList<>(); + + public SftpFileAttributes() { + super(); + } + + public SftpFileAttributes(SftpFileAttributes other) { + super(other); + flags = other.flags != null ? other.flags.createCopy() : null; + size = other.size != null ? other.size.createCopy() : null; + userId = other.userId != null ? other.userId.createCopy() : null; + groupId = other.groupId != null ? other.groupId.createCopy() : null; + permissions = other.permissions != null ? other.permissions.createCopy() : null; + accessTime = other.accessTime != null ? other.accessTime.createCopy() : null; + modifyTime = other.modifyTime != null ? other.modifyTime.createCopy() : null; + extendedCount = other.extendedCount != null ? other.extendedCount.createCopy() : null; + if (other.extendedAttributes != null) { + extendedAttributes = new ArrayList<>(other.extendedAttributes.size()); + for (SftpFileExtendedAttribute item : other.extendedAttributes) { + extendedAttributes.add(item != null ? item.createCopy() : null); + } + } + } + + @Override + public SftpFileAttributes createCopy() { + return new SftpFileAttributes(this); + } + + public ModifiableInteger getFlags() { + return flags; + } + + public void setFlags(ModifiableInteger flags) { + this.flags = flags; + } + + public void setFlags(int flags) { + this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); + } + + public void setFlags(SftpFileAttributeFlag... attributeFlags) { + setFlags(SftpFileAttributeFlag.flagsToInt(attributeFlags)); + } + + public ModifiableLong getSize() { + return size; + } + + public void setSize(ModifiableLong size) { + this.size = size; + } + + public void setSize(long size) { + this.size = ModifiableVariableFactory.safelySetValue(this.size, size); + } + + public void clearSize() { + size = null; + } + + public ModifiableInteger getUserId() { + return userId; + } + + public void setUserId(ModifiableInteger userId) { + this.userId = userId; + } + + public void setUserId(int userId) { + this.userId = ModifiableVariableFactory.safelySetValue(this.userId, userId); + } + + public void clearUserId() { + userId = null; + } + + public ModifiableInteger getGroupId() { + return groupId; + } + + public void setGroupId(ModifiableInteger groupId) { + this.groupId = groupId; + } + + public void setGroupId(int groupId) { + this.groupId = ModifiableVariableFactory.safelySetValue(this.groupId, groupId); + } + + public void clearGroupId() { + groupId = null; + } + + public ModifiableInteger getPermissions() { + return permissions; + } + + public void setPermissions(ModifiableInteger permissions) { + this.permissions = permissions; + } + + public void setPermissions(int permissions) { + this.permissions = ModifiableVariableFactory.safelySetValue(this.permissions, permissions); + } + + public void clearPermissions() { + permissions = null; + } + + public ModifiableInteger getAccessTime() { + return accessTime; + } + + public void setAccessTime(ModifiableInteger accessTime) { + this.accessTime = accessTime; + } + + public void setAccessTime(int accessTime) { + this.accessTime = ModifiableVariableFactory.safelySetValue(this.accessTime, accessTime); + } + + public void clearAccessTime() { + accessTime = null; + } + + public ModifiableInteger getModifyTime() { + return modifyTime; + } + + public void setModifyTime(ModifiableInteger modifyTime) { + this.modifyTime = modifyTime; + } + + public void setModifyTime(int modifyTime) { + this.modifyTime = ModifiableVariableFactory.safelySetValue(this.modifyTime, modifyTime); + } + + public void clearModifyTime() { + modifyTime = null; + } + + public ModifiableInteger getExtendedCount() { + return extendedCount; + } + + public void setExtendedCount(ModifiableInteger extendedCount) { + this.extendedCount = extendedCount; + } + + public void setExtendedCount(int extendedCount) { + this.extendedCount = + ModifiableVariableFactory.safelySetValue(this.extendedCount, extendedCount); + } + + public void clearExtendedAttributes() { + extendedCount = null; + extendedAttributes = new ArrayList<>(); + } + + public List getExtendedAttributes() { + return extendedAttributes; + } + + public void setExtendedAttributes(ArrayList extendedAttributes) { + setExtendedAttributes(extendedAttributes, false); + } + + public void setExtendedAttributes( + ArrayList extendedAttributes, boolean adjustLengthField) { + if (adjustLengthField) { + setExtendedCount(extendedAttributes.size()); + } + this.extendedAttributes = extendedAttributes; + } + + public void addExtendedAttribute(SftpFileExtendedAttribute extendedAttribute) { + addExtendedAttribute(extendedAttribute, false); + } + + public void addExtendedAttribute( + SftpFileExtendedAttribute extendedAttribute, boolean adjustLengthField) { + extendedAttributes.add(extendedAttribute); + if (adjustLengthField) { + setExtendedCount(extendedAttributes.size()); + } + } + + public static final SftpFileAttributesHandler HANDLER = new SftpFileAttributesHandler(); + + public void adjustContext(SshContext context) { + HANDLER.adjustContext(context, this); + } + + public void prepare(Chooser chooser) { + SftpFileAttributesHandler.PREPARATOR.prepare(this, chooser); + } + + public byte[] serialize() { + return SftpFileAttributesHandler.SERIALIZER.serialize(this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + if (extendedAttributes != null) { + holders.addAll(extendedAttributes); + } + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileExtendedAttribute.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpFileExtendedAttribute.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileExtendedAttribute.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpFileExtendedAttribute.java index 637560419..adcdf34fa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileExtendedAttribute.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpFileExtendedAttribute.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.message.holder; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpFileExtendedAttributeHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.holder.SftpFileExtendedAttributeHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpFileNameEntry.java similarity index 97% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpFileNameEntry.java index 1f5767f6d..4e3b63f2f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileNameEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpFileNameEntry.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.message.holder; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpFileNameEntryHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.holder.SftpFileNameEntryHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpIdEntry.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpIdEntry.java index 6071e064c..8028e631d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpIdEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpIdEntry.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.message.holder; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpIdEntryHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.holder.SftpIdEntryHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpNameEntry.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpNameEntry.java index 2125e02e4..9ee078d30 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpNameEntry.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/holder/SftpNameEntry.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.message.holder; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpNameEntryHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.holder.SftpNameEntryHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestCloseMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestCloseMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestCloseMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestCloseMessage.java index 4cd576956..5d9add35c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestCloseMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestCloseMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestCloseMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestCloseMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestFileSetStatMessage.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestFileSetStatMessage.java index a0e2d5c22..31d45fc28 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestFileSetStatMessage.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestFileSetStatMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestFileSetStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestFileStatMessage.java similarity index 62% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestFileStatMessage.java index e034bc606..078d88fa4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestFileStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestFileStatMessage.java @@ -5,27 +5,21 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; -import de.rub.nds.modifiablevariable.ModifiableVariableFactory; -import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestFileStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestFileStatMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestFileStatMessage extends SftpRequestWithHandleMessage { - private ModifiableInteger flags; - public SftpRequestFileStatMessage() { super(); } public SftpRequestFileStatMessage(SftpRequestFileStatMessage other) { super(other); - flags = other.flags != null ? other.flags.createCopy() : null; } @Override @@ -33,26 +27,6 @@ public SftpRequestFileStatMessage createCopy() { return new SftpRequestFileStatMessage(this); } - public ModifiableInteger getFlags() { - return flags; - } - - public void setFlags(ModifiableInteger flags) { - this.flags = flags; - } - - public void setFlags(int flags) { - this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); - } - - public void setFlags(SftpFileAttributeFlag... flags) { - setFlags(SftpFileAttributeFlag.flagsToInt(flags)); - } - - public void clearFlags() { - flags = null; - } - public static final SftpRequestFileStatMessageHandler HANDLER = new SftpRequestFileStatMessageHandler(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestLinkStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestLinkStatMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestLinkStatMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestLinkStatMessage.java index 00866d511..b6507f713 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestLinkStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestLinkStatMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestLinkStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestLinkStatMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestMakeDirMessage.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestMakeDirMessage.java index d391733e3..8b7560ee0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMakeDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestMakeDirMessage.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestMakeDirMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMakeDirMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestMessage.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestMessage.java index 9b4c5ac1a..602a20016 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestMessage.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestOpenDirMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenDirMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestOpenDirMessage.java index 056f8fd53..430d5083c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestOpenDirMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestOpenDirMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestOpenDirMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestOpenMessage.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestOpenMessage.java index 570603f76..a9fbe3012 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestOpenMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestOpenMessage.java @@ -5,14 +5,14 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestOpenMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestOpenMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadDirMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadDirMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadDirMessage.java index 4c4acf32f..02c1e9198 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadDirMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestReadDirMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestReadDirMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadLinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadLinkMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadLinkMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadLinkMessage.java index 359799ebc..04d21b46d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadLinkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadLinkMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestReadLinkMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestReadLinkMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadMessage.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadMessage.java index 9a4c82c35..90d4e675d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestReadMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestReadMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestReadMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRealPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestRealPathMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRealPathMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestRealPathMessage.java index 19ea6eaea..77d2a379d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRealPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestRealPathMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestRealPathMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestRealPathMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestRemoveDirMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveDirMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestRemoveDirMessage.java index 8e4d8a209..daf716835 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestRemoveDirMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestRemoveDirMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestRemoveDirMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestRemoveMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestRemoveMessage.java index 5c125c790..4d470c77d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRemoveMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestRemoveMessage.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestRemoveMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestRemoveMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRenameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestRenameMessage.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRenameMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestRenameMessage.java index 2d0f0f92e..572e9ca1e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestRenameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestRenameMessage.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestRenameMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestRenameMessageHandler; import de.rub.nds.sshattacker.core.modifiablevariable.path.ModifiablePath; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestSetStatMessage.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestSetStatMessage.java index 3479eecbb..fece1bd91 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestSetStatMessage.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestSetStatMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestSetStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestStatMessage.java similarity index 61% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestStatMessage.java index d57015f33..38eaa255b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestStatMessage.java @@ -5,26 +5,20 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; -import de.rub.nds.modifiablevariable.ModifiableVariableFactory; -import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestStatMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestStatMessage extends SftpRequestWithPathMessage { - private ModifiableInteger flags; - public SftpRequestStatMessage() { super(); } public SftpRequestStatMessage(SftpRequestStatMessage other) { super(other); - flags = other.flags != null ? other.flags.createCopy() : null; } @Override @@ -32,26 +26,6 @@ public SftpRequestStatMessage createCopy() { return new SftpRequestStatMessage(this); } - public ModifiableInteger getFlags() { - return flags; - } - - public void setFlags(ModifiableInteger flags) { - this.flags = flags; - } - - public void setFlags(int flags) { - this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); - } - - public void setFlags(SftpFileAttributeFlag... flags) { - setFlags(SftpFileAttributeFlag.flagsToInt(flags)); - } - - public void clearFlags() { - flags = null; - } - public static final SftpRequestStatMessageHandler HANDLER = new SftpRequestStatMessageHandler(); @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSymbolicLinkMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestSymbolicLinkMessage.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSymbolicLinkMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestSymbolicLinkMessage.java index 4f490f44e..07e1ac2f6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestSymbolicLinkMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestSymbolicLinkMessage.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestSymbolicLinkMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestSymbolicLinkMessageHandler; import de.rub.nds.sshattacker.core.modifiablevariable.path.ModifiablePath; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWithHandleMessage.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithHandleMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWithHandleMessage.java index b0555a7f5..5c5a12d14 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWithHandleMessage.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWithPathMessage.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWithPathMessage.java index 978b58b14..c08c855dd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWithPathMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWithPathMessage.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWriteMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWriteMessage.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWriteMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWriteMessage.java index 4348e8b75..6d143b788 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/request/SftpRequestWriteMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWriteMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.request; +package de.rub.nds.sshattacker.core.data.sftp.common.message.request; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.longint.ModifiableLong; -import de.rub.nds.sshattacker.core.data.sftp.handler.request.SftpRequestWriteMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestWriteMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseAttributesMessage.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseAttributesMessage.java index 62f256f4a..f6ba96e15 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseAttributesMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseAttributesMessage.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.response; +package de.rub.nds.sshattacker.core.data.sftp.common.message.response; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; -import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseAttributesMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseAttributesMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseDataMessage.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseDataMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseDataMessage.java index d089b2db2..66beffa8a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseDataMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.response; +package de.rub.nds.sshattacker.core.data.sftp.common.message.response; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseDataMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseDataMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseHandleMessage.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseHandleMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseHandleMessage.java index 21280d399..eb3b2b9de 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseHandleMessage.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.response; +package de.rub.nds.sshattacker.core.data.sftp.common.message.response; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseHandleMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseHandleMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseMessage.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseMessage.java index 9de610811..0bf7c33be 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseMessage.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.response; +package de.rub.nds.sshattacker.core.data.sftp.common.message.response; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseNameMessage.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseNameMessage.java index 40a8f580b..2c2ff7abc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseNameMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseNameMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.response; +package de.rub.nds.sshattacker.core.data.sftp.common.message.response; import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseNameMessageHandler; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseNameMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileNameEntry; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseStatusMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseStatusMessage.java similarity index 97% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseStatusMessage.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseStatusMessage.java index 15e8463bb..11a12d6e4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/response/SftpResponseStatusMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseStatusMessage.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.message.response; +package de.rub.nds.sshattacker.core.data.sftp.common.message.response; import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.modifiablevariable.string.ModifiableString; import de.rub.nds.sshattacker.core.constants.SftpStatusCode; -import de.rub.nds.sshattacker.core.data.sftp.handler.response.SftpResponseStatusMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseStatusMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpHandshakeMessageParser.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpHandshakeMessageParser.java index 96c073c4c..7664f3c50 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpHandshakeMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpHandshakeMessageParser.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.common.parser; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpHandshakeMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.*; -import de.rub.nds.sshattacker.core.data.sftp.parser.extension.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpHandshakeMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.*; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.*; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpInitMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpInitMessageParser.java index b1f7f7485..c34ed2e0e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpInitMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpInitMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.common.parser; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpInitMessage; public class SftpInitMessageParser extends SftpHandshakeMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpUnknownMessageParser.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpUnknownMessageParser.java index 7994e4b0e..9f5ae5704 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpUnknownMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.common.parser; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpUnknownMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpVersionMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpVersionMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpVersionMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpVersionMessageParser.java index 033442f12..4a5197f13 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/SftpVersionMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpVersionMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser; +package de.rub.nds.sshattacker.core.data.sftp.common.parser; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpVersionMessage; public class SftpVersionMessageParser extends SftpHandshakeMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java index aa2332096..d200e55b3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestCheckFileHandleMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCheckFileHandleMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileNameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestCheckFileNameMessageParser.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileNameMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestCheckFileNameMessageParser.java index 160d3e89c..9356ef12a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCheckFileNameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestCheckFileNameMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCheckFileNameMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestCopyDataMessageParser.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyDataMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestCopyDataMessageParser.java index dedfb25ab..14e0a798e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestCopyDataMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCopyDataMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyFileMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestCopyFileMessageParser.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyFileMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestCopyFileMessageParser.java index 1c89f2a5c..fb4b1a961 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestCopyFileMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestCopyFileMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCopyFileMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExpandPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestExpandPathMessageParser.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExpandPathMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestExpandPathMessageParser.java index f588042f7..c03d465bf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExpandPathMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestExpandPathMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExpandPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExpandPathMessage; public class SftpRequestExpandPathMessageParser extends SftpRequestExtendedWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestExtendedMessageParser.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestExtendedMessageParser.java index a0321cce3..a4e7dbf9e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestExtendedMessageParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.request.SftpRequestMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExtendedMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestMessageParser; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestExtendedWithHandleMessageParser.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithHandleMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestExtendedWithHandleMessageParser.java index 1983b30e3..50ddf613d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithHandleMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestExtendedWithHandleMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedWithHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExtendedWithHandleMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestExtendedWithPathMessageParser.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithPathMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestExtendedWithPathMessageParser.java index c7cd0cc5f..022617ac1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestExtendedWithPathMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestExtendedWithPathMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedWithPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExtendedWithPathMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestFileStatVfsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestFileStatVfsMessageParser.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestFileStatVfsMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestFileStatVfsMessageParser.java index 6a7db3d9f..c232fd038 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestFileStatVfsMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestFileStatVfsMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestFileStatVfsMessage; public class SftpRequestFileStatVfsMessageParser extends SftpRequestExtendedWithHandleMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestFileSyncMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestFileSyncMessageParser.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestFileSyncMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestFileSyncMessageParser.java index 0c3f549e6..cf7d9e1e1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestFileSyncMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestFileSyncMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileSyncMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestFileSyncMessage; public class SftpRequestFileSyncMessageParser extends SftpRequestExtendedWithHandleMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestGetTempFolderMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestGetTempFolderMessageParser.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestGetTempFolderMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestGetTempFolderMessageParser.java index 80ff4240f..42bc5474c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestGetTempFolderMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestGetTempFolderMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestGetTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestGetTempFolderMessage; public class SftpRequestGetTempFolderMessageParser extends SftpRequestExtendedMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHardlinkMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestHardlinkMessageParser.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHardlinkMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestHardlinkMessageParser.java index c6454fcee..06d62b436 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHardlinkMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestHardlinkMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHardlinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestHardlinkMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHomeDirectoryMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestHomeDirectoryMessageParser.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHomeDirectoryMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestHomeDirectoryMessageParser.java index b41dde5ca..cc52a9f55 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestHomeDirectoryMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestHomeDirectoryMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHomeDirectoryMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestHomeDirectoryMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLimitsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestLimitsMessageParser.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLimitsMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestLimitsMessageParser.java index e4f83c2f3..12c746776 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLimitsMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestLimitsMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestLimitsMessage; public class SftpRequestLimitsMessageParser extends SftpRequestExtendedMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLinkSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestLinkSetStatMessageParser.java similarity index 65% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLinkSetStatMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestLinkSetStatMessageParser.java index ac7834d30..257312773 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestLinkSetStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestLinkSetStatMessageParser.java @@ -5,25 +5,20 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLinkSetStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileAttributesParser; -import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestLinkSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpFileAttributesParser; public class SftpRequestLinkSetStatMessageParser extends SftpRequestExtendedWithPathMessageParser { - private final Chooser chooser; - - public SftpRequestLinkSetStatMessageParser(byte[] array, Chooser chooser) { + public SftpRequestLinkSetStatMessageParser(byte[] array) { super(array); - this.chooser = chooser; } - public SftpRequestLinkSetStatMessageParser(byte[] array, int startPosition, Chooser chooser) { + public SftpRequestLinkSetStatMessageParser(byte[] array, int startPosition) { super(array, startPosition); - this.chooser = chooser; } @Override @@ -33,7 +28,7 @@ protected SftpRequestLinkSetStatMessage createMessage() { private void parseAttributes() { SftpFileAttributesParser attributesParser = - new SftpFileAttributesParser(getArray(), getPointer(), chooser); + new SftpFileAttributesParser(getArray(), getPointer()); message.setAttributes(attributesParser.parse()); setPointer(attributesParser.getPointer()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestMakeTempFolderMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestMakeTempFolderMessageParser.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestMakeTempFolderMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestMakeTempFolderMessageParser.java index a8c6ca971..e23bb71b9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestMakeTempFolderMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestMakeTempFolderMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestMakeTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestMakeTempFolderMessage; public class SftpRequestMakeTempFolderMessageParser extends SftpRequestExtendedMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestPosixRenameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestPosixRenameMessageParser.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestPosixRenameMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestPosixRenameMessageParser.java index 7df250f1e..0ce8a841a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestPosixRenameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestPosixRenameMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestPosixRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestPosixRenameMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestSpaceAvailableMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestSpaceAvailableMessageParser.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestSpaceAvailableMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestSpaceAvailableMessageParser.java index d86aa9197..1b0c15a33 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestSpaceAvailableMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestSpaceAvailableMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestSpaceAvailableMessage; public class SftpRequestSpaceAvailableMessageParser extends SftpRequestExtendedWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestStatVfsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestStatVfsMessageParser.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestStatVfsMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestStatVfsMessageParser.java index d66c67954..6b6f861ff 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestStatVfsMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestStatVfsMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestStatVfsMessage; public class SftpRequestStatVfsMessageParser extends SftpRequestExtendedWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestTextSeekMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestTextSeekMessageParser.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestTextSeekMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestTextSeekMessageParser.java index a53731899..66afc5e43 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestTextSeekMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestTextSeekMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestTextSeekMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestTextSeekMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestUnknownMessageParser.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUnknownMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestUnknownMessageParser.java index bf5b1d3c2..7eb0910f6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestUnknownMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestUnknownMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java index 7281545f6..89dc93f6f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestUsersGroupsByIdMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUsersGroupsByIdMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpIdEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpIdEntryParser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestVendorIdMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestVendorIdMessageParser.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestVendorIdMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestVendorIdMessageParser.java index c8184b2b5..837236f20 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_request/SftpRequestVendorIdMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_request/SftpRequestVendorIdMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestVendorIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestVendorIdMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseCheckFileMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseCheckFileMessageParser.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseCheckFileMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseCheckFileMessageParser.java index 510cfacce..c27302b99 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseCheckFileMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseCheckFileMessageParser.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseCheckFileMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseCheckFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseMessageParser; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseLimitsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseLimitsMessageParser.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseLimitsMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseLimitsMessageParser.java index 88bea4dd7..7a9e2ef57 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseLimitsMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseLimitsMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseLimitsMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseMessageParser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java index e27699538..7cd72d4ca 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseSpaceAvailableMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseSpaceAvailableMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseMessageParser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseStatVfsMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseStatVfsMessageParser.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseStatVfsMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseStatVfsMessageParser.java index c2d6a5bdc..cb1e43dd0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseStatVfsMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseStatVfsMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseStatVfsMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseMessageParser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUnknownMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseUnknownMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUnknownMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseUnknownMessageParser.java index 5ac797f71..572e1416a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUnknownMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseUnknownMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUnknownMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseMessageParser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java index fe3e2e480..c7fb31420 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extended_response/SftpResponseUsersGroupsByIdMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUsersGroupsByIdMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpNameEntryParser; -import de.rub.nds.sshattacker.core.data.sftp.parser.response.SftpResponseMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpNameEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseMessageParser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpAbstractExtensionParser.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpAbstractExtensionParser.java index 5e26ab0ee..96dd6f7d8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpAbstractExtensionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpAbstractExtensionParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extension; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.protocol.common.Parser; import java.nio.charset.StandardCharsets; import java.util.function.Supplier; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionNewlineParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpExtensionNewlineParser.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionNewlineParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpExtensionNewlineParser.java index 304205db9..9a38b221d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionNewlineParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpExtensionNewlineParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extension; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionNewline; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionNewline; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionUnknownParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpExtensionUnknownParser.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionUnknownParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpExtensionUnknownParser.java index 79c72fdc4..42a0c2468 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionUnknownParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpExtensionUnknownParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extension; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionUnknown; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionUnknown; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpExtensionVendorIdParser.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpExtensionVendorIdParser.java index 42d21ade4..64b925c82 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionVendorIdParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpExtensionVendorIdParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extension; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionVendorId; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionVendorId; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionWithVersionParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpExtensionWithVersionParser.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionWithVersionParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpExtensionWithVersionParser.java index 7034d8182..f331c8604 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/extension/SftpExtensionWithVersionParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/extension/SftpExtensionWithVersionParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.extension; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionWithVersion; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionWithVersion; import java.nio.charset.StandardCharsets; import java.util.function.Supplier; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpAclEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpAclEntryParser.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpAclEntryParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpAclEntryParser.java index c98f5ff83..51b27115b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpAclEntryParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpAclEntryParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpAclEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpAclEntry; import de.rub.nds.sshattacker.core.protocol.common.Parser; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpFileAttributesParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpFileAttributesParser.java new file mode 100644 index 000000000..e155ec103 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpFileAttributesParser.java @@ -0,0 +1,109 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.common.parser.holder; + +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.Parser; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpFileAttributesParser extends Parser { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpFileAttributes attributes = new SftpFileAttributes(); + + public SftpFileAttributesParser(byte[] array) { + super(array); + } + + public SftpFileAttributesParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseFlags() { + int flags = parseIntField(); + attributes.setFlags(flags); + LOGGER.debug("Flags: {}", flags); + } + + private void parseSize() { + long size = parseLongField(); + attributes.setSize(size); + LOGGER.debug("Size: {}", size); + } + + private void parseUIdGId() { + int uId = parseIntField(); + attributes.setUserId(uId); + LOGGER.debug("UId: {}", uId); + int gId = parseIntField(); + attributes.setGroupId(gId); + LOGGER.debug("GId: {}", gId); + } + + private void parsePermissions() { + int permissions = parseIntField(); + attributes.setPermissions(permissions); + LOGGER.debug("Permissions: {}", permissions); + } + + private void parseAcModTime() { + int aTime = parseIntField(); + attributes.setAccessTime(aTime); + LOGGER.debug("ATime: {}", aTime); + int mTime = parseIntField(); + attributes.setModifyTime(mTime); + LOGGER.debug("MTime: {}", mTime); + } + + private void parseExtendedAttributes() { + int extendedCount = parseIntField(); + attributes.setExtendedCount(extendedCount); + LOGGER.debug("ExtendedCount: {}", extendedCount); + + for (int extendedAttrIndex = 0, extendedAttrStartPointer = getPointer(); + extendedAttrIndex < extendedCount; + extendedAttrIndex++, extendedAttrStartPointer = getPointer()) { + + SftpFileExtendedAttributeParser extendedAttrParser = + new SftpFileExtendedAttributeParser(getArray(), extendedAttrStartPointer); + + attributes.addExtendedAttribute(extendedAttrParser.parse(), true); + setPointer(extendedAttrParser.getPointer()); + } + } + + @Override + public final SftpFileAttributes parse() { + parseFlags(); + + int flags = attributes.getFlags().getValue(); + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE)) { + parseSize(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID)) { + parseUIdGId(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS)) { + parsePermissions(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME)) { + parseAcModTime(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED)) { + parseExtendedAttributes(); + } + return attributes; + } + + private static boolean isFlagSet(int attributes, SftpFileAttributeFlag attribute) { + return (attributes & attribute.getValue()) != 0; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileExtendedAttributeParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpFileExtendedAttributeParser.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileExtendedAttributeParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpFileExtendedAttributeParser.java index 6eb1f5052..24084fb6f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileExtendedAttributeParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpFileExtendedAttributeParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileExtendedAttribute; import de.rub.nds.sshattacker.core.protocol.common.Parser; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileNameEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpFileNameEntryParser.java similarity index 67% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileNameEntryParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpFileNameEntryParser.java index c24e3d679..ff8029c4c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileNameEntryParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpFileNameEntryParser.java @@ -5,13 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Parser; -import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -22,16 +21,12 @@ public class SftpFileNameEntryParser extends Parser { private final SftpFileNameEntry nameEntry = new SftpFileNameEntry(); - private final Chooser chooser; - - public SftpFileNameEntryParser(byte[] array, Chooser chooser) { + public SftpFileNameEntryParser(byte[] array) { super(array); - this.chooser = chooser; } - public SftpFileNameEntryParser(byte[] array, int startPosition, Chooser chooser) { + public SftpFileNameEntryParser(byte[] array, int startPosition) { super(array, startPosition); - this.chooser = chooser; } private void parseFilename() { @@ -44,19 +39,17 @@ private void parseFilename() { } private void parseLongName() { - if (chooser.getSftpNegotiatedVersion(true) <= 3) { - int longNameLength = parseIntField(); - nameEntry.setLongNameLength(longNameLength); - LOGGER.debug("LongName length: {}", longNameLength); - String longName = parseByteString(longNameLength, StandardCharsets.UTF_8); - nameEntry.setLongName(longName); - LOGGER.debug("LongName: {}", () -> backslashEscapeString(longName)); - } + int longNameLength = parseIntField(); + nameEntry.setLongNameLength(longNameLength); + LOGGER.debug("LongName length: {}", longNameLength); + String longName = parseByteString(longNameLength, StandardCharsets.UTF_8); + nameEntry.setLongName(longName); + LOGGER.debug("LongName: {}", () -> backslashEscapeString(longName)); } private void parseAttributes() { SftpFileAttributesParser attributesParser = - new SftpFileAttributesParser(getArray(), getPointer(), chooser); + new SftpFileAttributesParser(getArray(), getPointer()); nameEntry.setAttributes(attributesParser.parse()); setPointer(attributesParser.getPointer()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpIdEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpIdEntryParser.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpIdEntryParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpIdEntryParser.java index 2ef45550e..ec9471f38 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpIdEntryParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpIdEntryParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpIdEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpIdEntry; import de.rub.nds.sshattacker.core.protocol.common.Parser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpNameEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpNameEntryParser.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpNameEntryParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpNameEntryParser.java index 320f73f55..8f504f417 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpNameEntryParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/holder/SftpNameEntryParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Parser; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestCloseMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestCloseMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestCloseMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestCloseMessageParser.java index b0adfdaad..d993bb0ec 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestCloseMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestCloseMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestCloseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestCloseMessage; public class SftpRequestCloseMessageParser extends SftpRequestWithHandleMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestFileSetStatMessageParser.java similarity index 65% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileSetStatMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestFileSetStatMessageParser.java index 82e2684db..2ce8fbafc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileSetStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestFileSetStatMessageParser.java @@ -5,25 +5,20 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileSetStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileAttributesParser; -import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestFileSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpFileAttributesParser; public class SftpRequestFileSetStatMessageParser extends SftpRequestWithHandleMessageParser { - private final Chooser chooser; - - public SftpRequestFileSetStatMessageParser(byte[] array, Chooser chooser) { + public SftpRequestFileSetStatMessageParser(byte[] array) { super(array); - this.chooser = chooser; } - public SftpRequestFileSetStatMessageParser(byte[] array, int startPosition, Chooser chooser) { + public SftpRequestFileSetStatMessageParser(byte[] array, int startPosition) { super(array, startPosition); - this.chooser = chooser; } @Override @@ -33,7 +28,7 @@ public SftpRequestFileSetStatMessage createMessage() { private void parseAttributes() { SftpFileAttributesParser attributesParser = - new SftpFileAttributesParser(getArray(), getPointer(), chooser); + new SftpFileAttributesParser(getArray(), getPointer()); message.setAttributes(attributesParser.parse()); setPointer(attributesParser.getPointer()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestFileStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestFileStatMessageParser.java new file mode 100644 index 000000000..da9cd98b2 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestFileStatMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestFileStatMessage; + +public class SftpRequestFileStatMessageParser + extends SftpRequestWithHandleMessageParser { + + public SftpRequestFileStatMessageParser(byte[] array) { + super(array); + } + + public SftpRequestFileStatMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestFileStatMessage createMessage() { + return new SftpRequestFileStatMessage(); + } + + @Override + protected void parseRequestWithHandleSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestLinkStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestLinkStatMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestLinkStatMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestLinkStatMessageParser.java index f1b2579ec..16001a9fc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestLinkStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestLinkStatMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestLinkStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestLinkStatMessage; public class SftpRequestLinkStatMessageParser extends SftpRequestWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMakeDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestMakeDirMessageParser.java similarity index 66% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMakeDirMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestMakeDirMessageParser.java index 59f096346..dfeb8fc13 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMakeDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestMakeDirMessageParser.java @@ -5,25 +5,20 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMakeDirMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileAttributesParser; -import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestMakeDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpFileAttributesParser; public class SftpRequestMakeDirMessageParser extends SftpRequestWithPathMessageParser { - private final Chooser chooser; - - public SftpRequestMakeDirMessageParser(byte[] array, Chooser chooser) { + public SftpRequestMakeDirMessageParser(byte[] array) { super(array); - this.chooser = chooser; } - public SftpRequestMakeDirMessageParser(byte[] array, int startPosition, Chooser chooser) { + public SftpRequestMakeDirMessageParser(byte[] array, int startPosition) { super(array, startPosition); - this.chooser = chooser; } @Override @@ -33,7 +28,7 @@ public SftpRequestMakeDirMessage createMessage() { private void parseAttributes() { SftpFileAttributesParser attributesParser = - new SftpFileAttributesParser(getArray(), getPointer(), chooser); + new SftpFileAttributesParser(getArray(), getPointer()); message.setAttributes(attributesParser.parse()); setPointer(attributesParser.getPointer()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestMessageParser.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestMessageParser.java index 9793f40ed..f300d3d7e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestOpenDirMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenDirMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestOpenDirMessageParser.java index 148a20f35..341de9696 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestOpenDirMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestOpenDirMessage; public class SftpRequestOpenDirMessageParser extends SftpRequestWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestOpenMessageParser.java similarity index 72% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestOpenMessageParser.java index c8a418738..f5e58311f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestOpenMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestOpenMessageParser.java @@ -5,11 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileAttributesParser; -import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpFileAttributesParser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -17,16 +16,13 @@ public class SftpRequestOpenMessageParser extends SftpRequestWithPathMessageParser { private static final Logger LOGGER = LogManager.getLogger(); - private final Chooser chooser; - public SftpRequestOpenMessageParser(byte[] array, Chooser chooser) { + public SftpRequestOpenMessageParser(byte[] array) { super(array); - this.chooser = chooser; } - public SftpRequestOpenMessageParser(byte[] array, int startPosition, Chooser chooser) { + public SftpRequestOpenMessageParser(byte[] array, int startPosition) { super(array, startPosition); - this.chooser = chooser; } @Override @@ -42,7 +38,7 @@ private void parseOpenFlags() { private void parseAttributes() { SftpFileAttributesParser attributesParser = - new SftpFileAttributesParser(getArray(), getPointer(), chooser); + new SftpFileAttributesParser(getArray(), getPointer()); message.setAttributes(attributesParser.parse()); setPointer(attributesParser.getPointer()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestReadDirMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadDirMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestReadDirMessageParser.java index ea109e3b7..023a2f078 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestReadDirMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadDirMessage; public class SftpRequestReadDirMessageParser extends SftpRequestWithHandleMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadLinkMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestReadLinkMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadLinkMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestReadLinkMessageParser.java index a548ffa6c..2d9a6f321 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadLinkMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestReadLinkMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadLinkMessage; public class SftpRequestReadLinkMessageParser extends SftpRequestWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestReadMessageParser.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestReadMessageParser.java index 097498ed8..3a7ae3e36 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestReadMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestReadMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRealPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestRealPathMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRealPathMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestRealPathMessageParser.java index 193872597..71ca63b0c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRealPathMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestRealPathMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRealPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRealPathMessage; public class SftpRequestRealPathMessageParser extends SftpRequestWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestRemoveDirMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveDirMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestRemoveDirMessageParser.java index 7454301c9..e5333da5f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveDirMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestRemoveDirMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRemoveDirMessage; public class SftpRequestRemoveDirMessageParser extends SftpRequestWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestRemoveMessageParser.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestRemoveMessageParser.java index fa0f303d7..e2c80da2b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRemoveMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestRemoveMessageParser.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRemoveMessage; public class SftpRequestRemoveMessageParser extends SftpRequestWithPathMessageParser { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRenameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestRenameMessageParser.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRenameMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestRenameMessageParser.java index 1af6a8cc2..459807f85 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestRenameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestRenameMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRenameMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestSetStatMessageParser.java similarity index 66% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSetStatMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestSetStatMessageParser.java index debeb2154..c528d2b9f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSetStatMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestSetStatMessageParser.java @@ -5,25 +5,20 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSetStatMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileAttributesParser; -import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpFileAttributesParser; public class SftpRequestSetStatMessageParser extends SftpRequestWithPathMessageParser { - private final Chooser chooser; - - public SftpRequestSetStatMessageParser(byte[] array, Chooser chooser) { + public SftpRequestSetStatMessageParser(byte[] array) { super(array); - this.chooser = chooser; } - public SftpRequestSetStatMessageParser(byte[] array, int startPosition, Chooser chooser) { + public SftpRequestSetStatMessageParser(byte[] array, int startPosition) { super(array, startPosition); - this.chooser = chooser; } @Override @@ -33,7 +28,7 @@ public SftpRequestSetStatMessage createMessage() { private void parseAttributes() { SftpFileAttributesParser attributesParser = - new SftpFileAttributesParser(getArray(), getPointer(), chooser); + new SftpFileAttributesParser(getArray(), getPointer()); message.setAttributes(attributesParser.parse()); setPointer(attributesParser.getPointer()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestStatMessageParser.java new file mode 100644 index 000000000..612282afd --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestStatMessageParser.java @@ -0,0 +1,30 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestStatMessage; + +public class SftpRequestStatMessageParser + extends SftpRequestWithPathMessageParser { + + public SftpRequestStatMessageParser(byte[] array) { + super(array); + } + + public SftpRequestStatMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpRequestStatMessage createMessage() { + return new SftpRequestStatMessage(); + } + + @Override + protected void parseRequestWithPathSpecificContents() {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSymbolicLinkMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestSymbolicLinkMessageParser.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSymbolicLinkMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestSymbolicLinkMessageParser.java index 61a86452a..0ed767aab 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestSymbolicLinkMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestSymbolicLinkMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSymbolicLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestSymbolicLinkMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestWithHandleMessageParser.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithHandleMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestWithHandleMessageParser.java index 3c3776a22..f9dbc1dde 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithHandleMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestWithHandleMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWithHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWithHandleMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithPathMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestWithPathMessageParser.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithPathMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestWithPathMessageParser.java index 50d5ac894..a4e0a5c06 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWithPathMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestWithPathMessageParser.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWithPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWithPathMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWriteMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestWriteMessageParser.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWriteMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestWriteMessageParser.java index 5809a691e..3b93c4132 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestWriteMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/request/SftpRequestWriteMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.request; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWriteMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWriteMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseAttributesMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseAttributesMessageParser.java similarity index 65% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseAttributesMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseAttributesMessageParser.java index a6495705a..7904f000d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseAttributesMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseAttributesMessageParser.java @@ -5,25 +5,20 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.response; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.response; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileAttributesParser; -import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpFileAttributesParser; public class SftpResponseAttributesMessageParser extends SftpResponseMessageParser { - private final Chooser chooser; - - public SftpResponseAttributesMessageParser(byte[] array, Chooser chooser) { + public SftpResponseAttributesMessageParser(byte[] array) { super(array); - this.chooser = chooser; } - public SftpResponseAttributesMessageParser(byte[] array, int startPosition, Chooser chooser) { + public SftpResponseAttributesMessageParser(byte[] array, int startPosition) { super(array, startPosition); - this.chooser = chooser; } @Override @@ -33,7 +28,7 @@ public SftpResponseAttributesMessage createMessage() { private void parseAttributes() { SftpFileAttributesParser attributesParser = - new SftpFileAttributesParser(getArray(), getPointer(), chooser); + new SftpFileAttributesParser(getArray(), getPointer()); message.setAttributes(attributesParser.parse()); setPointer(attributesParser.getPointer()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseDataMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseDataMessageParser.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseDataMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseDataMessageParser.java index 4127cc4ac..dda60b815 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseDataMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseDataMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.response; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.response; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseDataMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseHandleMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseHandleMessageParser.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseHandleMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseHandleMessageParser.java index 6b16ff954..febc5c05a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseHandleMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseHandleMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.response; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.response; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseHandleMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseMessageParser.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseMessageParser.java index ad647a16f..6efeb803f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseMessageParser.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.response; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.response; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseMessage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseNameMessageParser.java similarity index 74% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseNameMessageParser.java index d6b2e9a1c..b2becc170 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseNameMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseNameMessageParser.java @@ -5,11 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.response; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.response; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameMessage; -import de.rub.nds.sshattacker.core.data.sftp.parser.holder.SftpFileNameEntryParser; -import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpFileNameEntryParser; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -17,16 +16,13 @@ public class SftpResponseNameMessageParser extends SftpResponseMessageParser { private static final Logger LOGGER = LogManager.getLogger(); - private final Chooser chooser; - public SftpResponseNameMessageParser(byte[] array, Chooser chooser) { + public SftpResponseNameMessageParser(byte[] array) { super(array); - this.chooser = chooser; } - public SftpResponseNameMessageParser(byte[] array, int startPosition, Chooser chooser) { + public SftpResponseNameMessageParser(byte[] array, int startPosition) { super(array, startPosition); - this.chooser = chooser; } @Override @@ -44,7 +40,7 @@ private void parseNameEntries() { nameEntryIndex++, nameEntryStartPointer = getPointer()) { SftpFileNameEntryParser nameEntryParser = - new SftpFileNameEntryParser(getArray(), nameEntryStartPointer, chooser); + new SftpFileNameEntryParser(getArray(), nameEntryStartPointer); message.addNameEntry(nameEntryParser.parse()); setPointer(nameEntryParser.getPointer()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseStatusMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseStatusMessageParser.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseStatusMessageParser.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseStatusMessageParser.java index 7e27a7087..71dade4dc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/response/SftpResponseStatusMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/response/SftpResponseStatusMessageParser.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.parser.response; +package de.rub.nds.sshattacker.core.data.sftp.common.parser.response; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.sshattacker.core.constants.SftpStatusCode; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseStatusMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseStatusMessage; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpInitMessagePreparator.java similarity index 60% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpInitMessagePreparator.java index a3276e952..79b03c4c6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpInitMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpInitMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpInitMessagePreparator extends SftpMessagePreparator { @@ -20,20 +20,13 @@ public SftpInitMessagePreparator() { public void prepareMessageSpecificContents(SftpInitMessage object, Chooser chooser) { object.setVersion(chooser.getSftpClientVersion()); + // Only Clients with protocol version 3 should send supported extensions, + // since version 4 it is recommended to not send extensions in order + // to stay compatible with servers that use protocol version 1 or 2 if (object.getExtensions().isEmpty()) { // Only load default extensions if none are set in the message - if (chooser.getSftpClientVersion() == 3) { - // Only Clients with protocol version 3 should send supported extensions, - // to stay compatible with servers that use protocol version 1 or 2 - object.setExtensions(chooser.getSftpClientSupportedExtensions()); - } - } else { - if (chooser.getSftpClientVersion() != 3 - && chooser.getConfig().getRespectSftpNegotiatedVersion()) { - object.getExtensions().clear(); - } + object.setExtensions(chooser.getSftpClientSupportedExtensions()); } - object.getExtensions().forEach(extension -> extension.prepare(chooser)); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpUnknownMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpUnknownMessagePreparator.java index 5ecfcca50..79c7655f8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpUnknownMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator; import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpUnknownMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpUnknownMessagePreparator extends SftpMessagePreparator { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpVersionMessagePreparator.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpVersionMessagePreparator.java index c76f5cdf4..51837f6c1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/SftpVersionMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpVersionMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpVersionMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpVersionMessagePreparator extends SftpMessagePreparator { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java index 942ece26a..8ebf599fc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.HashAlgorithm; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCheckFileHandleMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.util.List; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java index 2c96dc4bd..ace26c833 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.HashAlgorithm; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCheckFileNameMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; import java.util.List; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java index 0ede50739..40328e8c9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCopyDataMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestCopyDataMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java index 458c4f0e0..a2c155df0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCopyFileMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestCopyFileMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java index e3f4bc751..b13af5508 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExpandPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExpandPathMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestExpandPathMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExtendedMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExtendedMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExtendedMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExtendedMessagePreparator.java index 83bbcb962..b5e1fc9e7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestExtendedMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExtendedMessagePreparator.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedMessage; -import de.rub.nds.sshattacker.core.data.sftp.preperator.request.SftpRequestMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExtendedMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMessagePreparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public abstract class SftpRequestExtendedMessagePreparator> diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java index eb19a0774..a7cf1f8f6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestFileStatVfsMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestFileStatVfsMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java index d3716404d..79d1f8771 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileSyncMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestFileSyncMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestFileSyncMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestGetTempFolderMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestGetTempFolderMessagePreparator.java similarity index 80% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestGetTempFolderMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestGetTempFolderMessagePreparator.java index 151daa703..0b5c6bf9c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestGetTempFolderMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestGetTempFolderMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestGetTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestGetTempFolderMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestGetTempFolderMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java index 7f0592b61..d006a152b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHardlinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestHardlinkMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestHardlinkMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java index c06a9c00a..27cb2f36c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHomeDirectoryMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestHomeDirectoryMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestHomeDirectoryMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLimitsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLimitsMessagePreparator.java similarity index 79% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLimitsMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLimitsMessagePreparator.java index 12c180731..4fdfc6564 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLimitsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLimitsMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestLimitsMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestLimitsMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java index 07f865e38..e2b8b5da1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLinkSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestLinkSetStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestLinkSetStatMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java similarity index 80% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java index c903ee632..7136e02e1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestMakeTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestMakeTempFolderMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestMakeTempFolderMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java index 811819647..506823f54 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestPosixRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestPosixRenameMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestPosixRenameMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java similarity index 80% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java index 8abcd4493..cf4d2c4e5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestSpaceAvailableMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestSpaceAvailableMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java index 4a225337e..8af2629fb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestStatVfsMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestStatVfsMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java index cebf5e6fa..ddff96796 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestTextSeekMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestTextSeekMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestTextSeekMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUnknownMessagePreparator.java similarity index 79% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUnknownMessagePreparator.java index 73f5d0921..f20a23e4a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUnknownMessagePreparator.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestUnknownMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestUnknownMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java index 66d8bce1c..bf0aafb88 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestUsersGroupsByIdMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestUsersGroupsByIdMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java index 38c2987fc..f9d90a25a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestVendorIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestVendorIdMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestVendorIdMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java similarity index 79% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java index b9b71fdd7..6433786c6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response; import de.rub.nds.sshattacker.core.constants.HashAlgorithm; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseCheckFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseCheckFileMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseCheckFileMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseExtendedMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseExtendedMessagePreparator.java similarity index 68% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseExtendedMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseExtendedMessagePreparator.java index 83c691092..4b69ec115 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseExtendedMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseExtendedMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; -import de.rub.nds.sshattacker.core.data.sftp.preperator.response.SftpResponseMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseMessagePreparator; public abstract class SftpResponseExtendedMessagePreparator> extends SftpResponseMessagePreparator { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseLimitsMessagePreparator.java similarity index 79% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseLimitsMessagePreparator.java index 751dda6e8..af1709027 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseLimitsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseLimitsMessagePreparator.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseLimitsMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseLimitsMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java index 824eda076..b0645433f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseSpaceAvailableMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseSpaceAvailableMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java index d0e5d4409..dd45fb8c4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response; import de.rub.nds.sshattacker.core.constants.SftpVfsFlag; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseStatVfsMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseStatVfsMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseUnknownMessagePreparator.java similarity index 77% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseUnknownMessagePreparator.java index 149400ac2..e489d1e04 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseUnknownMessagePreparator.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseUnknownMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseUnknownMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java index 2b0b47dbb..dd7dac7dc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response; import de.rub.nds.modifiablevariable.ModifiableVariable; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUsersGroupsByIdMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpNameEntry; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseUsersGroupsByIdMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpAbstractExtensionPreparator.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpAbstractExtensionPreparator.java index 93adba362..cb2058794 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpAbstractExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpAbstractExtensionPreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionFileStatVfsPreparator.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionFileStatVfsPreparator.java index 06f66e227..08678f4ca 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionFileStatVfsPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionFileStatVfsPreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionFileStatVfs; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionFileStatVfs; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpExtensionFileStatVfsPreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionNewlinePreparator.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionNewlinePreparator.java index 5c580c459..b7e576712 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionNewlinePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionNewlinePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionNewline; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionNewline; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpExtensionNewlinePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionStatVfsPreparator.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionStatVfsPreparator.java index 00877c2a1..53d69e73f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionStatVfsPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionStatVfsPreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionStatVfs; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionStatVfs; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpExtensionStatVfsPreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionUnknownPreparator.java similarity index 80% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionUnknownPreparator.java index 60f8467ca..f2310ae28 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionUnknownPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionUnknownPreparator.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionUnknown; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionUnknown; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpExtensionUnknownPreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionVendorIdPreparator.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionVendorIdPreparator.java index f3caa4e2d..3969a3ff9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionVendorIdPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionVendorIdPreparator.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionVendorId; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionVendorId; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpExtensionVendorIdPreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionWithVersionPreparator.java similarity index 81% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionWithVersionPreparator.java index 659b6788d..79a3b1fa0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/extension/SftpExtensionWithVersionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionWithVersionPreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionWithVersion; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionWithVersion; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpExtensionWithVersionPreparator> diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpAclEntryPreparator.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpAclEntryPreparator.java index 992c07644..82031efbb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpAclEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpAclEntryPreparator.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder; import de.rub.nds.sshattacker.core.constants.SftpAceFlag; import de.rub.nds.sshattacker.core.constants.SftpAceMask; import de.rub.nds.sshattacker.core.constants.SftpAceType; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpAclEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpAclEntry; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileAttributesPreparator.java new file mode 100644 index 000000000..ea26e5f1f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileAttributesPreparator.java @@ -0,0 +1,76 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder; + +import de.rub.nds.sshattacker.core.config.Config; +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpFileAttributesPreparator extends Preparator { + + @Override + public final void prepare(SftpFileAttributes object, Chooser chooser) { + object.setFlags( + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED); + + Config config = chooser.getConfig(); + + int flags = object.getFlags().getValue(); + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE, config)) { + object.setSize(0); + } else { + object.clearSize(); + } + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID, config)) { + object.setUserId(0); + object.setGroupId(0); + } else { + object.clearUserId(); + object.clearGroupId(); + } + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS, config)) { + object.setPermissions(0); + } else { + object.clearPermissions(); + } + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME, config)) { + object.setAccessTime(0); + object.setModifyTime(0); + } else { + object.clearAccessTime(); + object.clearModifyTime(); + } + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED, config)) { + if (object.getExtendedAttributes().isEmpty()) { + object.addExtendedAttribute(new SftpFileExtendedAttribute()); + } + object.setExtendedCount(object.getExtendedAttributes().size()); + + object.getExtendedAttributes() + .forEach(extendedAttribute -> extendedAttribute.prepare(chooser)); + } else { + object.clearExtendedAttributes(); + } + } + + private static boolean isFlagSet( + int attributes, SftpFileAttributeFlag attribute, Config config) { + return (attributes & attribute.getValue()) != 0 || !config.getRespectSftpAttributesFlags(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileExtendedAttributePreparator.java similarity index 80% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileExtendedAttributePreparator.java index 6dfe184e3..a3a432ba8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileExtendedAttributePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileExtendedAttributePreparator.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileExtendedAttribute; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileNameEntryPreparator.java similarity index 61% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileNameEntryPreparator.java index 1cee96bc2..ebe8e8617 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileNameEntryPreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder; import de.rub.nds.sshattacker.core.config.Config; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; @@ -18,14 +18,7 @@ public class SftpFileNameEntryPreparator extends Preparator { public final void prepare(SftpFileNameEntry object, Chooser chooser) { Config config = chooser.getConfig(); object.setFilename("/etc/passwd", true); - - if (chooser.getSftpNegotiatedVersion(false) <= 3) { - object.setLongName( - "-rwxr-xr-x 1 ssh attacker 348911 Mar 25 14:29 passwd", true); - } else { - // As of version 4 there is no longer a longName field - object.clearLongName(); - } + object.setLongName("-rwxr-xr-x 1 ssh attacker 348911 Mar 25 14:29 passwd", true); object.getAttributes().prepare(chooser); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpIdEntryPreparator.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpIdEntryPreparator.java index 28aa1f6ed..d27ae7e4a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpIdEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpIdEntryPreparator.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpIdEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpIdEntry; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpNameEntryPreparator.java similarity index 79% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpNameEntryPreparator.java index 4eaa6ea97..044790404 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpNameEntryPreparator.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestCloseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestCloseMessagePreparator.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestCloseMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestCloseMessagePreparator.java index fdab84cf3..e59e5622e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestCloseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestCloseMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestCloseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestCloseMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestCloseMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileSetStatMessagePreparator.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileSetStatMessagePreparator.java index 8fabb5bef..302a5a373 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileSetStatMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestFileSetStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestFileSetStatMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileStatMessagePreparator.java similarity index 66% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileStatMessagePreparator.java index 769aafc22..d36cb53eb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileStatMessagePreparator.java @@ -5,11 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; -import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestFileStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestFileStatMessagePreparator @@ -22,11 +21,5 @@ public SftpRequestFileStatMessagePreparator() { @Override public void prepareRequestSpecificContents(SftpRequestFileStatMessage object, Chooser chooser) { object.setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); - - if (chooser.getSftpNegotiatedVersion(false) > 3) { - object.setFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); - } else { - object.clearFlags(); - } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestLinkStatMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestLinkStatMessagePreparator.java index 1588c0e64..f25dfc620 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestLinkStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestLinkStatMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestLinkStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestLinkStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestLinkStatMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestMakeDirMessagePreparator.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestMakeDirMessagePreparator.java index 2384be34a..91232736a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMakeDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestMakeDirMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMakeDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestMakeDirMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestMakeDirMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestMessagePreparator.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestMessagePreparator.java index 3274aff4d..b2de5d8b8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public abstract class SftpRequestMessagePreparator> diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestOpenDirMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestOpenDirMessagePreparator.java index 453e2cb99..e2aae6521 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestOpenDirMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestOpenDirMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestOpenDirMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestOpenMessagePreparator.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestOpenMessagePreparator.java index deab77b2d..65f3adb0c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestOpenMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestOpenMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestOpenMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadDirMessagePreparator.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadDirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadDirMessagePreparator.java index 2c0e8dbe0..354e16843 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadDirMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadDirMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestReadDirMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadLinkMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadLinkMessagePreparator.java index eef23a8b3..5f56dd5a8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadLinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadLinkMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadLinkMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestReadLinkMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadMessagePreparator.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadMessagePreparator.java index 6f0f20297..dfa01a322 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestReadMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestReadMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRealPathMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRealPathMessagePreparator.java index e3338793f..28ab83d68 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRealPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRealPathMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRealPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRealPathMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestRealPathMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRemoveDirMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRemoveDirMessagePreparator.java index ef7eda887..6706ad0b3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRemoveDirMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRemoveDirMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestRemoveDirMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRemoveMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRemoveMessagePreparator.java index df0cc794d..ca61c0f98 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRemoveMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRemoveMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRemoveMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestRemoveMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRenameMessagePreparator.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRenameMessagePreparator.java index 5c8ca7bfb..40fd5698e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRenameMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRenameMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestRenameMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestSetStatMessagePreparator.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestSetStatMessagePreparator.java index 12215c092..aeee366c0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestSetStatMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestSetStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestSetStatMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestStatMessagePreparator.java similarity index 64% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestStatMessagePreparator.java index 588620e1d..d4ae789f2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestStatMessagePreparator.java @@ -5,11 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; -import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestStatMessagePreparator @@ -22,11 +21,5 @@ public SftpRequestStatMessagePreparator() { @Override public void prepareRequestSpecificContents(SftpRequestStatMessage object, Chooser chooser) { object.setPath("/etc/passwd", true); - - if (chooser.getSftpNegotiatedVersion(false) > 3) { - object.setFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); - } else { - object.clearFlags(); - } } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java index 9e3ef8216..8a42c883d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSymbolicLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestSymbolicLinkMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestSymbolicLinkMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestWriteMessagePreparator.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestWriteMessagePreparator.java index ebf8acf49..23b672d22 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/request/SftpRequestWriteMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestWriteMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWriteMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWriteMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpRequestWriteMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseAttributesMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseAttributesMessagePreparator.java index 69f86286e..572991827 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseAttributesMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseAttributesMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseAttributesMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseAttributesMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseDataMessagePreparator.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseDataMessagePreparator.java index 1410a40f5..fbc6c5904 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseDataMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseDataMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseDataMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseHandleMessagePreparator.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseHandleMessagePreparator.java index b747949df..d33e47067 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseHandleMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseHandleMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseHandleMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseMessagePreparator.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseMessagePreparator.java index 27d715559..cea6046ea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public abstract class SftpResponseMessagePreparator> diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseNameMessagePreparator.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseNameMessagePreparator.java index 7fa73436f..c76facfea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseNameMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseNameMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseNameMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseStatusMessagePreparator.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseStatusMessagePreparator.java index ea1bdd9c6..ac49ca1c4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/response/SftpResponseStatusMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseStatusMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.common.preperator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.constants.SftpStatusCode; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseStatusMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseStatusMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public class SftpResponseStatusMessagePreparator diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/SftpHandshakeMessageSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/SftpHandshakeMessageSerializer.java index 9e7aea7fa..0fd467be5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpHandshakeMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/SftpHandshakeMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageSerializer; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpHandshakeMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpHandshakeMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpInitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/SftpInitMessageSerializer.java similarity index 70% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpInitMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/SftpInitMessageSerializer.java index 393f570ec..337a15940 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpInitMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/SftpInitMessageSerializer.java @@ -5,8 +5,8 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpInitMessage; public class SftpInitMessageSerializer extends SftpHandshakeMessageSerializer {} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/SftpUnknownMessageSerializer.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/SftpUnknownMessageSerializer.java index d09e8a202..580a81c14 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/SftpUnknownMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer; import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageSerializer; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpUnknownMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpVersionMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/SftpVersionMessageSerializer.java similarity index 71% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpVersionMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/SftpVersionMessageSerializer.java index ac7efd9b3..db346b6ea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/SftpVersionMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/SftpVersionMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpVersionMessage; public class SftpVersionMessageSerializer extends SftpHandshakeMessageSerializer {} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java index 58cabb6a6..bc64b585b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestCheckFileHandleMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCheckFileHandleMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java index ea4f63679..95af5ce06 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestCheckFileNameMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCheckFileNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCheckFileNameMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestCopyDataMessageSerializer.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyDataMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestCopyDataMessageSerializer.java index d215a2e51..7825aefd2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestCopyDataMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCopyDataMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyFileMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestCopyFileMessageSerializer.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyFileMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestCopyFileMessageSerializer.java index 765599a89..1ca01d173 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestCopyFileMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestCopyFileMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestCopyFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCopyFileMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import de.rub.nds.sshattacker.core.util.Converter; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExpandPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestExpandPathMessageSerializer.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExpandPathMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestExpandPathMessageSerializer.java index 761f9cacb..886daa70e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExpandPathMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestExpandPathMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExpandPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExpandPathMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestExpandPathMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestExtendedMessageSerializer.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestExtendedMessageSerializer.java index 5016ab2a5..4ce460ef4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestExtendedMessageSerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedMessage; -import de.rub.nds.sshattacker.core.data.sftp.serializer.request.SftpRequestMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExtendedMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestMessageSerializer; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestExtendedWithHandleMessageSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithHandleMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestExtendedWithHandleMessageSerializer.java index 8d76c5e02..812dffc51 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithHandleMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestExtendedWithHandleMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedWithHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExtendedWithHandleMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestExtendedWithPathMessageSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithPathMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestExtendedWithPathMessageSerializer.java index 96c53581a..e51e90eae 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestExtendedWithPathMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestExtendedWithPathMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestExtendedWithPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExtendedWithPathMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestFileStatVfsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestFileStatVfsMessageSerializer.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestFileStatVfsMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestFileStatVfsMessageSerializer.java index 60d8a05e3..f5bd6be05 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestFileStatVfsMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestFileStatVfsMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestFileStatVfsMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestFileStatVfsMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestFileSyncMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestFileSyncMessageSerializer.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestFileSyncMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestFileSyncMessageSerializer.java index d868ee703..fa7e51490 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestFileSyncMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestFileSyncMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestFileSyncMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestFileSyncMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestFileSyncMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestGetTempFolderMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestGetTempFolderMessageSerializer.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestGetTempFolderMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestGetTempFolderMessageSerializer.java index 4df0594e6..09a8b4c3d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestGetTempFolderMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestGetTempFolderMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestGetTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestGetTempFolderMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestGetTempFolderMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHardlinkMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestHardlinkMessageSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHardlinkMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestHardlinkMessageSerializer.java index 5a54e1fa7..b8e5211a5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHardlinkMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestHardlinkMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHardlinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestHardlinkMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHomeDirectoryMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestHomeDirectoryMessageSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHomeDirectoryMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestHomeDirectoryMessageSerializer.java index d0e9c56b9..54d531bc0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestHomeDirectoryMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestHomeDirectoryMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestHomeDirectoryMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestHomeDirectoryMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestLimitsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestLimitsMessageSerializer.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestLimitsMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestLimitsMessageSerializer.java index 2f9a6ef7d..b723d8842 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestLimitsMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestLimitsMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestLimitsMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestLimitsMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestLinkSetStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestLinkSetStatMessageSerializer.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestLinkSetStatMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestLinkSetStatMessageSerializer.java index e9fc1f995..92dabe105 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestLinkSetStatMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestLinkSetStatMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestLinkSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestLinkSetStatMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestLinkSetStatMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestMakeTempFolderMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestMakeTempFolderMessageSerializer.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestMakeTempFolderMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestMakeTempFolderMessageSerializer.java index bbc4813d2..eb598f452 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestMakeTempFolderMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestMakeTempFolderMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestMakeTempFolderMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestMakeTempFolderMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestMakeTempFolderMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestPosixRenameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestPosixRenameMessageSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestPosixRenameMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestPosixRenameMessageSerializer.java index 361dbb4c5..22c723cdb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestPosixRenameMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestPosixRenameMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestPosixRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestPosixRenameMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestSpaceAvailableMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestSpaceAvailableMessageSerializer.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestSpaceAvailableMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestSpaceAvailableMessageSerializer.java index 060c5b194..7817f5f7a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestSpaceAvailableMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestSpaceAvailableMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestSpaceAvailableMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestSpaceAvailableMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestStatVfsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestStatVfsMessageSerializer.java similarity index 76% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestStatVfsMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestStatVfsMessageSerializer.java index 647411b41..b4637a0d6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestStatVfsMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestStatVfsMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestStatVfsMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestStatVfsMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestTextSeekMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestTextSeekMessageSerializer.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestTextSeekMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestTextSeekMessageSerializer.java index 76fba609d..584ded343 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestTextSeekMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestTextSeekMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestTextSeekMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestTextSeekMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestUnknownMessageSerializer.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUnknownMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestUnknownMessageSerializer.java index f97a385ca..389418c68 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestUnknownMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestUnknownMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java index c9c6c08be..8cd2225d4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestUsersGroupsByIdMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestUsersGroupsByIdMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestVendorIdMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestVendorIdMessageSerializer.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestVendorIdMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestVendorIdMessageSerializer.java index 46e06b6be..3f8499e25 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_request/SftpRequestVendorIdMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_request/SftpRequestVendorIdMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.SftpRequestVendorIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestVendorIdMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java index 4ce450397..05d638cf1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseCheckFileMessageSerializer.java @@ -5,13 +5,13 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseCheckFileMessage; -import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseCheckFileMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseMessageSerializer; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseLimitsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseLimitsMessageSerializer.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseLimitsMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseLimitsMessageSerializer.java index 81b2a8fdc..d7642d20b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseLimitsMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseLimitsMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseLimitsMessage; -import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseLimitsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseMessageSerializer; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java index 722ab9878..9e1ff6926 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseSpaceAvailableMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseSpaceAvailableMessage; -import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseSpaceAvailableMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseMessageSerializer; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java index 4a1ecf4e6..c9f5f5090 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseStatVfsMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseStatVfsMessage; -import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseStatVfsMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseMessageSerializer; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUnknownMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseUnknownMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUnknownMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseUnknownMessageSerializer.java index 019f3a07b..71b326249 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUnknownMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseUnknownMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUnknownMessage; -import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseMessageSerializer; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java similarity index 84% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java index d0d8a6f60..945bfbb49 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extended_response/SftpResponseUsersGroupsByIdMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.SftpResponseUsersGroupsByIdMessage; -import de.rub.nds.sshattacker.core.data.sftp.serializer.response.SftpResponseMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseUsersGroupsByIdMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseMessageSerializer; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpAbstractExtensionSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpAbstractExtensionSerializer.java index e3beb7ac5..067ae8907 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpAbstractExtensionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpAbstractExtensionSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.protocol.common.Serializer; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionNewlineSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpExtensionNewlineSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionNewlineSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpExtensionNewlineSerializer.java index ec492c00e..aadb01c96 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionNewlineSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpExtensionNewlineSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionNewline; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionNewline; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionUnknownSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpExtensionUnknownSerializer.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionUnknownSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpExtensionUnknownSerializer.java index 49d6ec765..720cf6edb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionUnknownSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpExtensionUnknownSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionUnknown; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionUnknown; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpExtensionVendorIdSerializer.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpExtensionVendorIdSerializer.java index f19786173..9ca5c5d2c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionVendorIdSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpExtensionVendorIdSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionVendorId; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionVendorId; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionWithVersionSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpExtensionWithVersionSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionWithVersionSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpExtensionWithVersionSerializer.java index c93f34339..0cca0247f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/extension/SftpExtensionWithVersionSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/extension/SftpExtensionWithVersionSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpExtensionWithVersion; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionWithVersion; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpAclEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpAclEntrySerializer.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpAclEntrySerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpAclEntrySerializer.java index 63c9feec7..d021180de 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpAclEntrySerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpAclEntrySerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpAclEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpAclEntry; import de.rub.nds.sshattacker.core.protocol.common.Serializer; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpFileAttributesSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpFileAttributesSerializer.java new file mode 100644 index 000000000..491557ff7 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpFileAttributesSerializer.java @@ -0,0 +1,91 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder; + +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.Serializer; +import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpFileAttributesSerializer extends Serializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private static void serializeFlags(SftpFileAttributes object, SerializerStream output) { + Integer flags = object.getFlags().getValue(); + LOGGER.debug("Flags: {}", flags); + output.appendInt(flags); + } + + private static void serializeSize(SftpFileAttributes object, SerializerStream output) { + if (object.getSize() != null) { + Long size = object.getSize().getValue(); + LOGGER.debug("Size: {}", size); + output.appendLong(size); + } + } + + private static void serializeUIdGId(SftpFileAttributes object, SerializerStream output) { + if (object.getUserId() != null) { + Integer uId = object.getUserId().getValue(); + LOGGER.debug("UId: {}", uId); + output.appendInt(uId); + } + if (object.getGroupId() != null) { + Integer gId = object.getGroupId().getValue(); + LOGGER.debug("GId: {}", gId); + output.appendInt(gId); + } + } + + private static void serializePermissions(SftpFileAttributes object, SerializerStream output) { + if (object.getPermissions() != null) { + Integer permissions = object.getPermissions().getValue(); + LOGGER.debug("Permissions: {}", permissions); + output.appendInt(permissions); + } + } + + private static void serializeTimes(SftpFileAttributes object, SerializerStream output) { + // SFTP v3 + if (object.getAccessTime() != null) { + Integer aTime = object.getAccessTime().getValue(); + LOGGER.debug("ATime: {}", aTime); + output.appendInt(aTime); + } + if (object.getModifyTime() != null) { + Integer mTime = object.getModifyTime().getValue(); + LOGGER.debug("MTime: {}", mTime); + output.appendInt(mTime); + } + } + + private static void serializeExtendedAttributes( + SftpFileAttributes object, SerializerStream output) { + if (object.getExtendedCount() != null) { + Integer extendedCount = object.getExtendedCount().getValue(); + LOGGER.debug("ExtendedCount: {}", extendedCount); + output.appendInt(extendedCount); + + object.getExtendedAttributes() + .forEach( + extendedAttribute -> output.appendBytes(extendedAttribute.serialize())); + } + } + + @Override + protected final void serializeBytes(SftpFileAttributes object, SerializerStream output) { + serializeFlags(object, output); + serializeSize(object, output); + serializeUIdGId(object, output); + serializePermissions(object, output); + serializeTimes(object, output); + serializeExtendedAttributes(object, output); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileExtendedAttributeSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpFileExtendedAttributeSerializer.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileExtendedAttributeSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpFileExtendedAttributeSerializer.java index 102064150..57edb978a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileExtendedAttributeSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpFileExtendedAttributeSerializer.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileExtendedAttribute; import de.rub.nds.sshattacker.core.protocol.common.Serializer; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileNameEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpFileNameEntrySerializer.java similarity index 74% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileNameEntrySerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpFileNameEntrySerializer.java index 75544bb8c..3ab9da882 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileNameEntrySerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpFileNameEntrySerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Serializer; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; @@ -30,14 +30,12 @@ private static void serializeFilename(SftpFileNameEntry object, SerializerStream } private static void serializeLongName(SftpFileNameEntry object, SerializerStream output) { - if (object.getLongName() != null) { - Integer longNameLength = object.getLongNameLength().getValue(); - LOGGER.debug("LongName length: {}", longNameLength); - output.appendInt(longNameLength); - String longName = object.getLongName().getValue(); - LOGGER.debug("LongName: {}", () -> backslashEscapeString(longName)); - output.appendString(longName, StandardCharsets.UTF_8); - } + Integer longNameLength = object.getLongNameLength().getValue(); + LOGGER.debug("LongName length: {}", longNameLength); + output.appendInt(longNameLength); + String longName = object.getLongName().getValue(); + LOGGER.debug("LongName: {}", () -> backslashEscapeString(longName)); + output.appendString(longName, StandardCharsets.UTF_8); } private static void serializeAttributes(SftpFileNameEntry object, SerializerStream output) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpIdEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpIdEntrySerializer.java similarity index 86% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpIdEntrySerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpIdEntrySerializer.java index 5eedb46ac..93769ff82 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpIdEntrySerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpIdEntrySerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpIdEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpIdEntry; import de.rub.nds.sshattacker.core.protocol.common.Serializer; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpNameEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpNameEntrySerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpNameEntrySerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpNameEntrySerializer.java index 5a3795aeb..c38c3275e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpNameEntrySerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/holder/SftpNameEntrySerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Serializer; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestCloseMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestCloseMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestCloseMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestCloseMessageSerializer.java index 0bba19f47..a690a255b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestCloseMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestCloseMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestCloseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestCloseMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestCloseMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileSetStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestFileSetStatMessageSerializer.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileSetStatMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestFileSetStatMessageSerializer.java index 505784fbe..87df7feac 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileSetStatMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestFileSetStatMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestFileSetStatMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestFileSetStatMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestFileStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestFileStatMessageSerializer.java new file mode 100644 index 000000000..965e8508e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestFileStatMessageSerializer.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestFileStatMessage; +import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; + +public class SftpRequestFileStatMessageSerializer + extends SftpRequestWithHandleMessageSerializer { + + @Override + protected void serializeRequestWithHandleSpecificContents( + SftpRequestFileStatMessage object, SerializerStream output) {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestLinkStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestLinkStatMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestLinkStatMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestLinkStatMessageSerializer.java index b2ee051ce..cf2d68869 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestLinkStatMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestLinkStatMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestLinkStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestLinkStatMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestLinkStatMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMakeDirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestMakeDirMessageSerializer.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMakeDirMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestMakeDirMessageSerializer.java index e0e714168..05ab62e6a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMakeDirMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestMakeDirMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMakeDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestMakeDirMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestMakeDirMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestMessageSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestMessageSerializer.java index 6a427b223..64b17f956 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageSerializer; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenDirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestOpenDirMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenDirMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestOpenDirMessageSerializer.java index 4270b55dd..1afac3333 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenDirMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestOpenDirMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestOpenDirMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestOpenDirMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestOpenMessageSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestOpenMessageSerializer.java index 4ebaca1aa..e7c76ac6d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestOpenMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestOpenMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestOpenMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadDirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestReadDirMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadDirMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestReadDirMessageSerializer.java index 2476ce7ff..f41ddad7e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadDirMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestReadDirMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadDirMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestReadDirMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadLinkMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestReadLinkMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadLinkMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestReadLinkMessageSerializer.java index 0a05e84ef..d8698abe7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadLinkMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestReadLinkMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadLinkMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestReadLinkMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestReadMessageSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestReadMessageSerializer.java index 1afbf08e2..309757d37 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestReadMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestReadMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestReadMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRealPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestRealPathMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRealPathMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestRealPathMessageSerializer.java index 76c7e8b8d..1f195d50c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRealPathMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestRealPathMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRealPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRealPathMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestRealPathMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveDirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestRemoveDirMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveDirMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestRemoveDirMessageSerializer.java index 7aedabf3b..56780197d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveDirMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestRemoveDirMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRemoveDirMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestRemoveDirMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestRemoveMessageSerializer.java similarity index 78% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestRemoveMessageSerializer.java index 92eeb73e1..3875cc14e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRemoveMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestRemoveMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRemoveMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRemoveMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestRemoveMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRenameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestRenameMessageSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRenameMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestRenameMessageSerializer.java index 408b3ae6e..cd688991c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestRenameMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestRenameMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestRenameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRenameMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSetStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestSetStatMessageSerializer.java similarity index 83% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSetStatMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestSetStatMessageSerializer.java index 670f9e045..4757d3ad5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSetStatMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestSetStatMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestSetStatMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpRequestSetStatMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestStatMessageSerializer.java new file mode 100644 index 000000000..687e40216 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestStatMessageSerializer.java @@ -0,0 +1,19 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestStatMessage; +import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; + +public class SftpRequestStatMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + @Override + protected void serializeRequestWithPathSpecificContents( + SftpRequestStatMessage object, SerializerStream output) {} +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSymbolicLinkMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestSymbolicLinkMessageSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSymbolicLinkMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestSymbolicLinkMessageSerializer.java index 62f08aa56..0d64d80a7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestSymbolicLinkMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestSymbolicLinkMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestSymbolicLinkMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestSymbolicLinkMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestWithHandleMessageSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithHandleMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestWithHandleMessageSerializer.java index b9b0523f3..1b4b3b454 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithHandleMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestWithHandleMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWithHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWithHandleMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithPathMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestWithPathMessageSerializer.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithPathMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestWithPathMessageSerializer.java index 9ed2b9930..609dc30e6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWithPathMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestWithPathMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWithPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWithPathMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWriteMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestWriteMessageSerializer.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWriteMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestWriteMessageSerializer.java index f9b56ccc4..47009d72e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestWriteMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/request/SftpRequestWriteMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.request; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestWriteMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWriteMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseAttributesMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseAttributesMessageSerializer.java similarity index 82% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseAttributesMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseAttributesMessageSerializer.java index a916d4454..2155d2948 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseAttributesMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseAttributesMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.response; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.response; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseAttributesMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; public class SftpResponseAttributesMessageSerializer diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseDataMessageSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseDataMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseDataMessageSerializer.java index 2c43164b1..ca69310ec 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseDataMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.response; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.response; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseDataMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseHandleMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseHandleMessageSerializer.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseHandleMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseHandleMessageSerializer.java index df7fa1339..e65855f0b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseHandleMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseHandleMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.response; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.response; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseHandleMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseMessageSerializer.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseMessageSerializer.java index 8f48743e7..ed2950a9a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseMessageSerializer.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.response; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.response; import de.rub.nds.sshattacker.core.data.sftp.SftpMessageSerializer; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseNameMessageSerializer.java similarity index 87% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseNameMessageSerializer.java index ec92a9e8a..9d075427d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseNameMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseNameMessageSerializer.java @@ -5,9 +5,9 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.response; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.response; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseNameMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseStatusMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseStatusMessageSerializer.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseStatusMessageSerializer.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseStatusMessageSerializer.java index b791627e9..32d75753d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/response/SftpResponseStatusMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/serializer/response/SftpResponseStatusMessageSerializer.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.response; +package de.rub.nds.sshattacker.core.data.sftp.common.serializer.response; import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseStatusMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseStatusMessage; import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java deleted file mode 100644 index c47407fbf..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/message/holder/SftpFileAttributes.java +++ /dev/null @@ -1,595 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.message.holder; - -import de.rub.nds.modifiablevariable.HoldsModifiableVariable; -import de.rub.nds.modifiablevariable.ModifiableVariableFactory; -import de.rub.nds.modifiablevariable.integer.ModifiableInteger; -import de.rub.nds.modifiablevariable.longint.ModifiableLong; -import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; -import de.rub.nds.modifiablevariable.string.ModifiableString; -import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; -import de.rub.nds.sshattacker.core.constants.SftpFileType; -import de.rub.nds.sshattacker.core.data.sftp.handler.holder.SftpFileAttributesHandler; -import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; -import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -import jakarta.xml.bind.annotation.XmlElement; -import jakarta.xml.bind.annotation.XmlElementWrapper; -import jakarta.xml.bind.annotation.XmlElements; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.List; - -public class SftpFileAttributes extends ModifiableVariableHolder { - - private ModifiableInteger flags; - private ModifiableLong size; - private ModifiableInteger userId; - private ModifiableInteger groupId; - private ModifiableInteger permissions; - private ModifiableInteger accessTime; - private ModifiableInteger modifyTime; - private ModifiableInteger extendedCount; - - @HoldsModifiableVariable - @XmlElementWrapper - @XmlElements( - @XmlElement(type = SftpFileExtendedAttribute.class, name = "SftpFileExtendedAttribute")) - private ArrayList extendedAttributes = new ArrayList<>(); - - // SFTP V4 - - private ModifiableByte type; - - private ModifiableInteger ownerLength; - private ModifiableString owner; - private ModifiableInteger groupLength; - private ModifiableString group; - - // As of version 4 there are fields for nanoseconds, and the actual time fields are now int64 - // This change is done in the second draft of version 4: - // https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-04#page-10 - private ModifiableLong accessTimeLong; - private ModifiableInteger accessTimeNanoseconds; - private ModifiableLong createTimeLong; - private ModifiableInteger createTimeNanoseconds; - private ModifiableLong modifyTimeLong; - private ModifiableInteger modifyTimeNanoseconds; - - private ModifiableInteger aclLength; - private ModifiableInteger aclEntriesCount; - - @HoldsModifiableVariable - @XmlElementWrapper - @XmlElements(@XmlElement(type = SftpAclEntry.class, name = "SftpAclEntry")) - private ArrayList aclEntries = new ArrayList<>(); - - // TODO: SFTPv5 defines attrib-bits field - - public SftpFileAttributes() { - super(); - } - - public SftpFileAttributes(SftpFileAttributes other) { - super(other); - flags = other.flags != null ? other.flags.createCopy() : null; - size = other.size != null ? other.size.createCopy() : null; - userId = other.userId != null ? other.userId.createCopy() : null; - groupId = other.groupId != null ? other.groupId.createCopy() : null; - permissions = other.permissions != null ? other.permissions.createCopy() : null; - accessTime = other.accessTime != null ? other.accessTime.createCopy() : null; - modifyTime = other.modifyTime != null ? other.modifyTime.createCopy() : null; - extendedCount = other.extendedCount != null ? other.extendedCount.createCopy() : null; - if (other.extendedAttributes != null) { - extendedAttributes = new ArrayList<>(other.extendedAttributes.size()); - for (SftpFileExtendedAttribute item : other.extendedAttributes) { - extendedAttributes.add(item != null ? item.createCopy() : null); - } - } - type = other.type != null ? other.type.createCopy() : null; - ownerLength = other.ownerLength != null ? other.ownerLength.createCopy() : null; - owner = other.owner != null ? other.owner.createCopy() : null; - groupLength = other.groupLength != null ? other.groupLength.createCopy() : null; - group = other.group != null ? other.group.createCopy() : null; - accessTimeLong = other.accessTimeLong != null ? other.accessTimeLong.createCopy() : null; - accessTimeNanoseconds = - other.accessTimeNanoseconds != null - ? other.accessTimeNanoseconds.createCopy() - : null; - createTimeLong = other.createTimeLong != null ? other.createTimeLong.createCopy() : null; - createTimeNanoseconds = - other.createTimeNanoseconds != null - ? other.createTimeNanoseconds.createCopy() - : null; - modifyTimeLong = other.modifyTimeLong != null ? other.modifyTimeLong.createCopy() : null; - modifyTimeNanoseconds = - other.modifyTimeNanoseconds != null - ? other.modifyTimeNanoseconds.createCopy() - : null; - aclLength = other.aclLength != null ? other.aclLength.createCopy() : null; - aclEntriesCount = other.aclEntriesCount != null ? other.aclEntriesCount.createCopy() : null; - if (other.aclEntries != null) { - aclEntries = new ArrayList<>(other.aclEntries.size()); - for (SftpAclEntry item : other.aclEntries) { - aclEntries.add(item != null ? item.createCopy() : null); - } - } - } - - @Override - public SftpFileAttributes createCopy() { - return new SftpFileAttributes(this); - } - - public ModifiableInteger getFlags() { - return flags; - } - - public void setFlags(ModifiableInteger flags) { - this.flags = flags; - } - - public void setFlags(int flags) { - this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); - } - - public void setFlags(SftpFileAttributeFlag... attributeFlags) { - setFlags(SftpFileAttributeFlag.flagsToInt(attributeFlags)); - } - - public ModifiableLong getSize() { - return size; - } - - public void setSize(ModifiableLong size) { - this.size = size; - } - - public void setSize(long size) { - this.size = ModifiableVariableFactory.safelySetValue(this.size, size); - } - - public void clearSize() { - size = null; - } - - public ModifiableInteger getUserId() { - return userId; - } - - public void setUserId(ModifiableInteger userId) { - this.userId = userId; - } - - public void setUserId(int userId) { - this.userId = ModifiableVariableFactory.safelySetValue(this.userId, userId); - } - - public void clearUserId() { - userId = null; - } - - public ModifiableInteger getGroupId() { - return groupId; - } - - public void setGroupId(ModifiableInteger groupId) { - this.groupId = groupId; - } - - public void setGroupId(int groupId) { - this.groupId = ModifiableVariableFactory.safelySetValue(this.groupId, groupId); - } - - public void clearGroupId() { - groupId = null; - } - - public ModifiableInteger getPermissions() { - return permissions; - } - - public void setPermissions(ModifiableInteger permissions) { - this.permissions = permissions; - } - - public void setPermissions(int permissions) { - this.permissions = ModifiableVariableFactory.safelySetValue(this.permissions, permissions); - } - - public void clearPermissions() { - permissions = null; - } - - public ModifiableInteger getAccessTime() { - return accessTime; - } - - public void setAccessTime(ModifiableInteger accessTime) { - this.accessTime = accessTime; - } - - public void setAccessTime(int accessTime) { - this.accessTime = ModifiableVariableFactory.safelySetValue(this.accessTime, accessTime); - } - - public void clearAccessTime() { - accessTime = null; - } - - public ModifiableInteger getModifyTime() { - return modifyTime; - } - - public void setModifyTime(ModifiableInteger modifyTime) { - this.modifyTime = modifyTime; - } - - public void setModifyTime(int modifyTime) { - this.modifyTime = ModifiableVariableFactory.safelySetValue(this.modifyTime, modifyTime); - } - - public void clearModifyTime() { - modifyTime = null; - } - - public ModifiableInteger getExtendedCount() { - return extendedCount; - } - - public void setExtendedCount(ModifiableInteger extendedCount) { - this.extendedCount = extendedCount; - } - - public void setExtendedCount(int extendedCount) { - this.extendedCount = - ModifiableVariableFactory.safelySetValue(this.extendedCount, extendedCount); - } - - public void clearExtendedAttributes() { - extendedCount = null; - extendedAttributes = new ArrayList<>(); - } - - public List getExtendedAttributes() { - return extendedAttributes; - } - - public void setExtendedAttributes(ArrayList extendedAttributes) { - setExtendedAttributes(extendedAttributes, false); - } - - public void setExtendedAttributes( - ArrayList extendedAttributes, boolean adjustLengthField) { - if (adjustLengthField) { - setExtendedCount(extendedAttributes.size()); - } - this.extendedAttributes = extendedAttributes; - } - - public void addExtendedAttribute(SftpFileExtendedAttribute extendedAttribute) { - addExtendedAttribute(extendedAttribute, false); - } - - public void addExtendedAttribute( - SftpFileExtendedAttribute extendedAttribute, boolean adjustLengthField) { - extendedAttributes.add(extendedAttribute); - if (adjustLengthField) { - setExtendedCount(extendedAttributes.size()); - } - } - - // SFTP v4 - - public ModifiableByte getType() { - return type; - } - - public void setType(ModifiableByte type) { - this.type = type; - } - - public void setType(byte type) { - this.type = ModifiableVariableFactory.safelySetValue(this.type, type); - } - - public void setType(SftpFileType type) { - setType(type.getType()); - } - - public void clearType() { - type = null; - } - - public ModifiableInteger getOwnerLength() { - return ownerLength; - } - - public void setOwnerLength(ModifiableInteger ownerLength) { - this.ownerLength = ownerLength; - } - - public void setOwnerLength(int ownerLength) { - this.ownerLength = ModifiableVariableFactory.safelySetValue(this.ownerLength, ownerLength); - } - - public ModifiableString getOwner() { - return owner; - } - - public void setOwner(ModifiableString owner) { - setOwner(owner, false); - } - - public void setOwner(String owner) { - setOwner(owner, false); - } - - public void setOwner(ModifiableString owner, boolean adjustLengthField) { - if (adjustLengthField) { - setOwnerLength(owner.getValue().getBytes(StandardCharsets.UTF_8).length); - } - this.owner = owner; - } - - public void setOwner(String owner, boolean adjustLengthField) { - this.owner = ModifiableVariableFactory.safelySetValue(this.owner, owner); - if (adjustLengthField) { - setOwnerLength(this.owner.getValue().getBytes(StandardCharsets.UTF_8).length); - } - } - - public void clearOwner() { - ownerLength = null; - owner = null; - } - - public ModifiableInteger getGroupLength() { - return groupLength; - } - - public void setGroupLength(ModifiableInteger groupLength) { - this.groupLength = groupLength; - } - - public void setGroupLength(int groupLength) { - this.groupLength = ModifiableVariableFactory.safelySetValue(this.groupLength, groupLength); - } - - public ModifiableString getGroup() { - return group; - } - - public void setGroup(ModifiableString group) { - setGroup(group, false); - } - - public void setGroup(String group) { - setGroup(group, false); - } - - public void setGroup(ModifiableString group, boolean adjustLengthField) { - if (adjustLengthField) { - setGroupLength(group.getValue().getBytes(StandardCharsets.UTF_8).length); - } - this.group = group; - } - - public void setGroup(String group, boolean adjustLengthField) { - this.group = ModifiableVariableFactory.safelySetValue(this.group, group); - if (adjustLengthField) { - setGroupLength(this.group.getValue().getBytes(StandardCharsets.UTF_8).length); - } - } - - public void clearGroup() { - groupLength = null; - group = null; - } - - public ModifiableLong getAccessTimeLong() { - return accessTimeLong; - } - - public void setAccessTimeLong(ModifiableLong accessTimeLong) { - this.accessTimeLong = accessTimeLong; - } - - public void setAccessTimeLong(long accessTimeLong) { - this.accessTimeLong = - ModifiableVariableFactory.safelySetValue(this.accessTimeLong, accessTimeLong); - } - - public void clearAccessTimeLong() { - accessTimeLong = null; - } - - public ModifiableInteger getAccessTimeNanoseconds() { - return accessTimeNanoseconds; - } - - public void setAccessTimeNanoseconds(ModifiableInteger accessTimeNanoseconds) { - this.accessTimeNanoseconds = accessTimeNanoseconds; - } - - public void setAccessTimeNanoseconds(int accessTimeNanoseconds) { - this.accessTimeNanoseconds = - ModifiableVariableFactory.safelySetValue( - this.accessTimeNanoseconds, accessTimeNanoseconds); - } - - public void clearAccessTimeNanoseconds() { - accessTimeNanoseconds = null; - } - - public ModifiableLong getCreateTimeLong() { - return createTimeLong; - } - - public void setCreateTimeLong(ModifiableLong createTimeLong) { - this.createTimeLong = createTimeLong; - } - - public void setCreateTimeLong(long createTimeLong) { - this.createTimeLong = - ModifiableVariableFactory.safelySetValue(this.createTimeLong, createTimeLong); - } - - public void clearCreateTimeLong() { - createTimeLong = null; - } - - public ModifiableInteger getCreateTimeNanoseconds() { - return createTimeNanoseconds; - } - - public void setCreateTimeNanoseconds(ModifiableInteger createTimeNanoseconds) { - this.createTimeNanoseconds = createTimeNanoseconds; - } - - public void setCreateTimeNanoseconds(int createTimeNanoseconds) { - this.createTimeNanoseconds = - ModifiableVariableFactory.safelySetValue( - this.createTimeNanoseconds, createTimeNanoseconds); - } - - public void clearCreateTimeNanoseconds() { - createTimeNanoseconds = null; - } - - public ModifiableLong getModifyTimeLong() { - return modifyTimeLong; - } - - public void setModifyTimeLong(ModifiableLong modifyTimeLong) { - this.modifyTimeLong = modifyTimeLong; - } - - public void setModifyTimeLong(long modifyTimeLong) { - this.modifyTimeLong = - ModifiableVariableFactory.safelySetValue(this.modifyTimeLong, modifyTimeLong); - } - - public void clearModifyTimeLong() { - modifyTimeLong = null; - } - - public void clearAllLongTimes() { - createTimeLong = null; - modifyTimeLong = null; - accessTimeLong = null; - } - - public ModifiableInteger getModifyTimeNanoseconds() { - return modifyTimeNanoseconds; - } - - public void setModifyTimeNanoseconds(ModifiableInteger modifyTimeNanoseconds) { - this.modifyTimeNanoseconds = modifyTimeNanoseconds; - } - - public void setModifyTimeNanoseconds(int modifyTimeNanoseconds) { - this.modifyTimeNanoseconds = - ModifiableVariableFactory.safelySetValue( - this.modifyTimeNanoseconds, modifyTimeNanoseconds); - } - - public void clearModifyTimeNanoseconds() { - modifyTimeNanoseconds = null; - } - - public void clearAllNanoseconds() { - createTimeNanoseconds = null; - modifyTimeNanoseconds = null; - accessTimeNanoseconds = null; - } - - public ModifiableInteger getAclLength() { - return aclLength; - } - - public void clearAcl() { - aclLength = null; - aclEntriesCount = null; - aclEntries = new ArrayList<>(); - } - - public void setAclLength(ModifiableInteger aclLength) { - this.aclLength = aclLength; - } - - public void setAclLength(int aclLength) { - this.aclLength = ModifiableVariableFactory.safelySetValue(this.aclLength, aclLength); - } - - public ModifiableInteger getAclEntriesCount() { - return aclEntriesCount; - } - - public void setAclEntriesCount(ModifiableInteger aclEntriesCount) { - this.aclEntriesCount = aclEntriesCount; - } - - public void setAclEntriesCount(int aclEntriesCount) { - this.aclEntriesCount = - ModifiableVariableFactory.safelySetValue(this.aclEntriesCount, aclEntriesCount); - } - - public List getAclEntries() { - return aclEntries; - } - - public void setAclEntries(ArrayList aclEntries) { - setAclEntries(aclEntries, false); - } - - public void setAclEntries(ArrayList aclEntries, boolean adjustLengthField) { - if (adjustLengthField) { - setAclEntriesCount(aclEntries.size()); - } - this.aclEntries = aclEntries; - } - - public void addAclEntry(SftpAclEntry aclEntry) { - addAclEntry(aclEntry, false); - } - - public void addAclEntry(SftpAclEntry aclEntry, boolean adjustLengthField) { - aclEntries.add(aclEntry); - if (adjustLengthField) { - setAclEntriesCount(aclEntries.size()); - } - } - - public static final SftpFileAttributesHandler HANDLER = new SftpFileAttributesHandler(); - - public void adjustContext(SshContext context) { - HANDLER.adjustContext(context, this); - } - - public void prepare(Chooser chooser) { - SftpFileAttributesHandler.PREPARATOR.prepare(this, chooser); - } - - public byte[] serialize() { - return SftpFileAttributesHandler.SERIALIZER.serialize(this); - } - - @Override - public List getAllModifiableVariableHolders() { - List holders = super.getAllModifiableVariableHolders(); - if (extendedAttributes != null) { - holders.addAll(extendedAttributes); - } - if (aclEntries != null) { - holders.addAll(aclEntries); - } - return holders; - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileAttributesParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileAttributesParser.java deleted file mode 100644 index 587a86ff5..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/holder/SftpFileAttributesParser.java +++ /dev/null @@ -1,234 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.parser.holder; - -import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; - -import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; -import de.rub.nds.sshattacker.core.constants.SftpFileType; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; -import de.rub.nds.sshattacker.core.protocol.common.Parser; -import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -import java.nio.charset.StandardCharsets; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class SftpFileAttributesParser extends Parser { - - private static final Logger LOGGER = LogManager.getLogger(); - - private final SftpFileAttributes attributes = new SftpFileAttributes(); - private final Chooser chooser; - - public SftpFileAttributesParser(byte[] array, Chooser chooser) { - super(array); - this.chooser = chooser; - } - - public SftpFileAttributesParser(byte[] array, int startPosition, Chooser chooser) { - super(array, startPosition); - this.chooser = chooser; - } - - private void parseFlags() { - int flags = parseIntField(); - attributes.setFlags(flags); - LOGGER.debug("Flags: {}", flags); - } - - private void parseType() { - byte type = parseByteField(); - attributes.setType(type); - LOGGER.debug("Type: {}", SftpFileType.getNameByType(type)); - } - - private void parseSize() { - long size = parseLongField(); - attributes.setSize(size); - LOGGER.debug("Size: {}", size); - } - - private void parseUIdGId() { - int uId = parseIntField(); - attributes.setUserId(uId); - LOGGER.debug("UId: {}", uId); - int gId = parseIntField(); - attributes.setGroupId(gId); - LOGGER.debug("GId: {}", gId); - } - - private void parsePermissions() { - int permissions = parseIntField(); - attributes.setPermissions(permissions); - LOGGER.debug("Permissions: {}", permissions); - } - - private void parseAcModTime() { - int aTime = parseIntField(); - attributes.setAccessTime(aTime); - LOGGER.debug("ATime: {}", aTime); - int mTime = parseIntField(); - attributes.setModifyTime(mTime); - LOGGER.debug("MTime: {}", mTime); - } - - private void parseAccessTime() { - long accessTimeLong = parseLongField(); - attributes.setAccessTimeLong(accessTimeLong); - LOGGER.debug("AccessTime: {}", accessTimeLong); - } - - private void parseAccessTimeNanoseconds() { - int accessTimeNanoseconds = parseIntField(); - attributes.setAccessTimeNanoseconds(accessTimeNanoseconds); - LOGGER.debug("AccessTimeNanoseconds: {}", accessTimeNanoseconds); - } - - private void parseCreateTime() { - long createTimeLong = parseLongField(); - attributes.setCreateTimeLong(createTimeLong); - LOGGER.debug("CreateTime: {}", createTimeLong); - } - - private void parseCreateTimeNanoseconds() { - int createTimeNanoseconds = parseIntField(); - attributes.setCreateTimeNanoseconds(createTimeNanoseconds); - LOGGER.debug("CreateTimeNanoseconds: {}", createTimeNanoseconds); - } - - private void parseModifyTime() { - long modifyTimeLong = parseLongField(); - attributes.setModifyTimeLong(modifyTimeLong); - LOGGER.debug("ModifyTime: {}", modifyTimeLong); - } - - private void parseModifyTimeNanoseconds() { - int modifyTimeNanoseconds = parseIntField(); - attributes.setModifyTimeNanoseconds(modifyTimeNanoseconds); - LOGGER.debug("ModifyTimeNanoseconds: {}", modifyTimeNanoseconds); - } - - private void parseOwnerGroup() { - int ownerLength = parseIntField(); - attributes.setOwnerLength(ownerLength); - LOGGER.debug("Owner length: {}", ownerLength); - String owner = parseByteString(ownerLength, StandardCharsets.UTF_8); - attributes.setOwner(owner); - LOGGER.debug("Owner: {}", () -> backslashEscapeString(owner)); - - int groupLength = parseIntField(); - attributes.setGroupLength(groupLength); - LOGGER.debug("Group length: {}", groupLength); - String group = parseByteString(groupLength, StandardCharsets.UTF_8); - attributes.setGroup(group); - LOGGER.debug("Group: {}", () -> backslashEscapeString(group)); - } - - private void parseAcl() { - int aclLength = parseIntField(); - attributes.setAclLength(aclLength); - LOGGER.debug("AclLength: {}", aclLength); - - int aclEntriesCount = parseIntField(); - attributes.setAclEntriesCount(aclEntriesCount); - LOGGER.debug("setAclEntriesCount: {}", aclEntriesCount); - - for (int aclEntryIdx = 0, aclEntryStartPointer = getPointer(); - aclEntryIdx < aclEntriesCount; - aclEntryIdx++, aclEntryStartPointer = getPointer()) { - - SftpAclEntryParser aclEntryParser = - new SftpAclEntryParser(getArray(), aclEntryStartPointer); - - attributes.addAclEntry(aclEntryParser.parse()); - setPointer(aclEntryParser.getPointer()); - } - } - - private void parseExtendedAttributes() { - int extendedCount = parseIntField(); - attributes.setExtendedCount(extendedCount); - LOGGER.debug("ExtendedCount: {}", extendedCount); - - for (int extendedAttrIndex = 0, extendedAttrStartPointer = getPointer(); - extendedAttrIndex < extendedCount; - extendedAttrIndex++, extendedAttrStartPointer = getPointer()) { - - SftpFileExtendedAttributeParser extendedAttrParser = - new SftpFileExtendedAttributeParser(getArray(), extendedAttrStartPointer); - - attributes.addExtendedAttribute(extendedAttrParser.parse(), true); - setPointer(extendedAttrParser.getPointer()); - } - } - - @Override - public final SftpFileAttributes parse() { - parseFlags(); - - if (chooser.getSftpNegotiatedVersion(true) > 3) { - parseType(); - } - - int flags = attributes.getFlags().getValue(); - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE)) { - parseSize(); - } - if (chooser.getSftpNegotiatedVersion(true) > 3) { - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_OWNERGROUP)) { - parseOwnerGroup(); - } - } else { - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID)) { - parseUIdGId(); - } - } - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS)) { - parsePermissions(); - } - if (chooser.getSftpNegotiatedVersion(true) > 3) { - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACCESSTIME)) { - parseAccessTime(); - } - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SUBSECOND_TIMES)) { - parseAccessTimeNanoseconds(); - } - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_CREATETIME)) { - parseCreateTime(); - } - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SUBSECOND_TIMES)) { - parseCreateTimeNanoseconds(); - } - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_MODIFYTIME)) { - parseModifyTime(); - } - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SUBSECOND_TIMES)) { - parseModifyTimeNanoseconds(); - } - } else { - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME)) { - parseAcModTime(); - } - } - - if (chooser.getSftpNegotiatedVersion(true) > 3) { - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACL)) { - parseAcl(); - } - } - - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED)) { - parseExtendedAttributes(); - } - return attributes; - } - - private static boolean isFlagSet(int attributes, SftpFileAttributeFlag attribute) { - return (attributes & attribute.getValue()) != 0; - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java deleted file mode 100644 index 257dac1cf..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestFileStatMessageParser.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; - -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileStatMessage; -import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class SftpRequestFileStatMessageParser - extends SftpRequestWithHandleMessageParser { - - private static final Logger LOGGER = LogManager.getLogger(); - - private final Chooser chooser; - - public SftpRequestFileStatMessageParser(byte[] array, Chooser chooser) { - super(array); - this.chooser = chooser; - } - - public SftpRequestFileStatMessageParser(byte[] array, int startPosition, Chooser chooser) { - super(array, startPosition); - this.chooser = chooser; - } - - @Override - public SftpRequestFileStatMessage createMessage() { - return new SftpRequestFileStatMessage(); - } - - private void parseFlags() { - if (chooser.getSftpNegotiatedVersion(true) > 3) { - int flags = parseIntField(); - message.setFlags(flags); - LOGGER.debug("Flags: {}", flags); - } - } - - @Override - protected void parseRequestWithHandleSpecificContents() { - parseFlags(); - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java deleted file mode 100644 index 32159eda7..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/parser/request/SftpRequestStatMessageParser.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.parser.request; - -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestStatMessage; -import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class SftpRequestStatMessageParser - extends SftpRequestWithPathMessageParser { - - private static final Logger LOGGER = LogManager.getLogger(); - - private final Chooser chooser; - - public SftpRequestStatMessageParser(byte[] array, Chooser chooser) { - super(array); - this.chooser = chooser; - } - - public SftpRequestStatMessageParser(byte[] array, int startPosition, Chooser chooser) { - super(array, startPosition); - this.chooser = chooser; - } - - @Override - public SftpRequestStatMessage createMessage() { - return new SftpRequestStatMessage(); - } - - private void parseFlags() { - if (chooser.getSftpNegotiatedVersion(true) > 3) { - int flags = parseIntField(); - message.setFlags(flags); - LOGGER.debug("Flags: {}", flags); - } - } - - @Override - protected void parseRequestWithPathSpecificContents() { - parseFlags(); - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java deleted file mode 100644 index 9662cddd8..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/preperator/holder/SftpFileAttributesPreparator.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.preperator.holder; - -import de.rub.nds.modifiablevariable.ModifiableVariable; -import de.rub.nds.sshattacker.core.config.Config; -import de.rub.nds.sshattacker.core.constants.DataFormatConstants; -import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; -import de.rub.nds.sshattacker.core.constants.SftpFileType; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpAclEntry; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileExtendedAttribute; -import de.rub.nds.sshattacker.core.protocol.common.Preparator; -import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; - -public class SftpFileAttributesPreparator extends Preparator { - - @Override - public final void prepare(SftpFileAttributes object, Chooser chooser) { - object.setFlags( - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE, - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID, - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS, - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME, - SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED); - - Config config = chooser.getConfig(); - if (chooser.getSftpNegotiatedVersion(false) > 3) { - object.setType(SftpFileType.SSH_FILEXFER_TYPE_REGULAR); - } else { - object.clearType(); - } - - int flags = object.getFlags().getValue(); - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE, config)) { - object.setSize(0); - } else { - object.clearSize(); - } - - if (chooser.getSftpNegotiatedVersion(false) > 3) { - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_OWNERGROUP, config)) { - object.setOwner("ssh-attacker", true); - - object.setGroup("nds", true); - } else { - object.clearOwner(); - object.clearGroup(); - } - object.clearUserId(); - object.clearGroupId(); - } else { - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_UIDGID, config)) { - object.setUserId(0); - object.setGroupId(0); - } else { - object.clearUserId(); - object.clearGroupId(); - } - object.clearOwner(); - object.clearGroup(); - } - - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS, config)) { - object.setPermissions(0); - } else { - object.clearPermissions(); - } - - if (chooser.getSftpNegotiatedVersion(false) > 3) { - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACCESSTIME, config)) { - object.setAccessTimeLong(0); - } else { - object.clearAccessTimeLong(); - } - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_CREATETIME, config)) { - object.setCreateTimeLong(0); - } else { - object.clearCreateTimeLong(); - } - - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_MODIFYTIME, config)) { - object.setModifyTimeLong(0); - } else { - object.clearModifyTimeLong(); - } - object.clearAccessTime(); - object.clearModifyTime(); - } else { - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACMODTIME, config)) { - object.setAccessTime(0); - object.setModifyTime(0); - } else { - object.clearAccessTime(); - object.clearModifyTime(); - } - object.clearAllLongTimes(); - } - - if (chooser.getSftpNegotiatedVersion(false) > 3) { - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SUBSECOND_TIMES, config)) { - object.setAccessTimeNanoseconds(0); - object.setCreateTimeNanoseconds(0); - object.setModifyTimeNanoseconds(0); - } else { - object.clearAllNanoseconds(); - } - } else { - object.clearAllNanoseconds(); - } - - if (chooser.getSftpNegotiatedVersion(false) > 3) { - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACL, config)) { - if (object.getAclEntries().isEmpty()) { - object.addAclEntry(new SftpAclEntry()); - } - object.setAclEntriesCount(object.getAclEntries().size()); - object.getAclEntries().forEach(aclEntry -> aclEntry.prepare(chooser)); - object.setAclLength( - DataFormatConstants.UINT32_SIZE - + object.getAclEntries().size() - * (DataFormatConstants.UINT32_SIZE * 3 - + DataFormatConstants.STRING_SIZE_LENGTH) - + object.getAclEntries().stream() - .map(SftpAclEntry::getWhoLength) - .mapToInt(ModifiableVariable::getValue) - .sum()); - - } else { - object.clearAcl(); - } - } else { - object.clearAcl(); - } - - if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED, config)) { - if (object.getExtendedAttributes().isEmpty()) { - object.addExtendedAttribute(new SftpFileExtendedAttribute()); - } - object.setExtendedCount(object.getExtendedAttributes().size()); - - object.getExtendedAttributes() - .forEach(extendedAttribute -> extendedAttribute.prepare(chooser)); - } else { - object.clearExtendedAttributes(); - } - } - - private static boolean isFlagSet( - int attributes, SftpFileAttributeFlag attribute, Config config) { - return (attributes & attribute.getValue()) != 0 || !config.getRespectSftpAttributesFlags(); - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileAttributesSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileAttributesSerializer.java deleted file mode 100644 index 5c84ff512..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/holder/SftpFileAttributesSerializer.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.holder; - -import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; - -import de.rub.nds.sshattacker.core.constants.SftpFileType; -import de.rub.nds.sshattacker.core.data.sftp.message.holder.SftpFileAttributes; -import de.rub.nds.sshattacker.core.protocol.common.Serializer; -import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; -import java.nio.charset.StandardCharsets; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class SftpFileAttributesSerializer extends Serializer { - - private static final Logger LOGGER = LogManager.getLogger(); - - private static void serializeFlags(SftpFileAttributes object, SerializerStream output) { - Integer flags = object.getFlags().getValue(); - LOGGER.debug("Flags: {}", flags); - output.appendInt(flags); - } - - private static void serializeType(SftpFileAttributes object, SerializerStream output) { - if (object.getType() != null) { - Byte type = object.getType().getValue(); - LOGGER.debug("Type: {}", SftpFileType.getNameByType(type)); - output.appendByte(type); - } - } - - private static void serializeSize(SftpFileAttributes object, SerializerStream output) { - if (object.getSize() != null) { - Long size = object.getSize().getValue(); - LOGGER.debug("Size: {}", size); - output.appendLong(size); - } - } - - private static void serializeUIdGId(SftpFileAttributes object, SerializerStream output) { - if (object.getUserId() != null) { - Integer uId = object.getUserId().getValue(); - LOGGER.debug("UId: {}", uId); - output.appendInt(uId); - } - if (object.getGroupId() != null) { - Integer gId = object.getGroupId().getValue(); - LOGGER.debug("GId: {}", gId); - output.appendInt(gId); - } - } - - private static void serializeOwnerGroup(SftpFileAttributes object, SerializerStream output) { - if (object.getOwner() != null) { - Integer ownerLength = object.getOwnerLength().getValue(); - LOGGER.debug("Owner length: {}", ownerLength); - output.appendInt(ownerLength); - String owner = object.getOwner().getValue(); - LOGGER.debug("Owner: {}", () -> backslashEscapeString(owner)); - output.appendString(owner, StandardCharsets.UTF_8); - } - if (object.getGroup() != null) { - Integer groupLength = object.getGroupLength().getValue(); - LOGGER.debug("Group length: {}", groupLength); - output.appendInt(groupLength); - String group = object.getGroup().getValue(); - LOGGER.debug("Group: {}", () -> backslashEscapeString(group)); - output.appendString(group, StandardCharsets.UTF_8); - } - } - - private static void serializePermissions(SftpFileAttributes object, SerializerStream output) { - if (object.getPermissions() != null) { - Integer permissions = object.getPermissions().getValue(); - LOGGER.debug("Permissions: {}", permissions); - output.appendInt(permissions); - } - } - - private static void serializeTimes(SftpFileAttributes object, SerializerStream output) { - // SFTP v3 - if (object.getAccessTime() != null) { - Integer aTime = object.getAccessTime().getValue(); - LOGGER.debug("ATime: {}", aTime); - output.appendInt(aTime); - } - if (object.getModifyTime() != null) { - Integer mTime = object.getModifyTime().getValue(); - LOGGER.debug("MTime: {}", mTime); - output.appendInt(mTime); - } - - // SFTP v4 - if (object.getAccessTimeLong() != null) { - Long aTime = object.getAccessTimeLong().getValue(); - LOGGER.debug("ATime: {}", aTime); - output.appendLong(aTime); - } - if (object.getAccessTimeNanoseconds() != null) { - Integer aTimeNanoseconds = object.getAccessTimeNanoseconds().getValue(); - LOGGER.debug("ATime Nanoseconds: {}", aTimeNanoseconds); - output.appendInt(aTimeNanoseconds); - } - if (object.getCreateTimeLong() != null) { - Long cTime = object.getCreateTimeLong().getValue(); - LOGGER.debug("CTime: {}", cTime); - output.appendLong(cTime); - } - if (object.getCreateTimeNanoseconds() != null) { - Integer cTimeNanoseconds = object.getCreateTimeNanoseconds().getValue(); - LOGGER.debug("CTime Nanoseconds: {}", cTimeNanoseconds); - output.appendInt(cTimeNanoseconds); - } - if (object.getModifyTimeLong() != null) { - Long mTime = object.getModifyTimeLong().getValue(); - LOGGER.debug("MTime: {}", mTime); - output.appendLong(mTime); - } - if (object.getModifyTimeNanoseconds() != null) { - Integer mTimeNanoseconds = object.getModifyTimeNanoseconds().getValue(); - LOGGER.debug("MTime Nanoseconds: {}", mTimeNanoseconds); - output.appendInt(mTimeNanoseconds); - } - } - - private static void serializeAcl(SftpFileAttributes object, SerializerStream output) { - if (object.getAclEntriesCount() != null) { - Integer aclLength = object.getAclLength().getValue(); - LOGGER.debug("AclLength: {}", aclLength); - output.appendInt(aclLength); - - Integer aclEntriesCount = object.getAclEntriesCount().getValue(); - LOGGER.debug("AclEntriesCount: {}", aclEntriesCount); - output.appendInt(aclEntriesCount); - - object.getAclEntries().forEach(aclEntry -> output.appendBytes(aclEntry.serialize())); - } - } - - private static void serializeExtendedAttributes( - SftpFileAttributes object, SerializerStream output) { - if (object.getExtendedCount() != null) { - Integer extendedCount = object.getExtendedCount().getValue(); - LOGGER.debug("ExtendedCount: {}", extendedCount); - output.appendInt(extendedCount); - - object.getExtendedAttributes() - .forEach( - extendedAttribute -> output.appendBytes(extendedAttribute.serialize())); - } - } - - @Override - protected final void serializeBytes(SftpFileAttributes object, SerializerStream output) { - serializeFlags(object, output); - serializeType(object, output); - serializeSize(object, output); - serializeUIdGId(object, output); - serializeOwnerGroup(object, output); - serializePermissions(object, output); - serializeTimes(object, output); - serializeAcl(object, output); - serializeExtendedAttributes(object, output); - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java deleted file mode 100644 index 631da6b18..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestFileStatMessageSerializer.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; - -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestFileStatMessage; -import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class SftpRequestFileStatMessageSerializer - extends SftpRequestWithHandleMessageSerializer { - - private static final Logger LOGGER = LogManager.getLogger(); - - private static void serializeFlags(SftpRequestFileStatMessage object, SerializerStream output) { - if (object.getFlags() != null) { - Integer flags = object.getFlags().getValue(); - LOGGER.debug("Flags: {}", flags); - output.appendInt(flags); - } - } - - @Override - protected void serializeRequestWithHandleSpecificContents( - SftpRequestFileStatMessage object, SerializerStream output) { - serializeFlags(object, output); - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestStatMessageSerializer.java deleted file mode 100644 index 532a652f3..000000000 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/serializer/request/SftpRequestStatMessageSerializer.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * SSH-Attacker - A Modular Penetration Testing Framework for SSH - * - * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH - * - * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 - */ -package de.rub.nds.sshattacker.core.data.sftp.serializer.request; - -import de.rub.nds.sshattacker.core.data.sftp.message.request.SftpRequestStatMessage; -import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class SftpRequestStatMessageSerializer - extends SftpRequestWithPathMessageSerializer { - - private static final Logger LOGGER = LogManager.getLogger(); - - private static void serializeFlags(SftpRequestStatMessage object, SerializerStream output) { - if (object.getFlags() != null) { - Integer flags = object.getFlags().getValue(); - LOGGER.debug("Flags: {}", flags); - output.appendInt(flags); - } - } - - @Override - protected void serializeRequestWithPathSpecificContents( - SftpRequestStatMessage object, SerializerStream output) { - serializeFlags(object, output); - } -} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java index 4123404a7..46fc3344e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java @@ -11,8 +11,8 @@ import de.rub.nds.sshattacker.core.constants.ChannelDataType; import de.rub.nds.sshattacker.core.constants.ChannelType; import de.rub.nds.sshattacker.core.constants.RunningModeType; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpVersionMessage; import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.Channel; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java index 6fa476aec..0ed35224c 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/state/SshContext.java @@ -18,7 +18,7 @@ import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; import de.rub.nds.sshattacker.core.data.DataMessageLayer; import de.rub.nds.sshattacker.core.data.sftp.SftpManager; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.exceptions.ConfigurationException; import de.rub.nds.sshattacker.core.exceptions.TransportHandlerConnectException; import de.rub.nds.sshattacker.core.packet.cipher.keys.KeySet; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java index 5d179496a..74cc09a13 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java @@ -9,13 +9,13 @@ import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.sshattacker.core.connection.AliasedConnection; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.*; -import de.rub.nds.sshattacker.core.data.sftp.message.request.*; -import de.rub.nds.sshattacker.core.data.sftp.message.response.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.*; import de.rub.nds.sshattacker.core.protocol.authentication.message.*; import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessage; import de.rub.nds.sshattacker.core.protocol.connection.message.*; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java index 76597678c..cb7a62cb0 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java @@ -9,13 +9,13 @@ import de.rub.nds.modifiablevariable.HoldsModifiableVariable; import de.rub.nds.sshattacker.core.connection.AliasedConnection; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpUnknownMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_request.*; -import de.rub.nds.sshattacker.core.data.sftp.message.extended_response.*; -import de.rub.nds.sshattacker.core.data.sftp.message.request.*; -import de.rub.nds.sshattacker.core.data.sftp.message.response.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpUnknownMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.*; import de.rub.nds.sshattacker.core.exceptions.WorkflowExecutionException; import de.rub.nds.sshattacker.core.packet.AbstractPacket; import de.rub.nds.sshattacker.core.packet.BinaryPacket; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java index dc9bd08eb..7fb2c6a15 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java @@ -14,7 +14,7 @@ import de.rub.nds.sshattacker.core.crypto.kex.HybridKeyExchange; import de.rub.nds.sshattacker.core.crypto.kex.RsaKeyExchange; import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationPromptEntry; import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationResponseEntry; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.AbstractExtension; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java index 324682e46..34ea1f903 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java @@ -14,7 +14,7 @@ import de.rub.nds.sshattacker.core.crypto.kex.HybridKeyExchange; import de.rub.nds.sshattacker.core.crypto.kex.RsaKeyExchange; import de.rub.nds.sshattacker.core.crypto.keys.SshPublicKey; -import de.rub.nds.sshattacker.core.data.sftp.message.extension.SftpAbstractExtension; +import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpAbstractExtension; import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationPromptEntry; import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationResponseEntry; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.AbstractExtension; @@ -1085,19 +1085,13 @@ public Integer getSftpServerVersion() { /** * Retrieves the SFTP negotiated version from context. If no version was received (i.e. - * out-of-order workflow), the SFTP negotiated version from config will be returned. If - * respectSftpNegotiatedVersion is false the configured sftpNegotiatedVersion is returned. If - * forParsing is true, respectSftpNegotiatedVersion is ignored. + * out-of-order workflow), the SFTP negotiated version from config will be returned. * * @return The SFTP negotiated protocol version */ @Override public Integer getSftpNegotiatedVersion(boolean forParsing) { - if (forParsing || config.getRespectSftpNegotiatedVersion()) { - return context.getSftpNegotiatedVersion().orElse(config.getSftpNegotiatedVersion()); - } else { - return config.getSftpNegotiatedVersion(); - } + return context.getSftpNegotiatedVersion().orElse(config.getSftpNegotiatedVersion()); } // endregion diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java index 09944232d..faf417312 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/factory/WorkflowConfigurationFactory.java @@ -13,13 +13,13 @@ import de.rub.nds.sshattacker.core.constants.KeyExchangeFlowType; import de.rub.nds.sshattacker.core.constants.PacketLayerType; import de.rub.nds.sshattacker.core.constants.RunningModeType; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpInitMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.SftpVersionMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.request.*; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseAttributesMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseDataMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseHandleMessage; -import de.rub.nds.sshattacker.core.data.sftp.message.response.SftpResponseNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.*; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseDataMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseNameMessage; import de.rub.nds.sshattacker.core.exceptions.ConfigurationException; import de.rub.nds.sshattacker.core.protocol.authentication.message.*; import de.rub.nds.sshattacker.core.protocol.connection.message.*; From 1ee9cdc39dc93206093c013915f989b7602c483b Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 27 Feb 2025 16:01:48 +0100 Subject: [PATCH 166/203] See commit one before. Adds the SFTP v4 messages, I forgot to commit. --- .../v4/handler/SftpV4InitMessageHandler.java | 56 ++ .../holder/SftpV4FileAttributesHandler.java | 38 ++ .../holder/SftpV4FileNameEntryHandler.java | 38 ++ ...ftpV4RequestFileSetStatMessageHandler.java | 36 ++ .../SftpV4RequestFileStatMessageHandler.java | 36 ++ .../SftpV4RequestMakeDirMessageHandler.java | 36 ++ .../SftpV4RequestOpenMessageHandler.java | 36 ++ .../SftpV4RequestSetStatMessageHandler.java | 36 ++ .../SftpV4RequestStatMessageHandler.java | 36 ++ ...ftpV4ResponseAttributesMessageHandler.java | 36 ++ .../SftpV4ResponseNameMessageHandler.java | 36 ++ .../sftp/v4/message/SftpV4InitMessage.java | 51 ++ .../message/holder/SftpV4FileAttributes.java | 529 ++++++++++++++++++ .../message/holder/SftpV4FileNameEntry.java | 114 ++++ .../SftpV4RequestFileSetStatMessage.java | 82 +++ .../request/SftpV4RequestFileStatMessage.java | 85 +++ .../request/SftpV4RequestMakeDirMessage.java | 82 +++ .../request/SftpV4RequestOpenMessage.java | 106 ++++ .../request/SftpV4RequestSetStatMessage.java | 82 +++ .../request/SftpV4RequestStatMessage.java | 84 +++ .../SftpV4ResponseAttributesMessage.java | 77 +++ .../response/SftpV4ResponseNameMessage.java | 128 +++++ .../v4/parser/SftpV4InitMessageParser.java | 27 + .../holder/SftpV4FileAttributesParser.java | 198 +++++++ .../holder/SftpV4FileNameEntryParser.java | 54 ++ ...SftpV4RequestFileSetStatMessageParser.java | 41 ++ .../SftpV4RequestFileStatMessageParser.java | 43 ++ .../SftpV4RequestMakeDirMessageParser.java | 41 ++ .../SftpV4RequestOpenMessageParser.java | 52 ++ .../SftpV4RequestSetStatMessageParser.java | 41 ++ .../SftpV4RequestStatMessageParser.java | 43 ++ ...SftpV4ResponseAttributesMessageParser.java | 41 ++ .../SftpV4ResponseNameMessageParser.java | 55 ++ .../SftpV4InitMessagePreparator.java | 25 + .../SftpV4FileAttributesPreparator.java | 123 ++++ .../holder/SftpV4FileNameEntryPreparator.java | 23 + ...V4RequestFileSetStatMessagePreparator.java | 29 + ...ftpV4RequestFileStatMessagePreparator.java | 29 + ...SftpV4RequestMakeDirMessagePreparator.java | 29 + .../SftpV4RequestOpenMessagePreparator.java | 31 + ...SftpV4RequestSetStatMessagePreparator.java | 29 + .../SftpV4RequestStatMessagePreparator.java | 29 + ...V4ResponseAttributesMessagePreparator.java | 27 + .../SftpV4ResponseNameMessagePreparator.java | 28 + .../SftpV4InitMessageSerializer.java | 14 + .../SftpV4FileAttributesSerializer.java | 145 +++++ .../holder/SftpV4FileNameEntrySerializer.java | 41 ++ ...V4RequestFileSetStatMessageSerializer.java | 27 + ...ftpV4RequestFileStatMessageSerializer.java | 33 ++ ...SftpV4RequestMakeDirMessageSerializer.java | 27 + .../SftpV4RequestOpenMessageSerializer.java | 39 ++ ...SftpV4RequestSetStatMessageSerializer.java | 27 + .../SftpV4RequestStatMessageSerializer.java | 32 ++ ...V4ResponseAttributesMessageSerializer.java | 27 + .../SftpV4ResponseNameMessageSerializer.java | 35 ++ 55 files changed, 3325 insertions(+) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileAttributesHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileNameEntryHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileSetStatMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileStatMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestMakeDirMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestOpenMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestSetStatMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestStatMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseAttributesMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseNameMessageHandler.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/SftpV4InitMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/holder/SftpV4FileAttributes.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/holder/SftpV4FileNameEntry.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileSetStatMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileStatMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestMakeDirMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestOpenMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestSetStatMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestStatMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/response/SftpV4ResponseAttributesMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/response/SftpV4ResponseNameMessage.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/SftpV4InitMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/holder/SftpV4FileAttributesParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/holder/SftpV4FileNameEntryParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestFileSetStatMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestFileStatMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestMakeDirMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestOpenMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestSetStatMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestStatMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/response/SftpV4ResponseAttributesMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/response/SftpV4ResponseNameMessageParser.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/SftpV4InitMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileAttributesPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileSetStatMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileStatMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestMakeDirMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestOpenMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestSetStatMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestStatMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/response/SftpV4ResponseAttributesMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/response/SftpV4ResponseNameMessagePreparator.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/SftpV4InitMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/holder/SftpV4FileAttributesSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/holder/SftpV4FileNameEntrySerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestFileSetStatMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestFileStatMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestMakeDirMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestOpenMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestSetStatMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestStatMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/response/SftpV4ResponseAttributesMessageSerializer.java create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/response/SftpV4ResponseNameMessageSerializer.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java new file mode 100644 index 000000000..32ad137fa --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java @@ -0,0 +1,56 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.handler; + +import de.rub.nds.sshattacker.core.data.sftp.SftpMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.SftpV4InitMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.SftpV4InitMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.SftpV4InitMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.SftpV4InitMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpV4InitMessageHandler extends SftpMessageHandler { + + private static final Logger LOGGER = LogManager.getLogger(); + + @Override + public void adjustContext(SshContext context, SftpV4InitMessage object) { + int receivedClientVersion = object.getVersion().getValue(); + context.setSftpClientVersion(receivedClientVersion); + context.setSftpClientSupportedExtensions(object.getExtensions()); + object.getExtensions().forEach(extension -> extension.adjustContext(context)); + + // Set negotiated SFTP version based on own server version and received client version + int negotiatedVersion; + if (receivedClientVersion < context.getConfig().getSftpServerVersion()) { + negotiatedVersion = receivedClientVersion; + } else { + negotiatedVersion = context.getConfig().getSftpServerVersion(); + } + context.setSftpNegotiatedVersion(negotiatedVersion); + if (negotiatedVersion < 3 || negotiatedVersion > 4) { + LOGGER.warn("Negotiated SFTP version {} is not implemented.", negotiatedVersion); + } + } + + @Override + public SftpV4InitMessageParser getParser(byte[] array, SshContext context) { + return new SftpV4InitMessageParser(array); + } + + @Override + public SftpV4InitMessageParser getParser(byte[] array, int startPosition, SshContext context) { + return new SftpV4InitMessageParser(array, startPosition); + } + + public static final SftpV4InitMessagePreparator PREPARATOR = new SftpV4InitMessagePreparator(); + + public static final SftpV4InitMessageSerializer SERIALIZER = new SftpV4InitMessageSerializer(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileAttributesHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileAttributesHandler.java new file mode 100644 index 000000000..b9f16d4ee --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileAttributesHandler.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.handler.holder; + +import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileAttributes; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.holder.SftpV4FileAttributesParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.holder.SftpV4FileAttributesPreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.holder.SftpV4FileAttributesSerializer; +import de.rub.nds.sshattacker.core.protocol.common.Handler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpV4FileAttributesHandler implements Handler { + + @Override + public void adjustContext(SshContext context, SftpV4FileAttributes object) {} + + @Override + public SftpV4FileAttributesParser getParser(byte[] array, SshContext context) { + return new SftpV4FileAttributesParser(array); + } + + @Override + public SftpV4FileAttributesParser getParser( + byte[] array, int startPosition, SshContext context) { + return new SftpV4FileAttributesParser(array, startPosition); + } + + public static final SftpV4FileAttributesPreparator PREPARATOR = + new SftpV4FileAttributesPreparator(); + + public static final SftpV4FileAttributesSerializer SERIALIZER = + new SftpV4FileAttributesSerializer(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileNameEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileNameEntryHandler.java new file mode 100644 index 000000000..0c92974d0 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileNameEntryHandler.java @@ -0,0 +1,38 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.handler.holder; + +import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileNameEntry; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.holder.SftpV4FileNameEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.holder.SftpV4FileNameEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.holder.SftpV4FileNameEntrySerializer; +import de.rub.nds.sshattacker.core.protocol.common.Handler; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpV4FileNameEntryHandler implements Handler { + + @Override + public void adjustContext(SshContext context, SftpV4FileNameEntry object) {} + + @Override + public SftpV4FileNameEntryParser getParser(byte[] array, SshContext context) { + return new SftpV4FileNameEntryParser(array); + } + + @Override + public SftpV4FileNameEntryParser getParser( + byte[] array, int startPosition, SshContext context) { + return new SftpV4FileNameEntryParser(array, startPosition); + } + + public static final SftpV4FileNameEntryPreparator PREPARATOR = + new SftpV4FileNameEntryPreparator(); + + public static final SftpV4FileNameEntrySerializer SERIALIZER = + new SftpV4FileNameEntrySerializer(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileSetStatMessageHandler.java new file mode 100644 index 000000000..7c612a0a7 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileSetStatMessageHandler.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.handler.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestFileSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.request.SftpV4RequestFileSetStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request.SftpV4RequestFileSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request.SftpV4RequestFileSetStatMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpV4RequestFileSetStatMessageHandler + extends SftpRequestMessageHandler { + + @Override + public SftpV4RequestFileSetStatMessageParser getParser(byte[] array, SshContext context) { + return new SftpV4RequestFileSetStatMessageParser(array); + } + + @Override + public SftpV4RequestFileSetStatMessageParser getParser( + byte[] array, int startPosition, SshContext context) { + return new SftpV4RequestFileSetStatMessageParser(array, startPosition); + } + + public static final SftpV4RequestFileSetStatMessagePreparator PREPARATOR = + new SftpV4RequestFileSetStatMessagePreparator(); + + public static final SftpV4RequestFileSetStatMessageSerializer SERIALIZER = + new SftpV4RequestFileSetStatMessageSerializer(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileStatMessageHandler.java new file mode 100644 index 000000000..eed41bf9e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileStatMessageHandler.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.handler.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestFileStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.request.SftpV4RequestFileStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request.SftpV4RequestFileStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request.SftpV4RequestFileStatMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpV4RequestFileStatMessageHandler + extends SftpRequestMessageHandler { + + @Override + public SftpV4RequestFileStatMessageParser getParser(byte[] array, SshContext context) { + return new SftpV4RequestFileStatMessageParser(array); + } + + @Override + public SftpV4RequestFileStatMessageParser getParser( + byte[] array, int startPosition, SshContext context) { + return new SftpV4RequestFileStatMessageParser(array, startPosition); + } + + public static final SftpV4RequestFileStatMessagePreparator PREPARATOR = + new SftpV4RequestFileStatMessagePreparator(); + + public static final SftpV4RequestFileStatMessageSerializer SERIALIZER = + new SftpV4RequestFileStatMessageSerializer(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestMakeDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestMakeDirMessageHandler.java new file mode 100644 index 000000000..177073821 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestMakeDirMessageHandler.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.handler.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestMakeDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.request.SftpV4RequestMakeDirMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request.SftpV4RequestMakeDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request.SftpV4RequestMakeDirMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpV4RequestMakeDirMessageHandler + extends SftpRequestMessageHandler { + + @Override + public SftpV4RequestMakeDirMessageParser getParser(byte[] array, SshContext context) { + return new SftpV4RequestMakeDirMessageParser(array); + } + + @Override + public SftpV4RequestMakeDirMessageParser getParser( + byte[] array, int startPosition, SshContext context) { + return new SftpV4RequestMakeDirMessageParser(array, startPosition); + } + + public static final SftpV4RequestMakeDirMessagePreparator PREPARATOR = + new SftpV4RequestMakeDirMessagePreparator(); + + public static final SftpV4RequestMakeDirMessageSerializer SERIALIZER = + new SftpV4RequestMakeDirMessageSerializer(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestOpenMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestOpenMessageHandler.java new file mode 100644 index 000000000..8c05863c6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestOpenMessageHandler.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.handler.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.request.SftpV4RequestOpenMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request.SftpV4RequestOpenMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request.SftpV4RequestOpenMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpV4RequestOpenMessageHandler + extends SftpRequestMessageHandler { + + @Override + public SftpV4RequestOpenMessageParser getParser(byte[] array, SshContext context) { + return new SftpV4RequestOpenMessageParser(array); + } + + @Override + public SftpV4RequestOpenMessageParser getParser( + byte[] array, int startPosition, SshContext context) { + return new SftpV4RequestOpenMessageParser(array, startPosition); + } + + public static final SftpV4RequestOpenMessagePreparator PREPARATOR = + new SftpV4RequestOpenMessagePreparator(); + + public static final SftpV4RequestOpenMessageSerializer SERIALIZER = + new SftpV4RequestOpenMessageSerializer(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestSetStatMessageHandler.java new file mode 100644 index 000000000..6e4610076 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestSetStatMessageHandler.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.handler.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.request.SftpV4RequestSetStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request.SftpV4RequestSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request.SftpV4RequestSetStatMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpV4RequestSetStatMessageHandler + extends SftpRequestMessageHandler { + + @Override + public SftpV4RequestSetStatMessageParser getParser(byte[] array, SshContext context) { + return new SftpV4RequestSetStatMessageParser(array); + } + + @Override + public SftpV4RequestSetStatMessageParser getParser( + byte[] array, int startPosition, SshContext context) { + return new SftpV4RequestSetStatMessageParser(array, startPosition); + } + + public static final SftpV4RequestSetStatMessagePreparator PREPARATOR = + new SftpV4RequestSetStatMessagePreparator(); + + public static final SftpV4RequestSetStatMessageSerializer SERIALIZER = + new SftpV4RequestSetStatMessageSerializer(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestStatMessageHandler.java new file mode 100644 index 000000000..aeebd1e21 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestStatMessageHandler.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.handler.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.request.SftpV4RequestStatMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request.SftpV4RequestStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request.SftpV4RequestStatMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpV4RequestStatMessageHandler + extends SftpRequestMessageHandler { + + @Override + public SftpV4RequestStatMessageParser getParser(byte[] array, SshContext context) { + return new SftpV4RequestStatMessageParser(array); + } + + @Override + public SftpV4RequestStatMessageParser getParser( + byte[] array, int startPosition, SshContext context) { + return new SftpV4RequestStatMessageParser(array, startPosition); + } + + public static final SftpV4RequestStatMessagePreparator PREPARATOR = + new SftpV4RequestStatMessagePreparator(); + + public static final SftpV4RequestStatMessageSerializer SERIALIZER = + new SftpV4RequestStatMessageSerializer(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseAttributesMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseAttributesMessageHandler.java new file mode 100644 index 000000000..3fc4bbffc --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseAttributesMessageHandler.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.handler.response; + +import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.response.SftpV4ResponseAttributesMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.response.SftpV4ResponseAttributesMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.response.SftpV4ResponseAttributesMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpV4ResponseAttributesMessageHandler + extends SftpResponseMessageHandler { + + @Override + public SftpV4ResponseAttributesMessageParser getParser(byte[] array, SshContext context) { + return new SftpV4ResponseAttributesMessageParser(array); + } + + @Override + public SftpV4ResponseAttributesMessageParser getParser( + byte[] array, int startPosition, SshContext context) { + return new SftpV4ResponseAttributesMessageParser(array, startPosition); + } + + public static final SftpV4ResponseAttributesMessagePreparator PREPARATOR = + new SftpV4ResponseAttributesMessagePreparator(); + + public static final SftpV4ResponseAttributesMessageSerializer SERIALIZER = + new SftpV4ResponseAttributesMessageSerializer(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseNameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseNameMessageHandler.java new file mode 100644 index 000000000..6496bc2c6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseNameMessageHandler.java @@ -0,0 +1,36 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.handler.response; + +import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.response.SftpV4ResponseNameMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.response.SftpV4ResponseNameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.response.SftpV4ResponseNameMessageSerializer; +import de.rub.nds.sshattacker.core.state.SshContext; + +public class SftpV4ResponseNameMessageHandler + extends SftpResponseMessageHandler { + + @Override + public SftpV4ResponseNameMessageParser getParser(byte[] array, SshContext context) { + return new SftpV4ResponseNameMessageParser(array); + } + + @Override + public SftpV4ResponseNameMessageParser getParser( + byte[] array, int startPosition, SshContext context) { + return new SftpV4ResponseNameMessageParser(array, startPosition); + } + + public static final SftpV4ResponseNameMessagePreparator PREPARATOR = + new SftpV4ResponseNameMessagePreparator(); + + public static final SftpV4ResponseNameMessageSerializer SERIALIZER = + new SftpV4ResponseNameMessageSerializer(); +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/SftpV4InitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/SftpV4InitMessage.java new file mode 100644 index 000000000..870e7f949 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/SftpV4InitMessage.java @@ -0,0 +1,51 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.message; + +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpHandshakeMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.handler.SftpV4InitMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpV4InitMessage extends SftpHandshakeMessage { + + public SftpV4InitMessage() { + super(); + } + + public SftpV4InitMessage(SftpV4InitMessage other) { + super(other); + } + + @Override + public SftpV4InitMessage createCopy() { + return new SftpV4InitMessage(this); + } + + public static final SftpV4InitMessageHandler HANDLER = new SftpV4InitMessageHandler(); + + @Override + public SftpV4InitMessageHandler getHandler() { + return HANDLER; + } + + @Override + public void adjustContext(SshContext context) { + HANDLER.adjustContext(context, this); + } + + @Override + public void prepare(Chooser chooser) { + SftpV4InitMessageHandler.PREPARATOR.prepare(this, chooser); + } + + @Override + public byte[] serialize() { + return SftpV4InitMessageHandler.SERIALIZER.serialize(this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/holder/SftpV4FileAttributes.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/holder/SftpV4FileAttributes.java new file mode 100644 index 000000000..cd1b78b93 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/holder/SftpV4FileAttributes.java @@ -0,0 +1,529 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.message.holder; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.longint.ModifiableLong; +import de.rub.nds.modifiablevariable.singlebyte.ModifiableByte; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.constants.SftpFileType; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpAclEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.data.sftp.v4.handler.holder.SftpV4FileAttributesHandler; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElementWrapper; +import jakarta.xml.bind.annotation.XmlElements; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +/** + * In SFTP V4: userId and groupId was replaced by owner and group; accessTime and modifyTime was + * replaced by long values and integers for nanoseconds; createTime was added; Also ACL was added + */ +public class SftpV4FileAttributes extends ModifiableVariableHolder { + + private ModifiableInteger flags; + private ModifiableLong size; + private ModifiableInteger permissions; + private ModifiableInteger extendedCount; + + @HoldsModifiableVariable + @XmlElementWrapper + @XmlElements( + @XmlElement(type = SftpFileExtendedAttribute.class, name = "SftpFileExtendedAttribute")) + private ArrayList extendedAttributes = new ArrayList<>(); + + // SFTP V4 + + private ModifiableByte type; + + private ModifiableInteger ownerLength; + private ModifiableString owner; + private ModifiableInteger groupLength; + private ModifiableString group; + + // As of version 4 there are fields for nanoseconds, and the actual time fields are now int64 + // This change is done in the second draft of version 4: + // https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-04#page-10 + private ModifiableLong accessTimeLong; + private ModifiableInteger accessTimeNanoseconds; + private ModifiableLong createTimeLong; + private ModifiableInteger createTimeNanoseconds; + private ModifiableLong modifyTimeLong; + private ModifiableInteger modifyTimeNanoseconds; + + private ModifiableInteger aclLength; + private ModifiableInteger aclEntriesCount; + + @HoldsModifiableVariable + @XmlElementWrapper + @XmlElements(@XmlElement(type = SftpAclEntry.class, name = "SftpAclEntry")) + private ArrayList aclEntries = new ArrayList<>(); + + // TODO: SFTPv5 defines attrib-bits field + + public SftpV4FileAttributes() { + super(); + } + + public SftpV4FileAttributes(SftpV4FileAttributes other) { + super(other); + flags = other.flags != null ? other.flags.createCopy() : null; + size = other.size != null ? other.size.createCopy() : null; + permissions = other.permissions != null ? other.permissions.createCopy() : null; + extendedCount = other.extendedCount != null ? other.extendedCount.createCopy() : null; + if (other.extendedAttributes != null) { + extendedAttributes = new ArrayList<>(other.extendedAttributes.size()); + for (SftpFileExtendedAttribute item : other.extendedAttributes) { + extendedAttributes.add(item != null ? item.createCopy() : null); + } + } + type = other.type != null ? other.type.createCopy() : null; + ownerLength = other.ownerLength != null ? other.ownerLength.createCopy() : null; + owner = other.owner != null ? other.owner.createCopy() : null; + groupLength = other.groupLength != null ? other.groupLength.createCopy() : null; + group = other.group != null ? other.group.createCopy() : null; + accessTimeLong = other.accessTimeLong != null ? other.accessTimeLong.createCopy() : null; + accessTimeNanoseconds = + other.accessTimeNanoseconds != null + ? other.accessTimeNanoseconds.createCopy() + : null; + createTimeLong = other.createTimeLong != null ? other.createTimeLong.createCopy() : null; + createTimeNanoseconds = + other.createTimeNanoseconds != null + ? other.createTimeNanoseconds.createCopy() + : null; + modifyTimeLong = other.modifyTimeLong != null ? other.modifyTimeLong.createCopy() : null; + modifyTimeNanoseconds = + other.modifyTimeNanoseconds != null + ? other.modifyTimeNanoseconds.createCopy() + : null; + aclLength = other.aclLength != null ? other.aclLength.createCopy() : null; + aclEntriesCount = other.aclEntriesCount != null ? other.aclEntriesCount.createCopy() : null; + if (other.aclEntries != null) { + aclEntries = new ArrayList<>(other.aclEntries.size()); + for (SftpAclEntry item : other.aclEntries) { + aclEntries.add(item != null ? item.createCopy() : null); + } + } + } + + @Override + public SftpV4FileAttributes createCopy() { + return new SftpV4FileAttributes(this); + } + + public ModifiableInteger getFlags() { + return flags; + } + + public void setFlags(ModifiableInteger flags) { + this.flags = flags; + } + + public void setFlags(int flags) { + this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); + } + + public void setFlags(SftpFileAttributeFlag... attributeFlags) { + setFlags(SftpFileAttributeFlag.flagsToInt(attributeFlags)); + } + + public ModifiableLong getSize() { + return size; + } + + public void setSize(ModifiableLong size) { + this.size = size; + } + + public void setSize(long size) { + this.size = ModifiableVariableFactory.safelySetValue(this.size, size); + } + + public void clearSize() { + size = null; + } + + public ModifiableInteger getPermissions() { + return permissions; + } + + public void setPermissions(ModifiableInteger permissions) { + this.permissions = permissions; + } + + public void setPermissions(int permissions) { + this.permissions = ModifiableVariableFactory.safelySetValue(this.permissions, permissions); + } + + public void clearPermissions() { + permissions = null; + } + + public ModifiableInteger getExtendedCount() { + return extendedCount; + } + + public void setExtendedCount(ModifiableInteger extendedCount) { + this.extendedCount = extendedCount; + } + + public void setExtendedCount(int extendedCount) { + this.extendedCount = + ModifiableVariableFactory.safelySetValue(this.extendedCount, extendedCount); + } + + public void clearExtendedAttributes() { + extendedCount = null; + extendedAttributes = new ArrayList<>(); + } + + public List getExtendedAttributes() { + return extendedAttributes; + } + + public void setExtendedAttributes(ArrayList extendedAttributes) { + setExtendedAttributes(extendedAttributes, false); + } + + public void setExtendedAttributes( + ArrayList extendedAttributes, boolean adjustLengthField) { + if (adjustLengthField) { + setExtendedCount(extendedAttributes.size()); + } + this.extendedAttributes = extendedAttributes; + } + + public void addExtendedAttribute(SftpFileExtendedAttribute extendedAttribute) { + addExtendedAttribute(extendedAttribute, false); + } + + public void addExtendedAttribute( + SftpFileExtendedAttribute extendedAttribute, boolean adjustLengthField) { + extendedAttributes.add(extendedAttribute); + if (adjustLengthField) { + setExtendedCount(extendedAttributes.size()); + } + } + + // SFTP v4 + + public ModifiableByte getType() { + return type; + } + + public void setType(ModifiableByte type) { + this.type = type; + } + + public void setType(byte type) { + this.type = ModifiableVariableFactory.safelySetValue(this.type, type); + } + + public void setType(SftpFileType type) { + setType(type.getType()); + } + + public void clearType() { + type = null; + } + + public ModifiableInteger getOwnerLength() { + return ownerLength; + } + + public void setOwnerLength(ModifiableInteger ownerLength) { + this.ownerLength = ownerLength; + } + + public void setOwnerLength(int ownerLength) { + this.ownerLength = ModifiableVariableFactory.safelySetValue(this.ownerLength, ownerLength); + } + + public ModifiableString getOwner() { + return owner; + } + + public void setOwner(ModifiableString owner) { + setOwner(owner, false); + } + + public void setOwner(String owner) { + setOwner(owner, false); + } + + public void setOwner(ModifiableString owner, boolean adjustLengthField) { + if (adjustLengthField) { + setOwnerLength(owner.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.owner = owner; + } + + public void setOwner(String owner, boolean adjustLengthField) { + this.owner = ModifiableVariableFactory.safelySetValue(this.owner, owner); + if (adjustLengthField) { + setOwnerLength(this.owner.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void clearOwner() { + ownerLength = null; + owner = null; + } + + public ModifiableInteger getGroupLength() { + return groupLength; + } + + public void setGroupLength(ModifiableInteger groupLength) { + this.groupLength = groupLength; + } + + public void setGroupLength(int groupLength) { + this.groupLength = ModifiableVariableFactory.safelySetValue(this.groupLength, groupLength); + } + + public ModifiableString getGroup() { + return group; + } + + public void setGroup(ModifiableString group) { + setGroup(group, false); + } + + public void setGroup(String group) { + setGroup(group, false); + } + + public void setGroup(ModifiableString group, boolean adjustLengthField) { + if (adjustLengthField) { + setGroupLength(group.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.group = group; + } + + public void setGroup(String group, boolean adjustLengthField) { + this.group = ModifiableVariableFactory.safelySetValue(this.group, group); + if (adjustLengthField) { + setGroupLength(this.group.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public void clearGroup() { + groupLength = null; + group = null; + } + + public ModifiableLong getAccessTimeLong() { + return accessTimeLong; + } + + public void setAccessTimeLong(ModifiableLong accessTimeLong) { + this.accessTimeLong = accessTimeLong; + } + + public void setAccessTimeLong(long accessTimeLong) { + this.accessTimeLong = + ModifiableVariableFactory.safelySetValue(this.accessTimeLong, accessTimeLong); + } + + public void clearAccessTimeLong() { + accessTimeLong = null; + } + + public ModifiableInteger getAccessTimeNanoseconds() { + return accessTimeNanoseconds; + } + + public void setAccessTimeNanoseconds(ModifiableInteger accessTimeNanoseconds) { + this.accessTimeNanoseconds = accessTimeNanoseconds; + } + + public void setAccessTimeNanoseconds(int accessTimeNanoseconds) { + this.accessTimeNanoseconds = + ModifiableVariableFactory.safelySetValue( + this.accessTimeNanoseconds, accessTimeNanoseconds); + } + + public void clearAccessTimeNanoseconds() { + accessTimeNanoseconds = null; + } + + public ModifiableLong getCreateTimeLong() { + return createTimeLong; + } + + public void setCreateTimeLong(ModifiableLong createTimeLong) { + this.createTimeLong = createTimeLong; + } + + public void setCreateTimeLong(long createTimeLong) { + this.createTimeLong = + ModifiableVariableFactory.safelySetValue(this.createTimeLong, createTimeLong); + } + + public void clearCreateTimeLong() { + createTimeLong = null; + } + + public ModifiableInteger getCreateTimeNanoseconds() { + return createTimeNanoseconds; + } + + public void setCreateTimeNanoseconds(ModifiableInteger createTimeNanoseconds) { + this.createTimeNanoseconds = createTimeNanoseconds; + } + + public void setCreateTimeNanoseconds(int createTimeNanoseconds) { + this.createTimeNanoseconds = + ModifiableVariableFactory.safelySetValue( + this.createTimeNanoseconds, createTimeNanoseconds); + } + + public void clearCreateTimeNanoseconds() { + createTimeNanoseconds = null; + } + + public ModifiableLong getModifyTimeLong() { + return modifyTimeLong; + } + + public void setModifyTimeLong(ModifiableLong modifyTimeLong) { + this.modifyTimeLong = modifyTimeLong; + } + + public void setModifyTimeLong(long modifyTimeLong) { + this.modifyTimeLong = + ModifiableVariableFactory.safelySetValue(this.modifyTimeLong, modifyTimeLong); + } + + public void clearModifyTimeLong() { + modifyTimeLong = null; + } + + public void clearAllLongTimes() { + createTimeLong = null; + modifyTimeLong = null; + accessTimeLong = null; + } + + public ModifiableInteger getModifyTimeNanoseconds() { + return modifyTimeNanoseconds; + } + + public void setModifyTimeNanoseconds(ModifiableInteger modifyTimeNanoseconds) { + this.modifyTimeNanoseconds = modifyTimeNanoseconds; + } + + public void setModifyTimeNanoseconds(int modifyTimeNanoseconds) { + this.modifyTimeNanoseconds = + ModifiableVariableFactory.safelySetValue( + this.modifyTimeNanoseconds, modifyTimeNanoseconds); + } + + public void clearModifyTimeNanoseconds() { + modifyTimeNanoseconds = null; + } + + public void clearAllNanoseconds() { + createTimeNanoseconds = null; + modifyTimeNanoseconds = null; + accessTimeNanoseconds = null; + } + + public ModifiableInteger getAclLength() { + return aclLength; + } + + public void clearAcl() { + aclLength = null; + aclEntriesCount = null; + aclEntries = new ArrayList<>(); + } + + public void setAclLength(ModifiableInteger aclLength) { + this.aclLength = aclLength; + } + + public void setAclLength(int aclLength) { + this.aclLength = ModifiableVariableFactory.safelySetValue(this.aclLength, aclLength); + } + + public ModifiableInteger getAclEntriesCount() { + return aclEntriesCount; + } + + public void setAclEntriesCount(ModifiableInteger aclEntriesCount) { + this.aclEntriesCount = aclEntriesCount; + } + + public void setAclEntriesCount(int aclEntriesCount) { + this.aclEntriesCount = + ModifiableVariableFactory.safelySetValue(this.aclEntriesCount, aclEntriesCount); + } + + public List getAclEntries() { + return aclEntries; + } + + public void setAclEntries(ArrayList aclEntries) { + setAclEntries(aclEntries, false); + } + + public void setAclEntries(ArrayList aclEntries, boolean adjustLengthField) { + if (adjustLengthField) { + setAclEntriesCount(aclEntries.size()); + } + this.aclEntries = aclEntries; + } + + public void addAclEntry(SftpAclEntry aclEntry) { + addAclEntry(aclEntry, false); + } + + public void addAclEntry(SftpAclEntry aclEntry, boolean adjustLengthField) { + aclEntries.add(aclEntry); + if (adjustLengthField) { + setAclEntriesCount(aclEntries.size()); + } + } + + public static final SftpV4FileAttributesHandler HANDLER = new SftpV4FileAttributesHandler(); + + public void adjustContext(SshContext context) { + HANDLER.adjustContext(context, this); + } + + public void prepare(Chooser chooser) { + SftpV4FileAttributesHandler.PREPARATOR.prepare(this, chooser); + } + + public byte[] serialize() { + return SftpV4FileAttributesHandler.SERIALIZER.serialize(this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + if (extendedAttributes != null) { + holders.addAll(extendedAttributes); + } + if (aclEntries != null) { + holders.addAll(aclEntries); + } + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/holder/SftpV4FileNameEntry.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/holder/SftpV4FileNameEntry.java new file mode 100644 index 000000000..d5b1010cb --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/holder/SftpV4FileNameEntry.java @@ -0,0 +1,114 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.message.holder; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.modifiablevariable.string.ModifiableString; +import de.rub.nds.sshattacker.core.data.sftp.v4.handler.holder.SftpV4FileNameEntryHandler; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import java.nio.charset.StandardCharsets; +import java.util.List; + +/** LongName was removed in SFTP V4 */ +public class SftpV4FileNameEntry extends ModifiableVariableHolder { + + private ModifiableInteger filenameLength; + private ModifiableString filename; + + @HoldsModifiableVariable private SftpV4FileAttributes attributes = new SftpV4FileAttributes(); + + public SftpV4FileNameEntry() { + super(); + } + + public SftpV4FileNameEntry(SftpV4FileNameEntry other) { + super(other); + filenameLength = other.filenameLength != null ? other.filenameLength.createCopy() : null; + filename = other.filename != null ? other.filename.createCopy() : null; + attributes = other.attributes != null ? other.attributes.createCopy() : null; + } + + @Override + public SftpV4FileNameEntry createCopy() { + return new SftpV4FileNameEntry(this); + } + + public ModifiableInteger getFilenameLength() { + return filenameLength; + } + + public void setFilenameLength(ModifiableInteger filenameLength) { + this.filenameLength = filenameLength; + } + + public void setFilenameLength(int filenameLength) { + this.filenameLength = + ModifiableVariableFactory.safelySetValue(this.filenameLength, filenameLength); + } + + public ModifiableString getFilename() { + return filename; + } + + public void setFilename(ModifiableString filename) { + setFilename(filename, false); + } + + public void setFilename(String filename) { + setFilename(filename, false); + } + + public void setFilename(ModifiableString filename, boolean adjustLengthField) { + if (adjustLengthField) { + setFilenameLength(filename.getValue().getBytes(StandardCharsets.UTF_8).length); + } + this.filename = filename; + } + + public void setFilename(String filename, boolean adjustLengthField) { + this.filename = ModifiableVariableFactory.safelySetValue(this.filename, filename); + if (adjustLengthField) { + setFilenameLength(this.filename.getValue().getBytes(StandardCharsets.UTF_8).length); + } + } + + public SftpV4FileAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SftpV4FileAttributes attributes) { + this.attributes = attributes; + } + + public static final SftpV4FileNameEntryHandler HANDLER = new SftpV4FileNameEntryHandler(); + + public void adjustContext(SshContext context) { + HANDLER.adjustContext(context, this); + } + + public void prepare(Chooser chooser) { + SftpV4FileNameEntryHandler.PREPARATOR.prepare(this, chooser); + } + + public byte[] serialize() { + return SftpV4FileNameEntryHandler.SERIALIZER.serialize(this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + if (attributes != null) { + holders.addAll(attributes.getAllModifiableVariableHolders()); + } + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileSetStatMessage.java new file mode 100644 index 000000000..dab3a0365 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileSetStatMessage.java @@ -0,0 +1,82 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.message.request; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWithHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.handler.request.SftpV4RequestFileSetStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import java.util.List; + +public class SftpV4RequestFileSetStatMessage + extends SftpRequestWithHandleMessage { + + @HoldsModifiableVariable private SftpV4FileAttributes attributes = new SftpV4FileAttributes(); + + public SftpV4RequestFileSetStatMessage() { + super(); + } + + public SftpV4RequestFileSetStatMessage(SftpV4RequestFileSetStatMessage other) { + super(other); + attributes = other.attributes != null ? other.attributes.createCopy() : null; + } + + @Override + public SftpV4RequestFileSetStatMessage createCopy() { + return new SftpV4RequestFileSetStatMessage(this); + } + + public SftpV4FileAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SftpV4FileAttributes attributes) { + this.attributes = attributes; + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + if (attributes != null) { + holders.addAll(attributes.getAllModifiableVariableHolders()); + } + return holders; + } + + public static final SftpV4RequestFileSetStatMessageHandler HANDLER = + new SftpV4RequestFileSetStatMessageHandler(); + + @Override + public SftpV4RequestFileSetStatMessageHandler getHandler() { + return HANDLER; + } + + @Override + public void adjustContext(SshContext context) { + HANDLER.adjustContext(context, this); + } + + @Override + public void adjustContextAfterSent(SshContext context) { + HANDLER.adjustContextAfterMessageSent(context, this); + } + + @Override + public void prepare(Chooser chooser) { + SftpV4RequestFileSetStatMessageHandler.PREPARATOR.prepare(this, chooser); + } + + @Override + public byte[] serialize() { + return SftpV4RequestFileSetStatMessageHandler.SERIALIZER.serialize(this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileStatMessage.java new file mode 100644 index 000000000..3df4d7672 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileStatMessage.java @@ -0,0 +1,85 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.message.request; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWithHandleMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.handler.request.SftpV4RequestFileStatMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +/** In SFTP V4 flags field was added */ +public class SftpV4RequestFileStatMessage + extends SftpRequestWithHandleMessage { + + private ModifiableInteger flags; + + public SftpV4RequestFileStatMessage() { + super(); + } + + public SftpV4RequestFileStatMessage(SftpV4RequestFileStatMessage other) { + super(other); + flags = other.flags != null ? other.flags.createCopy() : null; + } + + @Override + public SftpV4RequestFileStatMessage createCopy() { + return new SftpV4RequestFileStatMessage(this); + } + + public ModifiableInteger getFlags() { + return flags; + } + + public void setFlags(ModifiableInteger flags) { + this.flags = flags; + } + + public void setFlags(int flags) { + this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); + } + + public void setFlags(SftpFileAttributeFlag... flags) { + setFlags(SftpFileAttributeFlag.flagsToInt(flags)); + } + + public void clearFlags() { + flags = null; + } + + public static final SftpV4RequestFileStatMessageHandler HANDLER = + new SftpV4RequestFileStatMessageHandler(); + + @Override + public SftpV4RequestFileStatMessageHandler getHandler() { + return HANDLER; + } + + @Override + public void adjustContext(SshContext context) { + HANDLER.adjustContext(context, this); + } + + @Override + public void adjustContextAfterSent(SshContext context) { + HANDLER.adjustContextAfterMessageSent(context, this); + } + + @Override + public void prepare(Chooser chooser) { + SftpV4RequestFileStatMessageHandler.PREPARATOR.prepare(this, chooser); + } + + @Override + public byte[] serialize() { + return SftpV4RequestFileStatMessageHandler.SERIALIZER.serialize(this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestMakeDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestMakeDirMessage.java new file mode 100644 index 000000000..4661e4678 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestMakeDirMessage.java @@ -0,0 +1,82 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.message.request; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWithPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.handler.request.SftpV4RequestMakeDirMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import java.util.List; + +public class SftpV4RequestMakeDirMessage + extends SftpRequestWithPathMessage { + + @HoldsModifiableVariable private SftpV4FileAttributes attributes = new SftpV4FileAttributes(); + + public SftpV4RequestMakeDirMessage() { + super(); + } + + public SftpV4RequestMakeDirMessage(SftpV4RequestMakeDirMessage other) { + super(other); + attributes = other.attributes != null ? other.attributes.createCopy() : null; + } + + @Override + public SftpV4RequestMakeDirMessage createCopy() { + return new SftpV4RequestMakeDirMessage(this); + } + + public SftpV4FileAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SftpV4FileAttributes attributes) { + this.attributes = attributes; + } + + public static final SftpV4RequestMakeDirMessageHandler HANDLER = + new SftpV4RequestMakeDirMessageHandler(); + + @Override + public SftpV4RequestMakeDirMessageHandler getHandler() { + return HANDLER; + } + + @Override + public void adjustContext(SshContext context) { + HANDLER.adjustContext(context, this); + } + + @Override + public void adjustContextAfterSent(SshContext context) { + HANDLER.adjustContextAfterMessageSent(context, this); + } + + @Override + public void prepare(Chooser chooser) { + SftpV4RequestMakeDirMessageHandler.PREPARATOR.prepare(this, chooser); + } + + @Override + public byte[] serialize() { + return SftpV4RequestMakeDirMessageHandler.SERIALIZER.serialize(this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + if (attributes != null) { + holders.addAll(attributes.getAllModifiableVariableHolders()); + } + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestOpenMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestOpenMessage.java new file mode 100644 index 000000000..cb485a556 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestOpenMessage.java @@ -0,0 +1,106 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.message.request; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWithPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.handler.request.SftpV4RequestOpenMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import java.util.List; + +public class SftpV4RequestOpenMessage extends SftpRequestWithPathMessage { + + // path is the filename + + // TODO: SFTPv5 adds desired-access bitmask and attribute field + private ModifiableInteger openFlags; + + @HoldsModifiableVariable private SftpV4FileAttributes attributes = new SftpV4FileAttributes(); + + public SftpV4RequestOpenMessage() { + super(); + } + + public SftpV4RequestOpenMessage(SftpV4RequestOpenMessage other) { + super(other); + openFlags = other.openFlags != null ? other.openFlags.createCopy() : null; + attributes = other.attributes != null ? other.attributes.createCopy() : null; + } + + @Override + public SftpV4RequestOpenMessage createCopy() { + return new SftpV4RequestOpenMessage(this); + } + + public ModifiableInteger getOpenFlags() { + return openFlags; + } + + public void setOpenFlags(ModifiableInteger openFlags) { + this.openFlags = openFlags; + } + + public void setOpenFlags(int openFlags) { + this.openFlags = ModifiableVariableFactory.safelySetValue(this.openFlags, openFlags); + } + + public void setOpenFlags(SftpFileOpenFlag... fileOpenFlags) { + setOpenFlags(SftpFileOpenFlag.flagsToInt(fileOpenFlags)); + } + + public SftpV4FileAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SftpV4FileAttributes attributes) { + this.attributes = attributes; + } + + public static final SftpV4RequestOpenMessageHandler HANDLER = + new SftpV4RequestOpenMessageHandler(); + + @Override + public SftpV4RequestOpenMessageHandler getHandler() { + return HANDLER; + } + + @Override + public void adjustContext(SshContext context) { + HANDLER.adjustContext(context, this); + } + + @Override + public void adjustContextAfterSent(SshContext context) { + HANDLER.adjustContextAfterMessageSent(context, this); + } + + @Override + public void prepare(Chooser chooser) { + SftpV4RequestOpenMessageHandler.PREPARATOR.prepare(this, chooser); + } + + @Override + public byte[] serialize() { + return SftpV4RequestOpenMessageHandler.SERIALIZER.serialize(this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + if (attributes != null) { + holders.addAll(attributes.getAllModifiableVariableHolders()); + } + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestSetStatMessage.java new file mode 100644 index 000000000..4cbf65cb8 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestSetStatMessage.java @@ -0,0 +1,82 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.message.request; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWithPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.handler.request.SftpV4RequestSetStatMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import java.util.List; + +public class SftpV4RequestSetStatMessage + extends SftpRequestWithPathMessage { + + @HoldsModifiableVariable private SftpV4FileAttributes attributes = new SftpV4FileAttributes(); + + public SftpV4RequestSetStatMessage() { + super(); + } + + public SftpV4RequestSetStatMessage(SftpV4RequestSetStatMessage other) { + super(other); + attributes = other.attributes != null ? other.attributes.createCopy() : null; + } + + @Override + public SftpV4RequestSetStatMessage createCopy() { + return new SftpV4RequestSetStatMessage(this); + } + + public SftpV4FileAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SftpV4FileAttributes attributes) { + this.attributes = attributes; + } + + public static final SftpV4RequestSetStatMessageHandler HANDLER = + new SftpV4RequestSetStatMessageHandler(); + + @Override + public SftpV4RequestSetStatMessageHandler getHandler() { + return HANDLER; + } + + @Override + public void adjustContext(SshContext context) { + HANDLER.adjustContext(context, this); + } + + @Override + public void adjustContextAfterSent(SshContext context) { + HANDLER.adjustContextAfterMessageSent(context, this); + } + + @Override + public void prepare(Chooser chooser) { + SftpV4RequestSetStatMessageHandler.PREPARATOR.prepare(this, chooser); + } + + @Override + public byte[] serialize() { + return SftpV4RequestSetStatMessageHandler.SERIALIZER.serialize(this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + if (attributes != null) { + holders.addAll(attributes.getAllModifiableVariableHolders()); + } + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestStatMessage.java new file mode 100644 index 000000000..be46eb186 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestStatMessage.java @@ -0,0 +1,84 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.message.request; + +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWithPathMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.handler.request.SftpV4RequestStatMessageHandler; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +/** In SFTP V4 flags field was added */ +public class SftpV4RequestStatMessage extends SftpRequestWithPathMessage { + + private ModifiableInteger flags; + + public SftpV4RequestStatMessage() { + super(); + } + + public SftpV4RequestStatMessage(SftpV4RequestStatMessage other) { + super(other); + flags = other.flags != null ? other.flags.createCopy() : null; + } + + @Override + public SftpV4RequestStatMessage createCopy() { + return new SftpV4RequestStatMessage(this); + } + + public ModifiableInteger getFlags() { + return flags; + } + + public void setFlags(ModifiableInteger flags) { + this.flags = flags; + } + + public void setFlags(int flags) { + this.flags = ModifiableVariableFactory.safelySetValue(this.flags, flags); + } + + public void setFlags(SftpFileAttributeFlag... flags) { + setFlags(SftpFileAttributeFlag.flagsToInt(flags)); + } + + public void clearFlags() { + flags = null; + } + + public static final SftpV4RequestStatMessageHandler HANDLER = + new SftpV4RequestStatMessageHandler(); + + @Override + public SftpV4RequestStatMessageHandler getHandler() { + return HANDLER; + } + + @Override + public void adjustContext(SshContext context) { + HANDLER.adjustContext(context, this); + } + + @Override + public void adjustContextAfterSent(SshContext context) { + HANDLER.adjustContextAfterMessageSent(context, this); + } + + @Override + public void prepare(Chooser chooser) { + SftpV4RequestStatMessageHandler.PREPARATOR.prepare(this, chooser); + } + + @Override + public byte[] serialize() { + return SftpV4RequestStatMessageHandler.SERIALIZER.serialize(this); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/response/SftpV4ResponseAttributesMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/response/SftpV4ResponseAttributesMessage.java new file mode 100644 index 000000000..91551839c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/response/SftpV4ResponseAttributesMessage.java @@ -0,0 +1,77 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.message.response; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.handler.response.SftpV4ResponseAttributesMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import java.util.List; + +public class SftpV4ResponseAttributesMessage + extends SftpResponseMessage { + + @HoldsModifiableVariable private SftpV4FileAttributes attributes = new SftpV4FileAttributes(); + + public SftpV4ResponseAttributesMessage() { + super(); + } + + public SftpV4ResponseAttributesMessage(SftpV4ResponseAttributesMessage other) { + super(other); + attributes = other.attributes != null ? other.attributes.createCopy() : null; + } + + @Override + public SftpV4ResponseAttributesMessage createCopy() { + return new SftpV4ResponseAttributesMessage(this); + } + + public SftpV4FileAttributes getAttributes() { + return attributes; + } + + public void setAttributes(SftpV4FileAttributes attributes) { + this.attributes = attributes; + } + + public static final SftpV4ResponseAttributesMessageHandler HANDLER = + new SftpV4ResponseAttributesMessageHandler(); + + @Override + public SftpV4ResponseAttributesMessageHandler getHandler() { + return HANDLER; + } + + @Override + public void adjustContext(SshContext context) { + HANDLER.adjustContext(context, this); + } + + @Override + public void prepare(Chooser chooser) { + SftpV4ResponseAttributesMessageHandler.PREPARATOR.prepare(this, chooser); + } + + @Override + public byte[] serialize() { + return SftpV4ResponseAttributesMessageHandler.SERIALIZER.serialize(this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + if (attributes != null) { + holders.addAll(attributes.getAllModifiableVariableHolders()); + } + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/response/SftpV4ResponseNameMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/response/SftpV4ResponseNameMessage.java new file mode 100644 index 000000000..75613b8af --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/response/SftpV4ResponseNameMessage.java @@ -0,0 +1,128 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.message.response; + +import de.rub.nds.modifiablevariable.HoldsModifiableVariable; +import de.rub.nds.modifiablevariable.ModifiableVariableFactory; +import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.handler.response.SftpV4ResponseNameMessageHandler; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileNameEntry; +import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElementWrapper; +import jakarta.xml.bind.annotation.XmlElements; +import java.util.ArrayList; +import java.util.List; + +public class SftpV4ResponseNameMessage extends SftpResponseMessage { + + private ModifiableInteger nameEntriesCount; + + @HoldsModifiableVariable + @XmlElementWrapper + @XmlElements(@XmlElement(type = SftpV4FileNameEntry.class, name = "SftpResponseNameEntry")) + private ArrayList nameEntries = new ArrayList<>(); + + public SftpV4ResponseNameMessage() { + super(); + } + + public SftpV4ResponseNameMessage(SftpV4ResponseNameMessage other) { + super(other); + nameEntriesCount = + other.nameEntriesCount != null ? other.nameEntriesCount.createCopy() : null; + if (other.nameEntries != null) { + nameEntries = new ArrayList<>(other.nameEntries.size()); + for (SftpV4FileNameEntry item : other.nameEntries) { + nameEntries.add(item != null ? item.createCopy() : null); + } + } + } + + @Override + public SftpV4ResponseNameMessage createCopy() { + return new SftpV4ResponseNameMessage(this); + } + + public ModifiableInteger getNameEntriesCount() { + return nameEntriesCount; + } + + public void setNameEntriesCount(ModifiableInteger nameEntriesCount) { + this.nameEntriesCount = nameEntriesCount; + } + + public void setNameEntriesCount(int nameEntriesCount) { + this.nameEntriesCount = + ModifiableVariableFactory.safelySetValue(this.nameEntriesCount, nameEntriesCount); + } + + public List getNameEntries() { + return nameEntries; + } + + public void setNameEntries(ArrayList nameEntries) { + setNameEntries(nameEntries, false); + } + + public void setNameEntries( + ArrayList nameEntries, boolean adjustLengthField) { + if (adjustLengthField) { + setNameEntriesCount(nameEntries.size()); + } + this.nameEntries = nameEntries; + } + + public void addNameEntry(SftpV4FileNameEntry nameEntry) { + addNameEntry(nameEntry, false); + } + + public void addNameEntry(SftpV4FileNameEntry nameEntry, boolean adjustLengthField) { + nameEntries.add(nameEntry); + if (adjustLengthField) { + setNameEntriesCount(nameEntries.size()); + } + } + + public static final SftpV4ResponseNameMessageHandler HANDLER = + new SftpV4ResponseNameMessageHandler(); + + @Override + public SftpV4ResponseNameMessageHandler getHandler() { + return HANDLER; + } + + @Override + public void adjustContext(SshContext context) { + HANDLER.adjustContext(context, this); + } + + @Override + public void prepare(Chooser chooser) { + SftpV4ResponseNameMessageHandler.PREPARATOR.prepare(this, chooser); + } + + @Override + public byte[] serialize() { + return SftpV4ResponseNameMessageHandler.SERIALIZER.serialize(this); + } + + @Override + public List getAllModifiableVariableHolders() { + List holders = super.getAllModifiableVariableHolders(); + if (nameEntries != null) { + for (SftpV4FileNameEntry nameEntry : nameEntries) { + holders.addAll(nameEntry.getAllModifiableVariableHolders()); + } + } + return holders; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/SftpV4InitMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/SftpV4InitMessageParser.java new file mode 100644 index 000000000..2538289c9 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/SftpV4InitMessageParser.java @@ -0,0 +1,27 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.parser; + +import de.rub.nds.sshattacker.core.data.sftp.common.parser.SftpHandshakeMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.SftpV4InitMessage; + +public class SftpV4InitMessageParser extends SftpHandshakeMessageParser { + + public SftpV4InitMessageParser(byte[] array) { + super(array); + } + + public SftpV4InitMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpV4InitMessage createMessage() { + return new SftpV4InitMessage(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/holder/SftpV4FileAttributesParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/holder/SftpV4FileAttributesParser.java new file mode 100644 index 000000000..da22a1c7c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/holder/SftpV4FileAttributesParser.java @@ -0,0 +1,198 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.parser.holder; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.constants.SftpFileType; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpAclEntryParser; +import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpFileExtendedAttributeParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.Parser; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpV4FileAttributesParser extends Parser { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpV4FileAttributes attributes = new SftpV4FileAttributes(); + + public SftpV4FileAttributesParser(byte[] array) { + super(array); + } + + public SftpV4FileAttributesParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseFlags() { + int flags = parseIntField(); + attributes.setFlags(flags); + LOGGER.debug("Flags: {}", flags); + } + + private void parseType() { + byte type = parseByteField(); + attributes.setType(type); + LOGGER.debug("Type: {}", SftpFileType.getNameByType(type)); + } + + private void parseSize() { + long size = parseLongField(); + attributes.setSize(size); + LOGGER.debug("Size: {}", size); + } + + private void parsePermissions() { + int permissions = parseIntField(); + attributes.setPermissions(permissions); + LOGGER.debug("Permissions: {}", permissions); + } + + private void parseAccessTime() { + long accessTimeLong = parseLongField(); + attributes.setAccessTimeLong(accessTimeLong); + LOGGER.debug("AccessTime: {}", accessTimeLong); + } + + private void parseAccessTimeNanoseconds() { + int accessTimeNanoseconds = parseIntField(); + attributes.setAccessTimeNanoseconds(accessTimeNanoseconds); + LOGGER.debug("AccessTimeNanoseconds: {}", accessTimeNanoseconds); + } + + private void parseCreateTime() { + long createTimeLong = parseLongField(); + attributes.setCreateTimeLong(createTimeLong); + LOGGER.debug("CreateTime: {}", createTimeLong); + } + + private void parseCreateTimeNanoseconds() { + int createTimeNanoseconds = parseIntField(); + attributes.setCreateTimeNanoseconds(createTimeNanoseconds); + LOGGER.debug("CreateTimeNanoseconds: {}", createTimeNanoseconds); + } + + private void parseModifyTime() { + long modifyTimeLong = parseLongField(); + attributes.setModifyTimeLong(modifyTimeLong); + LOGGER.debug("ModifyTime: {}", modifyTimeLong); + } + + private void parseModifyTimeNanoseconds() { + int modifyTimeNanoseconds = parseIntField(); + attributes.setModifyTimeNanoseconds(modifyTimeNanoseconds); + LOGGER.debug("ModifyTimeNanoseconds: {}", modifyTimeNanoseconds); + } + + private void parseOwnerGroup() { + int ownerLength = parseIntField(); + attributes.setOwnerLength(ownerLength); + LOGGER.debug("Owner length: {}", ownerLength); + String owner = parseByteString(ownerLength, StandardCharsets.UTF_8); + attributes.setOwner(owner); + LOGGER.debug("Owner: {}", () -> backslashEscapeString(owner)); + + int groupLength = parseIntField(); + attributes.setGroupLength(groupLength); + LOGGER.debug("Group length: {}", groupLength); + String group = parseByteString(groupLength, StandardCharsets.UTF_8); + attributes.setGroup(group); + LOGGER.debug("Group: {}", () -> backslashEscapeString(group)); + } + + private void parseAcl() { + int aclLength = parseIntField(); + attributes.setAclLength(aclLength); + LOGGER.debug("AclLength: {}", aclLength); + + int aclEntriesCount = parseIntField(); + attributes.setAclEntriesCount(aclEntriesCount); + LOGGER.debug("setAclEntriesCount: {}", aclEntriesCount); + + for (int aclEntryIdx = 0, aclEntryStartPointer = getPointer(); + aclEntryIdx < aclEntriesCount; + aclEntryIdx++, aclEntryStartPointer = getPointer()) { + + SftpAclEntryParser aclEntryParser = + new SftpAclEntryParser(getArray(), aclEntryStartPointer); + + attributes.addAclEntry(aclEntryParser.parse()); + setPointer(aclEntryParser.getPointer()); + } + } + + private void parseExtendedAttributes() { + int extendedCount = parseIntField(); + attributes.setExtendedCount(extendedCount); + LOGGER.debug("ExtendedCount: {}", extendedCount); + + for (int extendedAttrIndex = 0, extendedAttrStartPointer = getPointer(); + extendedAttrIndex < extendedCount; + extendedAttrIndex++, extendedAttrStartPointer = getPointer()) { + + SftpFileExtendedAttributeParser extendedAttrParser = + new SftpFileExtendedAttributeParser(getArray(), extendedAttrStartPointer); + + attributes.addExtendedAttribute(extendedAttrParser.parse(), true); + setPointer(extendedAttrParser.getPointer()); + } + } + + @Override + public final SftpV4FileAttributes parse() { + parseFlags(); + + parseType(); + + int flags = attributes.getFlags().getValue(); + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE)) { + parseSize(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_OWNERGROUP)) { + parseOwnerGroup(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS)) { + parsePermissions(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACCESSTIME)) { + parseAccessTime(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SUBSECOND_TIMES)) { + parseAccessTimeNanoseconds(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_CREATETIME)) { + parseCreateTime(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SUBSECOND_TIMES)) { + parseCreateTimeNanoseconds(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_MODIFYTIME)) { + parseModifyTime(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SUBSECOND_TIMES)) { + parseModifyTimeNanoseconds(); + } + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACL)) { + parseAcl(); + } + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED)) { + parseExtendedAttributes(); + } + return attributes; + } + + private static boolean isFlagSet(int attributes, SftpFileAttributeFlag attribute) { + return (attributes & attribute.getValue()) != 0; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/holder/SftpV4FileNameEntryParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/holder/SftpV4FileNameEntryParser.java new file mode 100644 index 000000000..a609c5523 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/holder/SftpV4FileNameEntryParser.java @@ -0,0 +1,54 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.parser.holder; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileNameEntry; +import de.rub.nds.sshattacker.core.protocol.common.Parser; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpV4FileNameEntryParser extends Parser { + + private static final Logger LOGGER = LogManager.getLogger(); + + private final SftpV4FileNameEntry nameEntry = new SftpV4FileNameEntry(); + + public SftpV4FileNameEntryParser(byte[] array) { + super(array); + } + + public SftpV4FileNameEntryParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + private void parseFilename() { + int filenameLength = parseIntField(); + nameEntry.setFilenameLength(filenameLength); + LOGGER.debug("Filename length: {}", filenameLength); + String filename = parseByteString(filenameLength, StandardCharsets.UTF_8); + nameEntry.setFilename(filename); + LOGGER.debug("Filename: {}", () -> backslashEscapeString(filename)); + } + + private void parseAttributes() { + SftpV4FileAttributesParser attributesParser = + new SftpV4FileAttributesParser(getArray(), getPointer()); + nameEntry.setAttributes(attributesParser.parse()); + setPointer(attributesParser.getPointer()); + } + + @Override + public final SftpV4FileNameEntry parse() { + parseFilename(); + parseAttributes(); + return nameEntry; + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestFileSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestFileSetStatMessageParser.java new file mode 100644 index 000000000..18925d2fa --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestFileSetStatMessageParser.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.parser.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestWithHandleMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestFileSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.holder.SftpV4FileAttributesParser; + +public class SftpV4RequestFileSetStatMessageParser + extends SftpRequestWithHandleMessageParser { + + public SftpV4RequestFileSetStatMessageParser(byte[] array) { + super(array); + } + + public SftpV4RequestFileSetStatMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpV4RequestFileSetStatMessage createMessage() { + return new SftpV4RequestFileSetStatMessage(); + } + + private void parseAttributes() { + SftpV4FileAttributesParser attributesParser = + new SftpV4FileAttributesParser(getArray(), getPointer()); + message.setAttributes(attributesParser.parse()); + setPointer(attributesParser.getPointer()); + } + + @Override + protected void parseRequestWithHandleSpecificContents() { + parseAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestFileStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestFileStatMessageParser.java new file mode 100644 index 000000000..b0d95a3da --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestFileStatMessageParser.java @@ -0,0 +1,43 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.parser.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestWithHandleMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestFileStatMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpV4RequestFileStatMessageParser + extends SftpRequestWithHandleMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpV4RequestFileStatMessageParser(byte[] array) { + super(array); + } + + public SftpV4RequestFileStatMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpV4RequestFileStatMessage createMessage() { + return new SftpV4RequestFileStatMessage(); + } + + private void parseFlags() { + int flags = parseIntField(); + message.setFlags(flags); + LOGGER.debug("Flags: {}", flags); + } + + @Override + protected void parseRequestWithHandleSpecificContents() { + parseFlags(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestMakeDirMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestMakeDirMessageParser.java new file mode 100644 index 000000000..2f58727b4 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestMakeDirMessageParser.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.parser.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestWithPathMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestMakeDirMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.holder.SftpV4FileAttributesParser; + +public class SftpV4RequestMakeDirMessageParser + extends SftpRequestWithPathMessageParser { + + public SftpV4RequestMakeDirMessageParser(byte[] array) { + super(array); + } + + public SftpV4RequestMakeDirMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpV4RequestMakeDirMessage createMessage() { + return new SftpV4RequestMakeDirMessage(); + } + + private void parseAttributes() { + SftpV4FileAttributesParser attributesParser = + new SftpV4FileAttributesParser(getArray(), getPointer()); + message.setAttributes(attributesParser.parse()); + setPointer(attributesParser.getPointer()); + } + + @Override + protected void parseRequestWithPathSpecificContents() { + parseAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestOpenMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestOpenMessageParser.java new file mode 100644 index 000000000..16eb046c7 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestOpenMessageParser.java @@ -0,0 +1,52 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.parser.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestWithPathMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestOpenMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.holder.SftpV4FileAttributesParser; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpV4RequestOpenMessageParser + extends SftpRequestWithPathMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpV4RequestOpenMessageParser(byte[] array) { + super(array); + } + + public SftpV4RequestOpenMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpV4RequestOpenMessage createMessage() { + return new SftpV4RequestOpenMessage(); + } + + private void parseOpenFlags() { + int openFlags = parseIntField(); + message.setOpenFlags(openFlags); + LOGGER.debug("OpenFlags: {}", openFlags); + } + + private void parseAttributes() { + SftpV4FileAttributesParser attributesParser = + new SftpV4FileAttributesParser(getArray(), getPointer()); + message.setAttributes(attributesParser.parse()); + setPointer(attributesParser.getPointer()); + } + + @Override + protected void parseRequestWithPathSpecificContents() { + parseOpenFlags(); + parseAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestSetStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestSetStatMessageParser.java new file mode 100644 index 000000000..2c42de12a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestSetStatMessageParser.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.parser.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestWithPathMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestSetStatMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.holder.SftpV4FileAttributesParser; + +public class SftpV4RequestSetStatMessageParser + extends SftpRequestWithPathMessageParser { + + public SftpV4RequestSetStatMessageParser(byte[] array) { + super(array); + } + + public SftpV4RequestSetStatMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpV4RequestSetStatMessage createMessage() { + return new SftpV4RequestSetStatMessage(); + } + + private void parseAttributes() { + SftpV4FileAttributesParser attributesParser = + new SftpV4FileAttributesParser(getArray(), getPointer()); + message.setAttributes(attributesParser.parse()); + setPointer(attributesParser.getPointer()); + } + + @Override + protected void parseRequestWithPathSpecificContents() { + parseAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestStatMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestStatMessageParser.java new file mode 100644 index 000000000..9e0522462 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/request/SftpV4RequestStatMessageParser.java @@ -0,0 +1,43 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.parser.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestWithPathMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestStatMessage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpV4RequestStatMessageParser + extends SftpRequestWithPathMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpV4RequestStatMessageParser(byte[] array) { + super(array); + } + + public SftpV4RequestStatMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpV4RequestStatMessage createMessage() { + return new SftpV4RequestStatMessage(); + } + + private void parseFlags() { + int flags = parseIntField(); + message.setFlags(flags); + LOGGER.debug("Flags: {}", flags); + } + + @Override + protected void parseRequestWithPathSpecificContents() { + parseFlags(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/response/SftpV4ResponseAttributesMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/response/SftpV4ResponseAttributesMessageParser.java new file mode 100644 index 000000000..47b4a0361 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/response/SftpV4ResponseAttributesMessageParser.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.parser.response; + +import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.holder.SftpV4FileAttributesParser; + +public class SftpV4ResponseAttributesMessageParser + extends SftpResponseMessageParser { + + public SftpV4ResponseAttributesMessageParser(byte[] array) { + super(array); + } + + public SftpV4ResponseAttributesMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpV4ResponseAttributesMessage createMessage() { + return new SftpV4ResponseAttributesMessage(); + } + + private void parseAttributes() { + SftpV4FileAttributesParser attributesParser = + new SftpV4FileAttributesParser(getArray(), getPointer()); + message.setAttributes(attributesParser.parse()); + setPointer(attributesParser.getPointer()); + } + + @Override + protected void parseResponseSpecificContents() { + parseAttributes(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/response/SftpV4ResponseNameMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/response/SftpV4ResponseNameMessageParser.java new file mode 100644 index 000000000..610b75e1e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/response/SftpV4ResponseNameMessageParser.java @@ -0,0 +1,55 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.parser.response; + +import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseMessageParser; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseNameMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.parser.holder.SftpV4FileNameEntryParser; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpV4ResponseNameMessageParser + extends SftpResponseMessageParser { + + private static final Logger LOGGER = LogManager.getLogger(); + + public SftpV4ResponseNameMessageParser(byte[] array) { + super(array); + } + + public SftpV4ResponseNameMessageParser(byte[] array, int startPosition) { + super(array, startPosition); + } + + @Override + public SftpV4ResponseNameMessage createMessage() { + return new SftpV4ResponseNameMessage(); + } + + private void parseNameEntries() { + int countNameEntries = parseIntField(); + message.setNameEntriesCount(countNameEntries); + LOGGER.debug("CountNameEntries: {}", countNameEntries); + + for (int nameEntryIndex = 0, nameEntryStartPointer = getPointer(); + nameEntryIndex < message.getNameEntriesCount().getValue(); + nameEntryIndex++, nameEntryStartPointer = getPointer()) { + + SftpV4FileNameEntryParser nameEntryParser = + new SftpV4FileNameEntryParser(getArray(), nameEntryStartPointer); + + message.addNameEntry(nameEntryParser.parse()); + setPointer(nameEntryParser.getPointer()); + } + } + + @Override + protected void parseResponseSpecificContents() { + parseNameEntries(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/SftpV4InitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/SftpV4InitMessagePreparator.java new file mode 100644 index 000000000..645363464 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/SftpV4InitMessagePreparator.java @@ -0,0 +1,25 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.preperator; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.SftpV4InitMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpV4InitMessagePreparator extends SftpMessagePreparator { + + public SftpV4InitMessagePreparator() { + super(SftpPacketTypeConstant.SSH_FXP_INIT); + } + + public void prepareMessageSpecificContents(SftpV4InitMessage object, Chooser chooser) { + object.setVersion(chooser.getSftpClientVersion()); + object.getExtensions().clear(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileAttributesPreparator.java new file mode 100644 index 000000000..fef5ea6d9 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileAttributesPreparator.java @@ -0,0 +1,123 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.holder; + +import de.rub.nds.modifiablevariable.ModifiableVariable; +import de.rub.nds.sshattacker.core.config.Config; +import de.rub.nds.sshattacker.core.constants.DataFormatConstants; +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.constants.SftpFileType; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpAclEntry; +import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileExtendedAttribute; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpV4FileAttributesPreparator extends Preparator { + + @Override + public final void prepare(SftpV4FileAttributes object, Chooser chooser) { + object.setFlags( + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_OWNERGROUP, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACCESSTIME, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_CREATETIME, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_MODIFYTIME, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SUBSECOND_TIMES, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACL, + SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED); + + Config config = chooser.getConfig(); + object.setType(SftpFileType.SSH_FILEXFER_TYPE_REGULAR); + + int flags = object.getFlags().getValue(); + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE, config)) { + object.setSize(0); + } else { + object.clearSize(); + } + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_OWNERGROUP, config)) { + object.setOwner("ssh-attacker", true); + + object.setGroup("nds", true); + } else { + object.clearOwner(); + object.clearGroup(); + } + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_PERMISSIONS, config)) { + object.setPermissions(0); + } else { + object.clearPermissions(); + } + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACCESSTIME, config)) { + object.setAccessTimeLong(0); + } else { + object.clearAccessTimeLong(); + } + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_CREATETIME, config)) { + object.setCreateTimeLong(0); + } else { + object.clearCreateTimeLong(); + } + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_MODIFYTIME, config)) { + object.setModifyTimeLong(0); + } else { + object.clearModifyTimeLong(); + } + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SUBSECOND_TIMES, config)) { + object.setAccessTimeNanoseconds(0); + object.setCreateTimeNanoseconds(0); + object.setModifyTimeNanoseconds(0); + } else { + object.clearAllNanoseconds(); + } + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_ACL, config)) { + if (object.getAclEntries().isEmpty()) { + object.addAclEntry(new SftpAclEntry()); + } + object.setAclEntriesCount(object.getAclEntries().size()); + object.getAclEntries().forEach(aclEntry -> aclEntry.prepare(chooser)); + object.setAclLength( + DataFormatConstants.UINT32_SIZE + + object.getAclEntries().size() + * (DataFormatConstants.UINT32_SIZE * 3 + + DataFormatConstants.STRING_SIZE_LENGTH) + + object.getAclEntries().stream() + .map(SftpAclEntry::getWhoLength) + .mapToInt(ModifiableVariable::getValue) + .sum()); + + } else { + object.clearAcl(); + } + + if (isFlagSet(flags, SftpFileAttributeFlag.SSH_FILEXFER_ATTR_EXTENDED, config)) { + if (object.getExtendedAttributes().isEmpty()) { + object.addExtendedAttribute(new SftpFileExtendedAttribute()); + } + object.setExtendedCount(object.getExtendedAttributes().size()); + + object.getExtendedAttributes() + .forEach(extendedAttribute -> extendedAttribute.prepare(chooser)); + } else { + object.clearExtendedAttributes(); + } + } + + private static boolean isFlagSet( + int attributes, SftpFileAttributeFlag attribute, Config config) { + return (attributes & attribute.getValue()) != 0 || !config.getRespectSftpAttributesFlags(); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java new file mode 100644 index 000000000..110d3c8bd --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java @@ -0,0 +1,23 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.holder; + +import de.rub.nds.sshattacker.core.config.Config; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileNameEntry; +import de.rub.nds.sshattacker.core.protocol.common.Preparator; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpV4FileNameEntryPreparator extends Preparator { + + @Override + public final void prepare(SftpV4FileNameEntry object, Chooser chooser) { + Config config = chooser.getConfig(); + object.setFilename("/etc/passwd", true); + object.getAttributes().prepare(chooser); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileSetStatMessagePreparator.java new file mode 100644 index 000000000..d7aef2fe0 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileSetStatMessagePreparator.java @@ -0,0 +1,29 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestFileSetStatMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpV4RequestFileSetStatMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpV4RequestFileSetStatMessagePreparator() { + super(SftpPacketTypeConstant.SSH_FXP_FSETSTAT); + } + + @Override + public void prepareRequestSpecificContents( + SftpV4RequestFileSetStatMessage object, Chooser chooser) { + object.setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); + + object.getAttributes().prepare(chooser); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileStatMessagePreparator.java new file mode 100644 index 000000000..ed2956dff --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileStatMessagePreparator.java @@ -0,0 +1,29 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request; + +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestFileStatMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpV4RequestFileStatMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpV4RequestFileStatMessagePreparator() { + super(SftpPacketTypeConstant.SSH_FXP_FSTAT); + } + + @Override + public void prepareRequestSpecificContents( + SftpV4RequestFileStatMessage object, Chooser chooser) { + object.setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); + object.setFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestMakeDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestMakeDirMessagePreparator.java new file mode 100644 index 000000000..7c23ce27d --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestMakeDirMessagePreparator.java @@ -0,0 +1,29 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestMakeDirMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpV4RequestMakeDirMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpV4RequestMakeDirMessagePreparator() { + super(SftpPacketTypeConstant.SSH_FXP_MKDIR); + } + + @Override + public void prepareRequestSpecificContents( + SftpV4RequestMakeDirMessage object, Chooser chooser) { + object.setPath("/tmp/ssh-attacker/", true); + + object.getAttributes().prepare(chooser); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestOpenMessagePreparator.java new file mode 100644 index 000000000..2b917801e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestOpenMessagePreparator.java @@ -0,0 +1,31 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request; + +import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestOpenMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpV4RequestOpenMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpV4RequestOpenMessagePreparator() { + super(SftpPacketTypeConstant.SSH_FXP_OPEN); + } + + @Override + public void prepareRequestSpecificContents(SftpV4RequestOpenMessage object, Chooser chooser) { + object.setPath("/etc/passwd", true); + + object.setOpenFlags(SftpFileOpenFlag.SSH_FXF_READ, SftpFileOpenFlag.SSH_FXF_CREAT); + + object.getAttributes().prepare(chooser); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestSetStatMessagePreparator.java new file mode 100644 index 000000000..b2de2c465 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestSetStatMessagePreparator.java @@ -0,0 +1,29 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestSetStatMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpV4RequestSetStatMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpV4RequestSetStatMessagePreparator() { + super(SftpPacketTypeConstant.SSH_FXP_SETSTAT); + } + + @Override + public void prepareRequestSpecificContents( + SftpV4RequestSetStatMessage object, Chooser chooser) { + object.setPath("/tmp/ssh-attacker", true); + + object.getAttributes().prepare(chooser); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestStatMessagePreparator.java new file mode 100644 index 000000000..ad7cb255c --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestStatMessagePreparator.java @@ -0,0 +1,29 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request; + +import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestStatMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpV4RequestStatMessagePreparator + extends SftpRequestMessagePreparator { + + public SftpV4RequestStatMessagePreparator() { + super(SftpPacketTypeConstant.SSH_FXP_STAT); + } + + @Override + public void prepareRequestSpecificContents(SftpV4RequestStatMessage object, Chooser chooser) { + object.setPath("/etc/passwd", true); + + object.setFlags(SftpFileAttributeFlag.values()); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/response/SftpV4ResponseAttributesMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/response/SftpV4ResponseAttributesMessagePreparator.java new file mode 100644 index 000000000..488172e34 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/response/SftpV4ResponseAttributesMessagePreparator.java @@ -0,0 +1,27 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.response; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseAttributesMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpV4ResponseAttributesMessagePreparator + extends SftpResponseMessagePreparator { + + public SftpV4ResponseAttributesMessagePreparator() { + super(SftpPacketTypeConstant.SSH_FXP_ATTRS); + } + + @Override + public void prepareResponseSpecificContents( + SftpV4ResponseAttributesMessage object, Chooser chooser) { + object.getAttributes().prepare(chooser); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/response/SftpV4ResponseNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/response/SftpV4ResponseNameMessagePreparator.java new file mode 100644 index 000000000..cce30a47a --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/response/SftpV4ResponseNameMessagePreparator.java @@ -0,0 +1,28 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.response; + +import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; +import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseNameMessage; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; + +public class SftpV4ResponseNameMessagePreparator + extends SftpResponseMessagePreparator { + + public SftpV4ResponseNameMessagePreparator() { + super(SftpPacketTypeConstant.SSH_FXP_NAME); + } + + @Override + public void prepareResponseSpecificContents(SftpV4ResponseNameMessage object, Chooser chooser) { + object.setNameEntriesCount(object.getNameEntries().size()); + + object.getNameEntries().forEach(nameEntry -> nameEntry.prepare(chooser)); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/SftpV4InitMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/SftpV4InitMessageSerializer.java new file mode 100644 index 000000000..f3e833f8b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/SftpV4InitMessageSerializer.java @@ -0,0 +1,14 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.serializer; + +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.SftpHandshakeMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.SftpV4InitMessage; + +public class SftpV4InitMessageSerializer + extends SftpHandshakeMessageSerializer {} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/holder/SftpV4FileAttributesSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/holder/SftpV4FileAttributesSerializer.java new file mode 100644 index 000000000..812d86744 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/holder/SftpV4FileAttributesSerializer.java @@ -0,0 +1,145 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.serializer.holder; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.constants.SftpFileType; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileAttributes; +import de.rub.nds.sshattacker.core.protocol.common.Serializer; +import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpV4FileAttributesSerializer extends Serializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private static void serializeFlags(SftpV4FileAttributes object, SerializerStream output) { + Integer flags = object.getFlags().getValue(); + LOGGER.debug("Flags: {}", flags); + output.appendInt(flags); + } + + private static void serializeType(SftpV4FileAttributes object, SerializerStream output) { + if (object.getType() != null) { + Byte type = object.getType().getValue(); + LOGGER.debug("Type: {}", SftpFileType.getNameByType(type)); + output.appendByte(type); + } + } + + private static void serializeSize(SftpV4FileAttributes object, SerializerStream output) { + if (object.getSize() != null) { + Long size = object.getSize().getValue(); + LOGGER.debug("Size: {}", size); + output.appendLong(size); + } + } + + private static void serializeOwnerGroup(SftpV4FileAttributes object, SerializerStream output) { + if (object.getOwner() != null) { + Integer ownerLength = object.getOwnerLength().getValue(); + LOGGER.debug("Owner length: {}", ownerLength); + output.appendInt(ownerLength); + String owner = object.getOwner().getValue(); + LOGGER.debug("Owner: {}", () -> backslashEscapeString(owner)); + output.appendString(owner, StandardCharsets.UTF_8); + } + if (object.getGroup() != null) { + Integer groupLength = object.getGroupLength().getValue(); + LOGGER.debug("Group length: {}", groupLength); + output.appendInt(groupLength); + String group = object.getGroup().getValue(); + LOGGER.debug("Group: {}", () -> backslashEscapeString(group)); + output.appendString(group, StandardCharsets.UTF_8); + } + } + + private static void serializePermissions(SftpV4FileAttributes object, SerializerStream output) { + if (object.getPermissions() != null) { + Integer permissions = object.getPermissions().getValue(); + LOGGER.debug("Permissions: {}", permissions); + output.appendInt(permissions); + } + } + + private static void serializeTimes(SftpV4FileAttributes object, SerializerStream output) { + // SFTP v4 + if (object.getAccessTimeLong() != null) { + Long aTime = object.getAccessTimeLong().getValue(); + LOGGER.debug("ATime: {}", aTime); + output.appendLong(aTime); + } + if (object.getAccessTimeNanoseconds() != null) { + Integer aTimeNanoseconds = object.getAccessTimeNanoseconds().getValue(); + LOGGER.debug("ATime Nanoseconds: {}", aTimeNanoseconds); + output.appendInt(aTimeNanoseconds); + } + if (object.getCreateTimeLong() != null) { + Long cTime = object.getCreateTimeLong().getValue(); + LOGGER.debug("CTime: {}", cTime); + output.appendLong(cTime); + } + if (object.getCreateTimeNanoseconds() != null) { + Integer cTimeNanoseconds = object.getCreateTimeNanoseconds().getValue(); + LOGGER.debug("CTime Nanoseconds: {}", cTimeNanoseconds); + output.appendInt(cTimeNanoseconds); + } + if (object.getModifyTimeLong() != null) { + Long mTime = object.getModifyTimeLong().getValue(); + LOGGER.debug("MTime: {}", mTime); + output.appendLong(mTime); + } + if (object.getModifyTimeNanoseconds() != null) { + Integer mTimeNanoseconds = object.getModifyTimeNanoseconds().getValue(); + LOGGER.debug("MTime Nanoseconds: {}", mTimeNanoseconds); + output.appendInt(mTimeNanoseconds); + } + } + + private static void serializeAcl(SftpV4FileAttributes object, SerializerStream output) { + if (object.getAclEntriesCount() != null) { + Integer aclLength = object.getAclLength().getValue(); + LOGGER.debug("AclLength: {}", aclLength); + output.appendInt(aclLength); + + Integer aclEntriesCount = object.getAclEntriesCount().getValue(); + LOGGER.debug("AclEntriesCount: {}", aclEntriesCount); + output.appendInt(aclEntriesCount); + + object.getAclEntries().forEach(aclEntry -> output.appendBytes(aclEntry.serialize())); + } + } + + private static void serializeExtendedAttributes( + SftpV4FileAttributes object, SerializerStream output) { + if (object.getExtendedCount() != null) { + Integer extendedCount = object.getExtendedCount().getValue(); + LOGGER.debug("ExtendedCount: {}", extendedCount); + output.appendInt(extendedCount); + + object.getExtendedAttributes() + .forEach( + extendedAttribute -> output.appendBytes(extendedAttribute.serialize())); + } + } + + @Override + protected final void serializeBytes(SftpV4FileAttributes object, SerializerStream output) { + serializeFlags(object, output); + serializeType(object, output); + serializeSize(object, output); + serializeOwnerGroup(object, output); + serializePermissions(object, output); + serializeTimes(object, output); + serializeAcl(object, output); + serializeExtendedAttributes(object, output); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/holder/SftpV4FileNameEntrySerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/holder/SftpV4FileNameEntrySerializer.java new file mode 100644 index 000000000..e72590845 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/holder/SftpV4FileNameEntrySerializer.java @@ -0,0 +1,41 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.serializer.holder; + +import static de.rub.nds.modifiablevariable.util.StringUtil.backslashEscapeString; + +import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileNameEntry; +import de.rub.nds.sshattacker.core.protocol.common.Serializer; +import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; +import java.nio.charset.StandardCharsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpV4FileNameEntrySerializer extends Serializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private static void serializeFilename(SftpV4FileNameEntry object, SerializerStream output) { + Integer filenameLength = object.getFilenameLength().getValue(); + LOGGER.debug("Filename length: {}", filenameLength); + output.appendInt(filenameLength); + String filename = object.getFilename().getValue(); + LOGGER.debug("Filename: {}", () -> backslashEscapeString(filename)); + output.appendString(filename, StandardCharsets.UTF_8); + } + + private static void serializeAttributes(SftpV4FileNameEntry object, SerializerStream output) { + output.appendBytes(object.getAttributes().serialize()); + } + + @Override + protected final void serializeBytes(SftpV4FileNameEntry object, SerializerStream output) { + serializeFilename(object, output); + serializeAttributes(object, output); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestFileSetStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestFileSetStatMessageSerializer.java new file mode 100644 index 000000000..042e32cd2 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestFileSetStatMessageSerializer.java @@ -0,0 +1,27 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestWithHandleMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestFileSetStatMessage; +import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; + +public class SftpV4RequestFileSetStatMessageSerializer + extends SftpRequestWithHandleMessageSerializer { + + private static void serializeAttributes( + SftpV4RequestFileSetStatMessage object, SerializerStream output) { + output.appendBytes(object.getAttributes().serialize()); + } + + @Override + protected void serializeRequestWithHandleSpecificContents( + SftpV4RequestFileSetStatMessage object, SerializerStream output) { + serializeAttributes(object, output); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestFileStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestFileStatMessageSerializer.java new file mode 100644 index 000000000..a24249542 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestFileStatMessageSerializer.java @@ -0,0 +1,33 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestWithHandleMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestFileStatMessage; +import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpV4RequestFileStatMessageSerializer + extends SftpRequestWithHandleMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private static void serializeFlags( + SftpV4RequestFileStatMessage object, SerializerStream output) { + Integer flags = object.getFlags().getValue(); + LOGGER.debug("Flags: {}", flags); + output.appendInt(flags); + } + + @Override + protected void serializeRequestWithHandleSpecificContents( + SftpV4RequestFileStatMessage object, SerializerStream output) { + serializeFlags(object, output); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestMakeDirMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestMakeDirMessageSerializer.java new file mode 100644 index 000000000..8f9fd69a1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestMakeDirMessageSerializer.java @@ -0,0 +1,27 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestWithPathMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestMakeDirMessage; +import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; + +public class SftpV4RequestMakeDirMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + private static void serializeAttributes( + SftpV4RequestMakeDirMessage object, SerializerStream output) { + output.appendBytes(object.getAttributes().serialize()); + } + + @Override + protected void serializeRequestWithPathSpecificContents( + SftpV4RequestMakeDirMessage object, SerializerStream output) { + serializeAttributes(object, output); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestOpenMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestOpenMessageSerializer.java new file mode 100644 index 000000000..e38ad2b82 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestOpenMessageSerializer.java @@ -0,0 +1,39 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestWithPathMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestOpenMessage; +import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpV4RequestOpenMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private static void serializeOpenFlags( + SftpV4RequestOpenMessage object, SerializerStream output) { + Integer openFlags = object.getOpenFlags().getValue(); + LOGGER.debug("OpenFlags: {}", openFlags); + output.appendInt(openFlags); + } + + private static void serializeAttributes( + SftpV4RequestOpenMessage object, SerializerStream output) { + output.appendBytes(object.getAttributes().serialize()); + } + + @Override + protected void serializeRequestWithPathSpecificContents( + SftpV4RequestOpenMessage object, SerializerStream output) { + serializeOpenFlags(object, output); + serializeAttributes(object, output); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestSetStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestSetStatMessageSerializer.java new file mode 100644 index 000000000..b0bed9df6 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestSetStatMessageSerializer.java @@ -0,0 +1,27 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestWithPathMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestSetStatMessage; +import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; + +public class SftpV4RequestSetStatMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + private static void serializeAttributes( + SftpV4RequestSetStatMessage object, SerializerStream output) { + output.appendBytes(object.getAttributes().serialize()); + } + + @Override + protected void serializeRequestWithPathSpecificContents( + SftpV4RequestSetStatMessage object, SerializerStream output) { + serializeAttributes(object, output); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestStatMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestStatMessageSerializer.java new file mode 100644 index 000000000..a9d77c642 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/request/SftpV4RequestStatMessageSerializer.java @@ -0,0 +1,32 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request; + +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestWithPathMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestStatMessage; +import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpV4RequestStatMessageSerializer + extends SftpRequestWithPathMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private static void serializeFlags(SftpV4RequestStatMessage object, SerializerStream output) { + Integer flags = object.getFlags().getValue(); + LOGGER.debug("Flags: {}", flags); + output.appendInt(flags); + } + + @Override + protected void serializeRequestWithPathSpecificContents( + SftpV4RequestStatMessage object, SerializerStream output) { + serializeFlags(object, output); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/response/SftpV4ResponseAttributesMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/response/SftpV4ResponseAttributesMessageSerializer.java new file mode 100644 index 000000000..49045189b --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/response/SftpV4ResponseAttributesMessageSerializer.java @@ -0,0 +1,27 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.serializer.response; + +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseAttributesMessage; +import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; + +public class SftpV4ResponseAttributesMessageSerializer + extends SftpResponseMessageSerializer { + + private static void serializeAttributes( + SftpV4ResponseAttributesMessage object, SerializerStream output) { + output.appendBytes(object.getAttributes().serialize()); + } + + @Override + protected void serializeResponseSpecificContents( + SftpV4ResponseAttributesMessage object, SerializerStream output) { + serializeAttributes(object, output); + } +} diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/response/SftpV4ResponseNameMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/response/SftpV4ResponseNameMessageSerializer.java new file mode 100644 index 000000000..875a487b1 --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/serializer/response/SftpV4ResponseNameMessageSerializer.java @@ -0,0 +1,35 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.data.sftp.v4.serializer.response; + +import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseMessageSerializer; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseNameMessage; +import de.rub.nds.sshattacker.core.protocol.common.SerializerStream; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class SftpV4ResponseNameMessageSerializer + extends SftpResponseMessageSerializer { + + private static final Logger LOGGER = LogManager.getLogger(); + + private static void serializeNameEntries( + SftpV4ResponseNameMessage object, SerializerStream output) { + Integer countNameEntries = object.getNameEntriesCount().getValue(); + LOGGER.debug("CountNameEntries: {}", countNameEntries); + output.appendInt(countNameEntries); + + object.getNameEntries().forEach(nameEntry -> output.appendBytes(nameEntry.serialize())); + } + + @Override + protected void serializeResponseSpecificContents( + SftpV4ResponseNameMessage object, SerializerStream output) { + serializeNameEntries(object, output); + } +} From f5368b0f3ac4e04f294ec1f032a3aaf41fb5f1cd Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 27 Feb 2025 16:07:14 +0100 Subject: [PATCH 167/203] Remove some unused variables --- .../nds/sshattacker/core/constants/KeyExchangeAlgorithm.java | 4 ---- .../preperator/extension/SftpExtensionVendorIdPreparator.java | 1 - .../common/preperator/holder/SftpFileNameEntryPreparator.java | 1 - .../v4/preperator/holder/SftpV4FileNameEntryPreparator.java | 1 - .../preparator/UserAuthInfoRequestMessagePreparator.java | 1 - .../preparator/UserAuthPubkeyMessagePreparator.java | 1 - .../transport/preparator/DisconnectMessagePreparator.java | 1 - .../preparator/KeyExchangeInitMessagePreparator.java | 1 - .../extension/DelayCompressionExtensionPreparator.java | 1 - 9 files changed, 12 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/KeyExchangeAlgorithm.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/KeyExchangeAlgorithm.java index 7ce9782f3..d129bfe8c 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/KeyExchangeAlgorithm.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/KeyExchangeAlgorithm.java @@ -9,8 +9,6 @@ import java.util.Map; import java.util.TreeMap; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; public enum KeyExchangeAlgorithm { /* @@ -180,8 +178,6 @@ public enum KeyExchangeAlgorithm { HashFunction.SHA512), UNKNOWN(null, null, null); - private static final Logger LOGGER = LogManager.getLogger(); - private final String name; private final HashFunction hashFunction; private final KeyExchangeFlowType flowType; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionVendorIdPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionVendorIdPreparator.java index 3969a3ff9..04b2e6ac6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionVendorIdPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionVendorIdPreparator.java @@ -22,7 +22,6 @@ public SftpExtensionVendorIdPreparator() { @Override public void prepareExtensionSpecificContents(SftpExtensionVendorId object, Chooser chooser) { - Config config = chooser.getConfig(); object.setVendorName("NDS RUB", true); object.setProductName("SSH-Attacker", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileNameEntryPreparator.java index ebe8e8617..39b66e4d9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileNameEntryPreparator.java @@ -16,7 +16,6 @@ public class SftpFileNameEntryPreparator extends Preparator { @Override public final void prepare(SftpFileNameEntry object, Chooser chooser) { - Config config = chooser.getConfig(); object.setFilename("/etc/passwd", true); object.setLongName("-rwxr-xr-x 1 ssh attacker 348911 Mar 25 14:29 passwd", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java index 110d3c8bd..301a5eb13 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java @@ -16,7 +16,6 @@ public class SftpV4FileNameEntryPreparator extends Preparator pk = chooser.getSelectedPublicKeyForAuthentication(); - Config config = chooser.getConfig(); if (pk != null) { object.setPubkeyAlgName(pk.getPublicKeyFormat().getName(), true); object.setPubkey(PublicKeyHelper.encode(pk), true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java index dc9af3251..44f578805 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java @@ -23,7 +23,6 @@ public DisconnectMessagePreparator() { @Override public void prepareMessageSpecificContents(DisconnectMessage object, Chooser chooser) { - Config config = chooser.getConfig(); if (chooser.getContext().getDelayCompressionExtensionNegotiationFailed()) { object.setReasonCode(DisconnectReason.SSH_DISCONNECT_COMPRESSION_ERROR); object.setDescription( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java index 28ed57722..ff84de954 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java @@ -21,7 +21,6 @@ public KeyExchangeInitMessagePreparator() { @Override public void prepareMessageSpecificContents(KeyExchangeInitMessage object, Chooser chooser) { - Config config = chooser.getConfig(); if (chooser.getContext().isClient()) { object.setCookie(chooser.getClientCookie()); object.setKeyExchangeAlgorithms( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java index 7c1d6aca5..b3af596a0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java @@ -22,7 +22,6 @@ public DelayCompressionExtensionPreparator() { @Override public void prepareExtensionSpecificContents( DelayCompressionExtension object, Chooser chooser) { - Config config = chooser.getConfig(); if (chooser.getContext().isClient()) { object.setCompressionMethodsClientToServer( chooser.getClientSupportedDelayCompressionMethods(), true); From 7f831134a9d751388b6211f77bb56615531c6e25 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 27 Feb 2025 16:08:31 +0100 Subject: [PATCH 168/203] run formatter --- .../preperator/extension/SftpExtensionVendorIdPreparator.java | 1 - .../common/preperator/holder/SftpFileNameEntryPreparator.java | 1 - .../sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java | 1 - .../preparator/UserAuthInfoRequestMessagePreparator.java | 1 - .../preparator/UserAuthPubkeyMessagePreparator.java | 1 - .../transport/preparator/DisconnectMessagePreparator.java | 1 - .../transport/preparator/KeyExchangeInitMessagePreparator.java | 1 - .../extension/DelayCompressionExtensionPreparator.java | 1 - 8 files changed, 8 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionVendorIdPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionVendorIdPreparator.java index 04b2e6ac6..9b1b46b44 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionVendorIdPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionVendorIdPreparator.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; -import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionVendorId; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileNameEntryPreparator.java index 39b66e4d9..6b0b320f2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileNameEntryPreparator.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder; -import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java index 301a5eb13..ffe2a4efd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.holder; -import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Preparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java index 33bda9c25..4b3f69c9b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.protocol.authentication.preparator; -import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.MessageIdConstant; import de.rub.nds.sshattacker.core.protocol.authentication.message.UserAuthInfoRequestMessage; import de.rub.nds.sshattacker.core.protocol.authentication.message.holder.AuthenticationPromptEntry; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPubkeyMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPubkeyMessagePreparator.java index d6c3e489c..9cfb0ffbb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPubkeyMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPubkeyMessagePreparator.java @@ -8,7 +8,6 @@ package de.rub.nds.sshattacker.core.protocol.authentication.preparator; import de.rub.nds.modifiablevariable.util.ArrayConverter; -import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.AuthenticationMethod; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.PublicKeyAlgorithm; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java index 44f578805..ff7a219e1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.protocol.transport.preparator; -import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.DisconnectReason; import de.rub.nds.sshattacker.core.constants.MessageIdConstant; import de.rub.nds.sshattacker.core.protocol.common.SshMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java index ff84de954..74c39b103 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.protocol.transport.preparator; -import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.MessageIdConstant; import de.rub.nds.sshattacker.core.protocol.common.SshMessagePreparator; import de.rub.nds.sshattacker.core.protocol.transport.message.KeyExchangeInitMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java index b3af596a0..4efe3d680 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.protocol.transport.preparator.extension; -import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.Extension; import de.rub.nds.sshattacker.core.protocol.transport.message.extension.DelayCompressionExtension; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; From 14157b35c9597dd3dbe13eeb4c6c96b583131709 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 27 Feb 2025 16:10:30 +0100 Subject: [PATCH 169/203] remove todo --- .../data/sftp/common/message/request/SftpRequestOpenMessage.java | 1 - 1 file changed, 1 deletion(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestOpenMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestOpenMessage.java index a9fbe3012..c58e50e38 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestOpenMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestOpenMessage.java @@ -22,7 +22,6 @@ public class SftpRequestOpenMessage extends SftpRequestWithPathMessage Date: Thu, 27 Feb 2025 16:21:44 +0100 Subject: [PATCH 170/203] Add new XmlElement annotations --- .../core/workflow/action/MessageAction.java | 19 ++++++++++++++++++- .../core/workflow/action/ReceiveAction.java | 19 ++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java index 74cc09a13..e8c652659 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java @@ -16,6 +16,10 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.*; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.*; import de.rub.nds.sshattacker.core.data.sftp.common.message.response.*; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.SftpV4InitMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.*; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseNameMessage; import de.rub.nds.sshattacker.core.protocol.authentication.message.*; import de.rub.nds.sshattacker.core.protocol.common.ProtocolMessage; import de.rub.nds.sshattacker.core.protocol.connection.message.*; @@ -200,7 +204,20 @@ public abstract class MessageAction extends ConnectionBoundAction { @XmlElement(type = SftpUnknownMessage.class, name = "SftpUnknown"), @XmlElement(type = SftpVersionMessage.class, name = "SftpVersion"), // SFTP V4 - @XmlElement(type = SftpRequestTextSeekMessage.class, name = "SftpRequestTextSeek") + @XmlElement(type = SftpRequestTextSeekMessage.class, name = "SftpRequestTWextSeek"), + @XmlElement(type = SftpV4InitMessage.class, name = "SftpV4Init"), + @XmlElement(type = SftpV4ResponseNameMessage.class, name = "SftpV4ResponseName"), + @XmlElement( + type = SftpV4ResponseAttributesMessage.class, + name = "SftpV4ResponseAttributes"), + @XmlElement(type = SftpV4RequestOpenMessage.class, name = "SftpV4RequestOpen"), + @XmlElement(type = SftpV4RequestFileStatMessage.class, name = "SftpV4RequestFileStat"), + @XmlElement( + type = SftpV4RequestFileSetStatMessage.class, + name = "SftpV4RequestFileSetStat"), + @XmlElement(type = SftpV4RequestSetStatMessage.class, name = "SftpV4RequestSetStat"), + @XmlElement(type = SftpV4RequestMakeDirMessage.class, name = "SftpV4RequestMakeDir"), + @XmlElement(type = SftpV4RequestStatMessage.class, name = "SftpV4RequestStat") }) protected ArrayList> messages = new ArrayList<>(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java index cb7a62cb0..3c3db82a7 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/ReceiveAction.java @@ -16,6 +16,10 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.*; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.*; import de.rub.nds.sshattacker.core.data.sftp.common.message.response.*; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.SftpV4InitMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.*; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseAttributesMessage; +import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseNameMessage; import de.rub.nds.sshattacker.core.exceptions.WorkflowExecutionException; import de.rub.nds.sshattacker.core.packet.AbstractPacket; import de.rub.nds.sshattacker.core.packet.BinaryPacket; @@ -211,7 +215,20 @@ public class ReceiveAction extends MessageAction implements ReceivingAction { @XmlElement(type = SftpUnknownMessage.class, name = "SftpUnknown"), @XmlElement(type = SftpVersionMessage.class, name = "SftpVersion"), // SFTP V4 - @XmlElement(type = SftpRequestTextSeekMessage.class, name = "SftpRequestTextSeek") + @XmlElement(type = SftpRequestTextSeekMessage.class, name = "SftpRequestTextSeek"), + @XmlElement(type = SftpV4InitMessage.class, name = "SftpV4Init"), + @XmlElement(type = SftpV4ResponseNameMessage.class, name = "SftpV4ResponseName"), + @XmlElement( + type = SftpV4ResponseAttributesMessage.class, + name = "SftpV4ResponseAttributes"), + @XmlElement(type = SftpV4RequestOpenMessage.class, name = "SftpV4RequestOpen"), + @XmlElement(type = SftpV4RequestFileStatMessage.class, name = "SftpV4RequestFileStat"), + @XmlElement( + type = SftpV4RequestFileSetStatMessage.class, + name = "SftpV4RequestFileSetStat"), + @XmlElement(type = SftpV4RequestSetStatMessage.class, name = "SftpV4RequestSetStat"), + @XmlElement(type = SftpV4RequestMakeDirMessage.class, name = "SftpV4RequestMakeDir"), + @XmlElement(type = SftpV4RequestStatMessage.class, name = "SftpV4RequestStat") }) protected ArrayList> expectedMessages = new ArrayList<>(); From 31d20bb5107807cc16af534468ae5d88b10cec75 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Thu, 27 Feb 2025 17:44:43 +0100 Subject: [PATCH 171/203] A typo has crept in --- .../rub/nds/sshattacker/core/workflow/action/MessageAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java index e8c652659..45b0c2174 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/MessageAction.java @@ -204,7 +204,7 @@ public abstract class MessageAction extends ConnectionBoundAction { @XmlElement(type = SftpUnknownMessage.class, name = "SftpUnknown"), @XmlElement(type = SftpVersionMessage.class, name = "SftpVersion"), // SFTP V4 - @XmlElement(type = SftpRequestTextSeekMessage.class, name = "SftpRequestTWextSeek"), + @XmlElement(type = SftpRequestTextSeekMessage.class, name = "SftpRequestTextSeek"), @XmlElement(type = SftpV4InitMessage.class, name = "SftpV4Init"), @XmlElement(type = SftpV4ResponseNameMessage.class, name = "SftpV4ResponseName"), @XmlElement( From 902b04a9014306f54bc130a8fb2868d1a6a6b365 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Fri, 28 Feb 2025 10:33:24 +0100 Subject: [PATCH 172/203] Use setModifications instead of setModification. Because setModification was removed from modifiable variables. --- README.md | 4 +- .../path/ModifiablePath.java | 2 +- .../pth/PathModificationTest.java | 112 +++++++++--------- .../pth/PathSerializationTest.java | 4 +- 4 files changed, 61 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index 7e3b0547d..6f4414bdd 100755 --- a/README.md +++ b/README.md @@ -160,7 +160,7 @@ SSH-Attacker uses the concept of Modifiable Variables to allow runtime modificat ```java ModifiableInteger i = new ModifiableInteger(); i.setOriginalValue(30); -i.setModification(new AddModification(20)); +i.addModification(new AddModification(20)); System.out.println(i.getValue()); // 50 ``` @@ -172,7 +172,7 @@ We can of course use this concept by constructing our SSH workflows. Imagine you ChannelOpenSessionMessage channelOpenSessionMessage = new ChannelOpenSessionMessage(); ModifiableInteger i = new ModifiableInteger(); channelOpenSessionMessage.setConfigSenderChannelId(1337); - i.setModification(new IntegerAddModification(100)); + i.setModifications(new IntegerAddModification(100)); channelOpenSessionMessage.setSenderChannelId(i);//1437 ``` diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/ModifiablePath.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/ModifiablePath.java index 4c28e88ca..8298a971c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/ModifiablePath.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/modifiablevariable/path/ModifiablePath.java @@ -47,7 +47,7 @@ public static ModifiablePath safelySetValue(ModifiablePath mv, String value) { private static ModifiablePath getModifiablePathWithModification( VariableModification modification) { ModifiablePath modifiablePath = new ModifiablePath(); - modifiablePath.setModification(modification); + modifiablePath.addModification(modification); return modifiablePath; } diff --git a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathModificationTest.java b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathModificationTest.java index f030e0542..c38cd0395 100644 --- a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathModificationTest.java +++ b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathModificationTest.java @@ -20,151 +20,151 @@ public class PathModificationTest { @Test public void testInsert() { ModifiablePath nullPath = new ModifiablePath(); - nullPath.setModification(new PathInsertValueModification("test", 2)); + nullPath.setModifications(new PathInsertValueModification("test", 2)); assertNull(nullPath.getValue()); ModifiablePath emptyPath = new ModifiablePath(""); - emptyPath.setModification(new PathInsertValueModification("test", 0)); + emptyPath.setModifications(new PathInsertValueModification("test", 0)); assertEquals("test", emptyPath.getValue()); - emptyPath.setModification(new PathInsertValueModification("test", 10)); + emptyPath.setModifications(new PathInsertValueModification("test", 10)); assertEquals("test", emptyPath.getValue()); ModifiablePath simplePathLeadingSlash = new ModifiablePath("/this/is/a/path"); - simplePathLeadingSlash.setModification(new PathInsertValueModification("test", 0)); + simplePathLeadingSlash.setModifications(new PathInsertValueModification("test", 0)); assertEquals("/test/this/is/a/path", simplePathLeadingSlash.getValue()); - simplePathLeadingSlash.setModification(new PathInsertValueModification("test", 4)); + simplePathLeadingSlash.setModifications(new PathInsertValueModification("test", 4)); assertEquals("/this/is/a/path/test", simplePathLeadingSlash.getValue()); - simplePathLeadingSlash.setModification(new PathInsertValueModification("test", 5)); + simplePathLeadingSlash.setModifications(new PathInsertValueModification("test", 5)); assertEquals("/test/this/is/a/path", simplePathLeadingSlash.getValue()); - simplePathLeadingSlash.setModification(new PathInsertValueModification("test", 6)); + simplePathLeadingSlash.setModifications(new PathInsertValueModification("test", 6)); assertEquals("/this/test/is/a/path", simplePathLeadingSlash.getValue()); - simplePathLeadingSlash.setModification(new PathInsertValueModification("test", 11)); + simplePathLeadingSlash.setModifications(new PathInsertValueModification("test", 11)); assertEquals("/this/test/is/a/path", simplePathLeadingSlash.getValue()); ModifiablePath simplePathLeadingAndTrailingSlash = new ModifiablePath("/this/is/a/path/"); - simplePathLeadingAndTrailingSlash.setModification( + simplePathLeadingAndTrailingSlash.setModifications( new PathInsertValueModification("test", 0)); assertEquals("/test/this/is/a/path/", simplePathLeadingAndTrailingSlash.getValue()); - simplePathLeadingAndTrailingSlash.setModification( + simplePathLeadingAndTrailingSlash.setModifications( new PathInsertValueModification("test", 4)); assertEquals("/this/is/a/path/test/", simplePathLeadingAndTrailingSlash.getValue()); - simplePathLeadingAndTrailingSlash.setModification( + simplePathLeadingAndTrailingSlash.setModifications( new PathInsertValueModification("test", 5)); assertEquals("/test/this/is/a/path/", simplePathLeadingAndTrailingSlash.getValue()); - simplePathLeadingAndTrailingSlash.setModification( + simplePathLeadingAndTrailingSlash.setModifications( new PathInsertValueModification("test", 6)); assertEquals("/this/test/is/a/path/", simplePathLeadingAndTrailingSlash.getValue()); - simplePathLeadingAndTrailingSlash.setModification( + simplePathLeadingAndTrailingSlash.setModifications( new PathInsertValueModification("test", 11)); assertEquals("/this/test/is/a/path/", simplePathLeadingAndTrailingSlash.getValue()); ModifiablePath simplePath = new ModifiablePath("this/is/a/path"); - simplePath.setModification(new PathInsertValueModification("test", 0)); + simplePath.setModifications(new PathInsertValueModification("test", 0)); assertEquals("test/this/is/a/path", simplePath.getValue()); - simplePath.setModification(new PathInsertValueModification("test", 4)); + simplePath.setModifications(new PathInsertValueModification("test", 4)); assertEquals("this/is/a/path/test", simplePath.getValue()); - simplePath.setModification(new PathInsertValueModification("test", 5)); + simplePath.setModifications(new PathInsertValueModification("test", 5)); assertEquals("test/this/is/a/path", simplePath.getValue()); - simplePath.setModification(new PathInsertValueModification("test", 6)); + simplePath.setModifications(new PathInsertValueModification("test", 6)); assertEquals("this/test/is/a/path", simplePath.getValue()); - simplePath.setModification(new PathInsertValueModification("test", 11)); + simplePath.setModifications(new PathInsertValueModification("test", 11)); assertEquals("this/test/is/a/path", simplePath.getValue()); ModifiablePath simplePathTrailingSlash = new ModifiablePath("this/is/a/path/"); - simplePathTrailingSlash.setModification(new PathInsertValueModification("test", 0)); + simplePathTrailingSlash.setModifications(new PathInsertValueModification("test", 0)); assertEquals("test/this/is/a/path/", simplePathTrailingSlash.getValue()); - simplePathTrailingSlash.setModification(new PathInsertValueModification("test", 4)); + simplePathTrailingSlash.setModifications(new PathInsertValueModification("test", 4)); assertEquals("this/is/a/path/test/", simplePathTrailingSlash.getValue()); - simplePathTrailingSlash.setModification(new PathInsertValueModification("test", 5)); + simplePathTrailingSlash.setModifications(new PathInsertValueModification("test", 5)); assertEquals("test/this/is/a/path/", simplePathTrailingSlash.getValue()); - simplePathTrailingSlash.setModification(new PathInsertValueModification("test", 6)); + simplePathTrailingSlash.setModifications(new PathInsertValueModification("test", 6)); assertEquals("this/test/is/a/path/", simplePathTrailingSlash.getValue()); - simplePathTrailingSlash.setModification(new PathInsertValueModification("test", 11)); + simplePathTrailingSlash.setModifications(new PathInsertValueModification("test", 11)); assertEquals("this/test/is/a/path/", simplePathTrailingSlash.getValue()); ModifiablePath rootPath = new ModifiablePath("/"); - rootPath.setModification(new PathInsertValueModification("test", 0)); + rootPath.setModifications(new PathInsertValueModification("test", 0)); assertEquals("/test/", rootPath.getValue()); - rootPath.setModification(new PathInsertValueModification("test", 2)); + rootPath.setModifications(new PathInsertValueModification("test", 2)); assertEquals("/test/", rootPath.getValue()); - rootPath.setModification(new PathInsertValueModification("test", 5)); + rootPath.setModifications(new PathInsertValueModification("test", 5)); assertEquals("/test/", rootPath.getValue()); } @Test public void testDelete() { ModifiablePath nullPath = new ModifiablePath(); - nullPath.setModification(new PathDeleteModification(0, 1)); + nullPath.setModifications(new PathDeleteModification(0, 1)); assertNull(nullPath.getValue()); ModifiablePath emptyPath = new ModifiablePath(""); - emptyPath.setModification(new PathDeleteModification(0, 1)); + emptyPath.setModifications(new PathDeleteModification(0, 1)); assertEquals("", emptyPath.getValue()); - emptyPath.setModification(new PathDeleteModification(1, 10)); + emptyPath.setModifications(new PathDeleteModification(1, 10)); assertEquals("", emptyPath.getValue()); ModifiablePath simplePathLeadingSlash = new ModifiablePath("/this/is/a/path"); - simplePathLeadingSlash.setModification(new PathDeleteModification(0, 0)); + simplePathLeadingSlash.setModifications(new PathDeleteModification(0, 0)); assertEquals("/this/is/a/path", simplePathLeadingSlash.getValue()); - simplePathLeadingSlash.setModification(new PathDeleteModification(4, 4)); + simplePathLeadingSlash.setModifications(new PathDeleteModification(4, 4)); assertEquals("", simplePathLeadingSlash.getValue()); - simplePathLeadingSlash.setModification(new PathDeleteModification(4, 1)); + simplePathLeadingSlash.setModifications(new PathDeleteModification(4, 1)); assertEquals("/is/a/path", simplePathLeadingSlash.getValue()); - simplePathLeadingSlash.setModification(new PathDeleteModification(5, 1)); + simplePathLeadingSlash.setModifications(new PathDeleteModification(5, 1)); assertEquals("/this/a/path", simplePathLeadingSlash.getValue()); - simplePathLeadingSlash.setModification(new PathDeleteModification(6, 1)); + simplePathLeadingSlash.setModifications(new PathDeleteModification(6, 1)); assertEquals("/this/is/path", simplePathLeadingSlash.getValue()); - simplePathLeadingSlash.setModification(new PathDeleteModification(11, 11)); + simplePathLeadingSlash.setModifications(new PathDeleteModification(11, 11)); assertEquals("/this/is/a", simplePathLeadingSlash.getValue()); ModifiablePath simplePathLeadingAndTrailingSlash = new ModifiablePath("/this/is/a/path/"); - simplePathLeadingAndTrailingSlash.setModification(new PathDeleteModification(0, 0)); + simplePathLeadingAndTrailingSlash.setModifications(new PathDeleteModification(0, 0)); assertEquals("/this/is/a/path/", simplePathLeadingAndTrailingSlash.getValue()); - simplePathLeadingAndTrailingSlash.setModification(new PathDeleteModification(4, 4)); + simplePathLeadingAndTrailingSlash.setModifications(new PathDeleteModification(4, 4)); assertEquals("/", simplePathLeadingAndTrailingSlash.getValue()); - simplePathLeadingAndTrailingSlash.setModification(new PathDeleteModification(4, 1)); + simplePathLeadingAndTrailingSlash.setModifications(new PathDeleteModification(4, 1)); assertEquals("/is/a/path/", simplePathLeadingAndTrailingSlash.getValue()); - simplePathLeadingAndTrailingSlash.setModification(new PathDeleteModification(5, 1)); + simplePathLeadingAndTrailingSlash.setModifications(new PathDeleteModification(5, 1)); assertEquals("/this/a/path/", simplePathLeadingAndTrailingSlash.getValue()); - simplePathLeadingAndTrailingSlash.setModification(new PathDeleteModification(6, 1)); + simplePathLeadingAndTrailingSlash.setModifications(new PathDeleteModification(6, 1)); assertEquals("/this/is/path/", simplePathLeadingAndTrailingSlash.getValue()); - simplePathLeadingAndTrailingSlash.setModification(new PathDeleteModification(11, 11)); + simplePathLeadingAndTrailingSlash.setModifications(new PathDeleteModification(11, 11)); assertEquals("/this/is/a/", simplePathLeadingAndTrailingSlash.getValue()); ModifiablePath simplePath = new ModifiablePath("this/is/a/path"); - simplePath.setModification(new PathDeleteModification(0, 0)); + simplePath.setModifications(new PathDeleteModification(0, 0)); assertEquals("this/is/a/path", simplePath.getValue()); - simplePath.setModification(new PathDeleteModification(4, 4)); + simplePath.setModifications(new PathDeleteModification(4, 4)); assertEquals("", simplePath.getValue()); - simplePath.setModification(new PathDeleteModification(4, 1)); + simplePath.setModifications(new PathDeleteModification(4, 1)); assertEquals("is/a/path", simplePath.getValue()); - simplePath.setModification(new PathDeleteModification(5, 1)); + simplePath.setModifications(new PathDeleteModification(5, 1)); assertEquals("this/a/path", simplePath.getValue()); - simplePath.setModification(new PathDeleteModification(6, 1)); + simplePath.setModifications(new PathDeleteModification(6, 1)); assertEquals("this/is/path", simplePath.getValue()); - simplePath.setModification(new PathDeleteModification(11, 11)); + simplePath.setModifications(new PathDeleteModification(11, 11)); assertEquals("this/is/a", simplePath.getValue()); ModifiablePath simplePathTrailingSlash = new ModifiablePath("this/is/a/path/"); - simplePathTrailingSlash.setModification(new PathDeleteModification(0, 0)); + simplePathTrailingSlash.setModifications(new PathDeleteModification(0, 0)); assertEquals("this/is/a/path/", simplePathTrailingSlash.getValue()); - simplePathTrailingSlash.setModification(new PathDeleteModification(4, 4)); + simplePathTrailingSlash.setModifications(new PathDeleteModification(4, 4)); assertEquals("", simplePathTrailingSlash.getValue()); - simplePathTrailingSlash.setModification(new PathDeleteModification(4, 1)); + simplePathTrailingSlash.setModifications(new PathDeleteModification(4, 1)); assertEquals("is/a/path/", simplePathTrailingSlash.getValue()); - simplePathTrailingSlash.setModification(new PathDeleteModification(5, 1)); + simplePathTrailingSlash.setModifications(new PathDeleteModification(5, 1)); assertEquals("this/a/path/", simplePathTrailingSlash.getValue()); - simplePathTrailingSlash.setModification(new PathDeleteModification(6, 1)); + simplePathTrailingSlash.setModifications(new PathDeleteModification(6, 1)); assertEquals("this/is/path/", simplePathTrailingSlash.getValue()); - simplePathTrailingSlash.setModification(new PathDeleteModification(11, 11)); + simplePathTrailingSlash.setModifications(new PathDeleteModification(11, 11)); assertEquals("this/is/a/", simplePathTrailingSlash.getValue()); ModifiablePath rootPath = new ModifiablePath("/"); - rootPath.setModification(new PathDeleteModification(0, 0)); + rootPath.setModifications(new PathDeleteModification(0, 0)); assertEquals("/", rootPath.getValue()); - rootPath.setModification(new PathDeleteModification(2, 2)); + rootPath.setModifications(new PathDeleteModification(2, 2)); assertEquals("", rootPath.getValue()); - rootPath.setModification(new PathDeleteModification(5, 5)); + rootPath.setModifications(new PathDeleteModification(5, 5)); assertEquals("", rootPath.getValue()); } } diff --git a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathSerializationTest.java b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathSerializationTest.java index 4bb5a725a..3aeacc53b 100644 --- a/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathSerializationTest.java +++ b/SSH-Core/src/test/java/de/rub/nds/sshattacker/core/modifieablevariable/pth/PathSerializationTest.java @@ -55,7 +55,7 @@ public void setUp() throws JAXBException { @Test public void testSerializeDeserializeSimple() throws Exception { - start.setModification(null); + start.clearModifications(); start.setAssertEquals("Hello from Test 2 \\ \u0000 \u0001 \u0006"); m.marshal(start, writer); @@ -73,7 +73,7 @@ public void testSerializeDeserializeSimple() throws Exception { @Test public void testSerializeDeserializeWithModification() throws Exception { VariableModification modifier = PathModificationFactory.insertValue("Uff! ", 0); - start.setModification(modifier); + start.setModifications(modifier); m.marshal(start, writer); String xmlString = writer.toString(); From 1ff2dea26e130e113f99e2bdef387899cdec1e36 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Fri, 28 Feb 2025 15:38:15 +0100 Subject: [PATCH 173/203] Handle malformed SFTP messages, sent by the other side, a little bit better. --- .../nds/sshattacker/core/data/DataMessageLayer.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java index ee2bfdb36..ece10f20a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java @@ -7,6 +7,7 @@ */ package de.rub.nds.sshattacker.core.data; +import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.ChannelDataType; import de.rub.nds.sshattacker.core.constants.DataPacketLayerType; import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; @@ -78,6 +79,7 @@ public DataMessage parse(ChannelDataMessage message) { } Optional parsedPacket = parseResult.getParsedPacket(); if (parsedPacket.isPresent()) { + // Parse and return the message according to expected data type DataMessage resultMessage = switch (dataType) { case SUBSYSTEM_SFTP -> @@ -93,9 +95,15 @@ yield new UnknownDataMessageParser( .parse(); } }; - // Parse and return the message according to expected data type - if (resultMessage.getCompleteResultingMessage().getValue().length + // If the data message body was empty + if (resultMessage.getCompleteResultingMessage() == null) { + LOGGER.warn("Data in ChannelDataMessage is malformed and can not be parsed."); + LOGGER.debug( + "Malformed ChannelDataMessage data: {}", + () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); + resultMessage.setCompleteResultingMessage(message.getData().getValue()); + } else if (resultMessage.getCompleteResultingMessage().getValue().length < parsedPacket.get().getPayload().getValue().length) { // This usually means that we have not implemented the parser for the negotiated // SFTP version. From 561318bfd7b09636353538c6cacc3dae6c3b3054 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Fri, 28 Feb 2025 16:04:27 +0100 Subject: [PATCH 174/203] Do not return empty unknown SFTP message, instead parse malformed messages as Unknown Data message. Also set handleTimeoutOnReceiveAsIOException default to false, as it was before my changes. --- .../nds/sshattacker/core/config/Config.java | 2 +- .../core/data/DataMessageLayer.java | 45 ++++++++++--------- .../core/data/sftp/SftpMessageParser.java | 17 +++---- resources/configs/default_config.xml | 2 +- 4 files changed, 35 insertions(+), 31 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 6faf86e52..e1d211a6c 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -609,7 +609,7 @@ public class Config implements Serializable { * Exception. or not. TODO: This actually also includes real IO Exceptions. Changes must be done * to the TransportHandler */ - private Boolean handleTimeoutOnReceiveAsIOException = true; + private Boolean handleTimeoutOnReceiveAsIOException = false; /** Defines, whether the SSH-Attacker should stop after a IO exception or not */ private Boolean stopActionsAfterIOException = true; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java index ece10f20a..842fb8142 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java @@ -7,7 +7,6 @@ */ package de.rub.nds.sshattacker.core.data; -import de.rub.nds.modifiablevariable.util.ArrayConverter; import de.rub.nds.sshattacker.core.constants.ChannelDataType; import de.rub.nds.sshattacker.core.constants.DataPacketLayerType; import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; @@ -20,6 +19,7 @@ import de.rub.nds.sshattacker.core.data.string.StringDataMessageParser; import de.rub.nds.sshattacker.core.data.unknown.UnknownDataMessage; import de.rub.nds.sshattacker.core.data.unknown.UnknownDataMessageParser; +import de.rub.nds.sshattacker.core.exceptions.ParserException; import de.rub.nds.sshattacker.core.protocol.connection.Channel; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelDataMessage; import de.rub.nds.sshattacker.core.state.SshContext; @@ -80,30 +80,33 @@ public DataMessage parse(ChannelDataMessage message) { Optional parsedPacket = parseResult.getParsedPacket(); if (parsedPacket.isPresent()) { // Parse and return the message according to expected data type - DataMessage resultMessage = - switch (dataType) { - case SUBSYSTEM_SFTP -> - SftpMessageParser.delegateParsing(parsedPacket.get(), context); - case SHELL -> - new StringDataMessageParser( + DataMessage resultMessage; + try { + resultMessage = + switch (dataType) { + case SUBSYSTEM_SFTP -> + SftpMessageParser.delegateParsing(parsedPacket.get(), context); + case SHELL -> + new StringDataMessageParser( + parsedPacket.get().getPayload().getValue()) + .parse(); + default -> { + LOGGER.debug( + "No parser implemented for ChannelDataType: {}", dataType); + yield new UnknownDataMessageParser( parsedPacket.get().getPayload().getValue()) .parse(); - default -> { - LOGGER.debug("No parser implemented for ChannelDataType: {}", dataType); - yield new UnknownDataMessageParser( - parsedPacket.get().getPayload().getValue()) - .parse(); - } - }; + } + }; + } catch (ParserException ex) { + LOGGER.warn("{}. Parsing as UnknownDataMessage", ex::getMessage); + resultMessage = + new UnknownDataMessageParser(parsedPacket.get().getPayload().getValue()) + .parse(); + } // If the data message body was empty - if (resultMessage.getCompleteResultingMessage() == null) { - LOGGER.warn("Data in ChannelDataMessage is malformed and can not be parsed."); - LOGGER.debug( - "Malformed ChannelDataMessage data: {}", - () -> ArrayConverter.bytesToRawHexString(message.getData().getValue())); - resultMessage.setCompleteResultingMessage(message.getData().getValue()); - } else if (resultMessage.getCompleteResultingMessage().getValue().length + if (resultMessage.getCompleteResultingMessage().getValue().length < parsedPacket.get().getPayload().getValue().length) { // This usually means that we have not implemented the parser for the negotiated // SFTP version. diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java index 5ff566436..86957a20c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java @@ -10,7 +10,6 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; -import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpUnknownMessage; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExtendedMessage; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestUnknownMessage; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseUnknownMessage; @@ -70,7 +69,7 @@ public static SftpMessage delegateParsing(AbstractDataPacket packet, SshConte public static SftpMessage delegateParsingV3(AbstractDataPacket packet, SshContext context) { byte[] raw = packet.getPayload().getValue(); if (raw.length == 0) { - return new SftpUnknownMessage(); + throw new ParserException("There is no payload to parse as SFTP message"); } try { return switch (SftpPacketTypeConstant.fromId(raw[0])) { @@ -103,14 +102,15 @@ public static SftpMessage delegateParsingV3(AbstractDataPacket packet, SshCon case SSH_FXP_EXTENDED_REPLY -> handleExtendedResponseMessageParsing(raw, context); default -> { LOGGER.debug( - "Received unimplemented SFTP Message {} ({})", + "Received unimplemented SFTP Message {} ({}), parsing it as UnknownMessage", SftpPacketTypeConstant.getNameById(raw[0]), raw[0]); yield new SftpUnknownMessageParser(raw).parse(); } }; - } catch (ParserException e) { - LOGGER.debug("Error while Parsing, now parsing as UnknownMessage", e); + } catch (ParserException ex) { + LOGGER.warn("Error while Parsing: {}. Now parsing as UnknownMessage", ex::getMessage); + LOGGER.debug("Parser Error:", ex); return new SftpUnknownMessageParser(raw).parse(); } } @@ -118,7 +118,7 @@ public static SftpMessage delegateParsingV3(AbstractDataPacket packet, SshCon public static SftpMessage delegateParsingV4(AbstractDataPacket packet, SshContext context) { byte[] raw = packet.getPayload().getValue(); if (raw.length == 0) { - return new SftpUnknownMessage(); + throw new ParserException("There is no payload to parse as SFTP message"); } try { return switch (SftpPacketTypeConstant.fromId(raw[0])) { @@ -133,8 +133,9 @@ public static SftpMessage delegateParsingV4(AbstractDataPacket packet, SshCon case SSH_FXP_ATTRS -> new SftpV4ResponseAttributesMessageParser(raw).parse(); default -> delegateParsingV3(packet, context); }; - } catch (ParserException e) { - LOGGER.debug("Error while Parsing, now parsing as UnknownMessage", e); + } catch (ParserException ex) { + LOGGER.warn("Error while Parsing: {}. Now parsing as UnknownMessage", ex::getMessage); + LOGGER.debug("Parser Error:", ex); return new SftpUnknownMessageParser(raw).parse(); } } diff --git a/resources/configs/default_config.xml b/resources/configs/default_config.xml index 014fd187c..c4f3c20f7 100644 --- a/resources/configs/default_config.xml +++ b/resources/configs/default_config.xml @@ -366,7 +366,7 @@ true true true - true + false true true false From fcae97d6e054263d807494d39eb78319329ff4a0 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Fri, 28 Feb 2025 17:46:46 +0100 Subject: [PATCH 175/203] Make parsing errors a little bit more verbose. Add option that prevents dynamically generated actions to be added to the workflow trace. And make it default to not add them, because that is better at the moment for reproducibility. Also added a new dynamic action, that allows to reopen a channel. But I'm not currently using it, because I like the way it is because it is a little bit faster for fuzzing. --- .../nds/sshattacker/core/config/Config.java | 18 +++ .../core/data/DataMessageLayer.java | 1 + .../data/packet/layer/DataPacketLayer.java | 7 +- .../packet/layer/PassThroughPacketLayer.java | 6 +- .../core/packet/layer/BinaryPacketLayer.java | 6 +- .../core/packet/layer/BlobPacketLayer.java | 7 +- .../handler/ChannelCloseMessageHandler.java | 3 +- .../workflow/DefaultWorkflowExecutor.java | 4 +- .../action/DynamicReopenChannelAction.java | 132 ++++++++++++++++++ 9 files changed, 173 insertions(+), 11 deletions(-) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicReopenChannelAction.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index e1d211a6c..4c4540b85 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -654,6 +654,12 @@ public class Config implements Serializable { private Boolean allowDynamicGenerationOfActions = true; + /** + * Setting this to true will add dynamically generated Actions to the workflow trace. Warning: + * This can prevent successful re-execution of a workflow trace + */ + private Boolean addDynamicallyGeneratedActionsToWorkflowTrace = false; + // endregion // region ReceiveAction @@ -1543,6 +1549,8 @@ public Config(Config other) { retryFailedClientTcpSocketInitialization = other.retryFailedClientTcpSocketInitialization; stopTraceAfterUnexpected = other.stopTraceAfterUnexpected; allowDynamicGenerationOfActions = other.allowDynamicGenerationOfActions; + addDynamicallyGeneratedActionsToWorkflowTrace = + other.addDynamicallyGeneratedActionsToWorkflowTrace; quickReceive = other.quickReceive; endReceivingEarly = other.endReceivingEarly; receiveMaximumBytes = other.receiveMaximumBytes; @@ -2415,6 +2423,10 @@ public Boolean getAllowDynamicGenerationOfActions() { return allowDynamicGenerationOfActions; } + public Boolean getAddDynamicallyGeneratedActionsToWorkflowTrace() { + return addDynamicallyGeneratedActionsToWorkflowTrace; + } + // endregion // region Setters for Workflow settings @@ -2496,6 +2508,12 @@ public void setAllowDynamicGenerationOfActions(Boolean allowDynamicGenerationOfA this.allowDynamicGenerationOfActions = allowDynamicGenerationOfActions; } + public void setAddDynamicallyGeneratedActionsToWorkflowTrace( + Boolean addDynamicallyGeneratedActionsToWorkflowTrace) { + this.addDynamicallyGeneratedActionsToWorkflowTrace = + addDynamicallyGeneratedActionsToWorkflowTrace; + } + // endregion // region Getters for ReceiveAction diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java index 842fb8142..5743af507 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java @@ -118,6 +118,7 @@ yield new UnknownDataMessageParser( resultMessage.setChannelDataWrapper(message); return resultMessage; } + LOGGER.warn("Parsing as UnknownDataMessage"); UnknownDataMessage unknownResult = new UnknownDataMessageParser(message.getData().getValue()).parse(); unknownResult.setChannelDataWrapper(message); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayer.java index 55ea900b9..8d52f603f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayer.java @@ -38,8 +38,11 @@ public DataPacketLayerParseResult parsePacket(byte[] rawBytes, int startPosition public DataPacketLayerParseResult parsePacketSoftly(byte[] rawBytes, int startPosition) { try { return parsePacket(rawBytes, startPosition); - } catch (ParserException e) { - LOGGER.warn("Could not parse provided data as data packet, dropping remaining bytes"); + } catch (ParserException ex) { + LOGGER.warn( + "Could not parse provided data as data packet, dropping remaining {} bytes", + rawBytes.length - startPosition); + LOGGER.debug("ParserException", ex); return new DataPacketLayerParseResult(null, rawBytes.length - startPosition, true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/PassThroughPacketLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/PassThroughPacketLayer.java index 39546b8b1..ab83f0b21 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/PassThroughPacketLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/PassThroughPacketLayer.java @@ -38,9 +38,11 @@ public DataPacketLayerParseResult parsePacket(byte[] rawBytes, int startPosition public DataPacketLayerParseResult parsePacketSoftly(byte[] rawBytes, int startPosition) { try { return parsePacket(rawBytes, startPosition); - } catch (ParserException e) { + } catch (ParserException ex) { LOGGER.warn( - "Could not parse provided data as pass-through packet, dropping remaining bytes"); + "Could not parse provided data as pass-through packet, dropping remaining {} bytes", + rawBytes.length - startPosition); + LOGGER.debug("ParserException", ex); return new DataPacketLayerParseResult(null, rawBytes.length - startPosition, true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BinaryPacketLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BinaryPacketLayer.java index 1fd83b46f..ebce1905b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BinaryPacketLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BinaryPacketLayer.java @@ -70,8 +70,10 @@ public PacketLayerParseResult parsePacketSoftly(byte[] rawBytes, int startPositi return new PacketLayerParseResult( packet, parser.getPointer() - startPosition, true); } catch (ParserException | DecryptionException | DecompressionException ex) { - LOGGER.warn("Could not parse data as blob packet, dropping remaining bytes"); - LOGGER.trace(ex); + LOGGER.warn( + "Could not parse data as blob packet, dropping remaining {} bytes", + rawBytes.length - startPosition); + LOGGER.trace("ParserException", ex); return new PacketLayerParseResult(null, rawBytes.length - startPosition, true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BlobPacketLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BlobPacketLayer.java index 9ad43a635..5d5906b03 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BlobPacketLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/layer/BlobPacketLayer.java @@ -46,8 +46,11 @@ public PacketLayerParseResult parsePacketSoftly(byte[] rawBytes, int startPositi decryptPacket(packet); decompressPacket(packet); return new PacketLayerParseResult(packet, parser.getPointer() - startPosition, true); - } catch (ParserException | DecryptionException | DecompressionException e) { - LOGGER.warn("Could not parse provided data as blob packet, dropping remaining bytes"); + } catch (ParserException | DecryptionException | DecompressionException ex) { + LOGGER.warn( + "Could not parse provided data as blob packet, dropping remaining {} bytes", + rawBytes.length - startPosition); + LOGGER.debug("ParserException", ex); return new PacketLayerParseResult(null, rawBytes.length - startPosition, true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java index 46fc3344e..165127af6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelCloseMessageHandler.java @@ -74,9 +74,8 @@ private static boolean generateDynamicActions(SshContext context, Channel channe && config.getDefaultRunningMode() == RunningModeType.CLIENT) { // Generate actions to close the channel and reopen it. - String connectionAlias = config.getDefaultClientConnection().getAlias(); + String connectionAlias = context.getConnection().getAlias(); if (channel.getChannelType() == ChannelType.SESSION) { - context.addDynamicGeneratedAction( new SendAction( connectionAlias, diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/DefaultWorkflowExecutor.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/DefaultWorkflowExecutor.java index b40967050..2014b6ec8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/DefaultWorkflowExecutor.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/DefaultWorkflowExecutor.java @@ -116,7 +116,9 @@ private void executeDynamicGeneratedActions(ListIterator iterator) { try { executeAction(dynamicAction, state); - iterator.add(dynamicAction); + if (config.getAddDynamicallyGeneratedActionsToWorkflowTrace()) { + iterator.add(dynamicAction); + } } catch (SkipActionException ex) { LOGGER.debug("Dynamic generated action was not executed."); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicReopenChannelAction.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicReopenChannelAction.java new file mode 100644 index 000000000..456d4332f --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/DynamicReopenChannelAction.java @@ -0,0 +1,132 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2023 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.workflow.action; + +import de.rub.nds.sshattacker.core.constants.ChannelDataType; +import de.rub.nds.sshattacker.core.constants.ChannelType; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpInitMessage; +import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpVersionMessage; +import de.rub.nds.sshattacker.core.exceptions.WorkflowExecutionException; +import de.rub.nds.sshattacker.core.protocol.connection.Channel; +import de.rub.nds.sshattacker.core.protocol.connection.message.*; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.state.State; +import de.rub.nds.sshattacker.core.workflow.factory.SshActionFactory; +import de.rub.nds.tlsattacker.transport.ConnectionEndType; +import jakarta.xml.bind.annotation.XmlAttribute; + +public class DynamicReopenChannelAction extends DynamicMessageAction { + + @XmlAttribute(name = "localChannel") + protected Integer localChannelId; + + public DynamicReopenChannelAction() { + super(); + } + + public DynamicReopenChannelAction(String connectionAlias) { + super(connectionAlias); + } + + public DynamicReopenChannelAction(int localChannelId) { + super(); + this.localChannelId = localChannelId; + } + + public DynamicReopenChannelAction(int localChannelId, String connectionAlias) { + super(connectionAlias); + this.localChannelId = localChannelId; + } + + public DynamicReopenChannelAction(DynamicReopenChannelAction other) { + super(other); + localChannelId = other.localChannelId; + } + + @Override + public DynamicReopenChannelAction createCopy() { + return new DynamicReopenChannelAction(this); + } + + @Override + public void execute(State state) throws WorkflowExecutionException { + if (isExecuted()) { + throw new WorkflowExecutionException("Action already executed!"); + } + + SshContext context = state.getSshContext(); + + int forLocalChannelId = + localChannelId != null + ? localChannelId + : context.getConfig().getChannelDefaults().getLocalChannelId(); + + // check whether the channel needs to be reopened + // this check should prevent that the channel will be closed if the channel is still open + Channel channelToReopen = + context.getChannelManager().getChannelByLocalId(forLocalChannelId); + if (channelToReopen != null + && channelToReopen.getCloseMessageReceived().getValue() + && channelToReopen.getChannelType() == ChannelType.SESSION) { + if (context.isClient()) { + // send reopen messages acting as client + sshActions.add( + SshActionFactory.createMessageAction( + context.getConnection(), + ConnectionEndType.CLIENT, + new ChannelCloseMessage(forLocalChannelId), + new ChannelOpenSessionMessage(forLocalChannelId))); + sshActions.add( + SshActionFactory.createMessageAction( + context.getConnection(), + ConnectionEndType.SERVER, + new ChannelOpenConfirmationMessage())); + + if (channelToReopen.getExpectedDataType() == ChannelDataType.SUBSYSTEM_SFTP) { + sshActions.add( + SshActionFactory.createMessageAction( + context.getConnection(), + ConnectionEndType.CLIENT, + new ChannelRequestSubsystemMessage())); + sshActions.add( + SshActionFactory.createMessageAction( + context.getConnection(), + ConnectionEndType.SERVER, + new ChannelSuccessMessage())); + + sshActions.add( + SshActionFactory.createMessageAction( + context.getConnection(), + ConnectionEndType.CLIENT, + new SftpInitMessage())); + sshActions.add( + SshActionFactory.createMessageAction( + context.getConnection(), + ConnectionEndType.SERVER, + new SftpVersionMessage())); + } + } else { + // send reopen messages acting as server + sshActions.add( + SshActionFactory.createMessageAction( + context.getConnection(), + ConnectionEndType.SERVER, + new ChannelCloseMessage(forLocalChannelId), + new ChannelOpenSessionMessage(forLocalChannelId))); + sshActions.add( + SshActionFactory.createMessageAction( + context.getConnection(), + ConnectionEndType.CLIENT, + new ChannelOpenConfirmationMessage())); + } + sshActions.forEach(sshAction -> sshAction.execute(state)); + } + + setExecuted(true); + } +} From 330f26b030558abfc582025923e22ae439921879 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Fri, 28 Feb 2025 20:25:08 +0100 Subject: [PATCH 176/203] Add comment about length field in Data packets --- .../sshattacker/core/data/packet/parser/DataPacketParser.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java index cff922192..317dc66c8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java @@ -24,6 +24,8 @@ public DataPacket parse() { LOGGER.debug("Parsing DataPacket from serialized bytes:"); DataPacket packet = new DataPacket(); packet.setLength(parseIntField()); + // Some SFTP servers actually calculate the length sometimes wrong, we could handle this by + // not relaying on the length field but parse the packet to the end instead packet.setPayload(parseByteArrayField(packet.getLength().getValue())); return packet; } From 62e12f3107d7a31d69c26a84651aeaf23398f8bf Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Fri, 28 Feb 2025 23:12:41 +0100 Subject: [PATCH 177/203] Change comment to todo --- .../core/data/packet/parser/DataPacketParser.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java index 317dc66c8..daf6f50ae 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/parser/DataPacketParser.java @@ -24,8 +24,11 @@ public DataPacket parse() { LOGGER.debug("Parsing DataPacket from serialized bytes:"); DataPacket packet = new DataPacket(); packet.setLength(parseIntField()); - // Some SFTP servers actually calculate the length sometimes wrong, we could handle this by - // not relaying on the length field but parse the packet to the end instead + // TODO: Some SFTP servers split SFTP messages across multiple ChannelDataMessages. + // To handle such SFTP messages we would need a redesign or handle them in a hacky way. + // Maybe it would work to handle channel data as an own data stram and create a channel + // receive action for it. But hopefully the layer implementations from PR 316 solves the + // problem. packet.setPayload(parseByteArrayField(packet.getLength().getValue())); return packet; } From 3b9ebc48f07008a236ed30ce4c90061026683be3 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sun, 2 Mar 2025 14:16:36 +0100 Subject: [PATCH 178/203] Use getSocketState() to actually check the socket state after receiving no message. I was not sure if the method really does what I want, else I would have used it before. --- .../nds/sshattacker/core/config/Config.java | 3 +-- .../action/executor/ReceiveMessageHelper.java | 22 ++++++++++++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java index 4c4540b85..e74fd0f76 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/config/Config.java @@ -606,8 +606,7 @@ public class Config implements Serializable { /** * Defines, whether the SSH attacker should treat a timeout when receiving messages like an IO - * Exception. or not. TODO: This actually also includes real IO Exceptions. Changes must be done - * to the TransportHandler + * Exception. or not. */ private Boolean handleTimeoutOnReceiveAsIOException = false; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java index 2955717a5..107ee5c17 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java @@ -18,6 +18,8 @@ import de.rub.nds.sshattacker.core.protocol.transport.message.DisconnectMessage; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.tlsattacker.transport.TransportHandler; +import de.rub.nds.tlsattacker.transport.socket.SocketState; +import de.rub.nds.tlsattacker.transport.tcp.TcpTransportHandler; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.ArrayList; @@ -91,12 +93,20 @@ public static MessageActionResult receiveMessages( } if (result.countMessages() == 0) { // Timeout exceptions and IO exceptions are caught in the fetchData method of the - // transport handler. So we can not be sure what happened. - LOGGER.warn("Received no message. Socket timed out or an IOException happened"); - // TODO: Change TransportHandler so that we can get cachedSocketState or the exception - // that was thrown. - if (config.getHandleTimeoutOnReceiveAsIOException()) { - context.setReceivedTransportHandlerException(true); + // transport handler. So we can not be sure what happened. We have to check the socket + // state. + if (context.getTransportHandler() instanceof TcpTransportHandler transportHandler) { + SocketState socketState = transportHandler.getSocketState(); + if (socketState == SocketState.SOCKET_EXCEPTION + || socketState == SocketState.IO_EXCEPTION + || socketState == SocketState.UNAVAILABLE + || socketState == SocketState.CLOSED) { + LOGGER.warn("Received no message. Socket Exception happened"); + context.setReceivedTransportHandlerException(true); + } else if (config.getHandleTimeoutOnReceiveAsIOException()) { + LOGGER.warn("Received no message. Socket timed out!"); + context.setReceivedTransportHandlerException(true); + } } } return result; From dee8533970c3970a174414e08456f1e2686eed2e Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 3 Mar 2025 14:04:34 +0100 Subject: [PATCH 179/203] Print verbose parsing errors as warning only for implemented sftp versions. --- .../core/data/sftp/SftpMessageParser.java | 31 ++++++++++++++++--- .../core/protocol/common/Parser.java | 14 ++++----- .../core/workflow/chooser/Chooser.java | 2 +- .../core/workflow/chooser/DefaultChooser.java | 2 +- 4 files changed, 35 insertions(+), 14 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java index 86957a20c..c27a903b7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java @@ -56,9 +56,7 @@ private void parsePacketType() { } public static SftpMessage delegateParsing(AbstractDataPacket packet, SshContext context) { - int sftpVersion = - context.getSftpNegotiatedVersion() - .orElse(context.getConfig().getSftpNegotiatedVersion()); + int sftpVersion = context.getChooser().getSftpNegotiatedVersion(); if (sftpVersion >= 4) { return delegateParsingV4(packet, context); } else { @@ -109,7 +107,19 @@ public static SftpMessage delegateParsingV3(AbstractDataPacket packet, SshCon } }; } catch (ParserException ex) { - LOGGER.warn("Error while Parsing: {}. Now parsing as UnknownMessage", ex::getMessage); + int sftpVersion = context.getChooser().getSftpNegotiatedVersion(); + if (sftpVersion >= 3 && sftpVersion <= 4) { + LOGGER.warn( + "Error while parsing {} v3 / common: {}. Now parsing as SftpUnknownMessage", + () -> SftpPacketTypeConstant.fromId(raw[0]).toString(), + ex::getMessage); + } else { + // It is expected to fail parsing if version 3 or 4 was not negotiated + LOGGER.debug( + "Error while parsing {} v3 / common: {}. Now parsing as SftpUnknownMessage", + () -> SftpPacketTypeConstant.fromId(raw[0]).toString(), + ex::getMessage); + } LOGGER.debug("Parser Error:", ex); return new SftpUnknownMessageParser(raw).parse(); } @@ -134,7 +144,18 @@ public static SftpMessage delegateParsingV4(AbstractDataPacket packet, SshCon default -> delegateParsingV3(packet, context); }; } catch (ParserException ex) { - LOGGER.warn("Error while Parsing: {}. Now parsing as UnknownMessage", ex::getMessage); + if (context.getChooser().getSftpNegotiatedVersion() == 4) { + LOGGER.warn( + "Error while parsing {} v4: {}. Now parsing as SftpUnknownMessage", + () -> SftpPacketTypeConstant.fromId(raw[0]).toString(), + ex::getMessage); + } else { + // It is expected to fail parsing if version 4 was not negotiated + LOGGER.debug( + "Error while parsing {} v4: {}. Now parsing as SftpUnknownMessage", + () -> SftpPacketTypeConstant.fromId(raw[0]).toString(), + ex::getMessage); + } LOGGER.debug("Parser Error:", ex); return new SftpUnknownMessageParser(raw).parse(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/Parser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/Parser.java index 3e45b438f..b3dc65159 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/Parser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/Parser.java @@ -58,9 +58,9 @@ protected Parser(byte[] array, int startPosition) { this.array = array; if (startPosition > array.length) { throw new ParserException( - "Cannot creater parser beyond pointer. Pointer:" + "Cannot creater parser beyond total array Length. Wanted pointer: " + pointer - + " ArrayLength:" + + ", Total array Length :" + array.length); } } @@ -82,11 +82,11 @@ protected byte[] parseByteArrayField(int length) { int nextPointer = pointer + length; if (!enoughBytesLeft(length)) { throw new ParserException( - "Parsing over the end of the array. Current Pointer:" + "Parsing over the end of the array. Current pointer: " + pointer - + " ToParse Length:" + + ", Length of parsing field: " + length - + " ArrayLength:" + + ", Total array Length: " + array.length); } byte[] result = Arrays.copyOfRange(array, pointer, nextPointer); @@ -151,7 +151,7 @@ protected long parseLongField() { */ protected BigInteger parseBigIntField(int length) { if (length == 0) { - throw new ParserException("Cannot parse BigInt of size 0"); + throw new ParserException("Cannot parse big int of size 0"); } return new BigInteger(1, parseByteArrayField(length)); } @@ -258,7 +258,7 @@ protected byte peek() { if (pointer < array.length) { return array[pointer]; } else { - throw new ParserException("Cannot peek, would peek over the end ot the array"); + throw new ParserException("Cannot peek, would peek over the end of the array"); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java index 7fb2c6a15..589dfa879 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/Chooser.java @@ -268,7 +268,7 @@ public CompressionMethod getReceiveCompressionMethod() { public abstract Integer getSftpServerVersion(); - public abstract Integer getSftpNegotiatedVersion(boolean forParsing); + public abstract Integer getSftpNegotiatedVersion(); // endregion diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java index 34ea1f903..0778ec92d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/chooser/DefaultChooser.java @@ -1090,7 +1090,7 @@ public Integer getSftpServerVersion() { * @return The SFTP negotiated protocol version */ @Override - public Integer getSftpNegotiatedVersion(boolean forParsing) { + public Integer getSftpNegotiatedVersion() { return context.getSftpNegotiatedVersion().orElse(config.getSftpNegotiatedVersion()); } From 37a563ca71bc4978579268db2a600c6613a52b87 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 3 Mar 2025 14:35:53 +0100 Subject: [PATCH 180/203] Small fix for SftpV4FileAttributesParser --- .../holder/SftpV4FileAttributesParser.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/holder/SftpV4FileAttributesParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/holder/SftpV4FileAttributesParser.java index da22a1c7c..fefee68dd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/holder/SftpV4FileAttributesParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/parser/holder/SftpV4FileAttributesParser.java @@ -114,19 +114,21 @@ private void parseAcl() { attributes.setAclLength(aclLength); LOGGER.debug("AclLength: {}", aclLength); - int aclEntriesCount = parseIntField(); - attributes.setAclEntriesCount(aclEntriesCount); - LOGGER.debug("setAclEntriesCount: {}", aclEntriesCount); + if (aclLength >= 4) { + int aclEntriesCount = parseIntField(); + attributes.setAclEntriesCount(aclEntriesCount); + LOGGER.debug("setAclEntriesCount: {}", aclEntriesCount); - for (int aclEntryIdx = 0, aclEntryStartPointer = getPointer(); - aclEntryIdx < aclEntriesCount; - aclEntryIdx++, aclEntryStartPointer = getPointer()) { + for (int aclEntryIdx = 0, aclEntryStartPointer = getPointer(); + aclEntryIdx < aclEntriesCount; + aclEntryIdx++, aclEntryStartPointer = getPointer()) { - SftpAclEntryParser aclEntryParser = - new SftpAclEntryParser(getArray(), aclEntryStartPointer); + SftpAclEntryParser aclEntryParser = + new SftpAclEntryParser(getArray(), aclEntryStartPointer); - attributes.addAclEntry(aclEntryParser.parse()); - setPointer(aclEntryParser.getPointer()); + attributes.addAclEntry(aclEntryParser.parse()); + setPointer(aclEntryParser.getPointer()); + } } } From 05327e167206e0bac48fccd91305daf3833ffba2 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 5 Mar 2025 09:02:53 +0100 Subject: [PATCH 181/203] Add option to configure a specific handle from the maintained list, instead of using only random handles from the maintained list. --- .../core/data/sftp/SftpManager.java | 37 +++++++++++++++---- .../SftpRequestCopyDataMessage.java | 13 +++++++ .../SftpRequestExtendedWithHandleMessage.java | 13 +++++++ .../request/SftpRequestWithHandleMessage.java | 13 +++++++ .../response/SftpResponseHandleMessage.java | 13 +++++++ ...questCheckFileHandleMessagePreparator.java | 4 +- .../SftpRequestCopyDataMessagePreparator.java | 10 ++++- ...tpRequestFileStatVfsMessagePreparator.java | 6 ++- .../SftpRequestFileSyncMessagePreparator.java | 4 +- .../SftpRequestTextSeekMessagePreparator.java | 4 +- .../SftpRequestCloseMessagePreparator.java | 6 ++- ...tpRequestFileSetStatMessagePreparator.java | 6 ++- .../SftpRequestFileStatMessagePreparator.java | 6 ++- .../SftpRequestReadDirMessagePreparator.java | 6 ++- .../SftpRequestReadMessagePreparator.java | 4 +- .../SftpRequestWriteMessagePreparator.java | 4 +- ...V4RequestFileSetStatMessagePreparator.java | 6 ++- ...ftpV4RequestFileStatMessagePreparator.java | 6 ++- 18 files changed, 140 insertions(+), 21 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java index 497294bef..461b3fbc4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java @@ -198,49 +198,72 @@ private byte[] createDirectoryHandle() { } /** - * Return a random valid handle for a directory. + * Return a known valid directory handle that has the specified index in the maintained list. + * The specified index is always calculated modulo the list size. + * + *

If index is null, return a random valid directory handle instead * *

If there are no valid handles, return an invalid random handle. * * @return handle */ - public byte[] getDirectoryHandle() { + public byte[] getDirectoryHandle(Integer index) { if (!openDirectoryHandles.isEmpty()) { + if (index != null) { + return openDirectoryHandles.get(index % openDirectoryHandles.size()); + } return openDirectoryHandles.get(random.nextInt(openDirectoryHandles.size())); } + LOGGER.debug("No directory handle availible, creating an invalid random handle"); return getRandomHandle(); } /** - * Return a random valid handle for a file. + * Return a known valid file handle that has the specified index in the maintained list. The + * specified index is always calculated modulo the list size. + * + *

If index is null, return a random valid file handle instead * *

If there are no valid handles, return an invalid random handle. * * @return handle */ - public byte[] getFileHandle() { + public byte[] getFileHandle(Integer index) { if (!openFileHandles.isEmpty()) { + if (index != null) { + return openDirectoryHandles.get(index % openFileHandles.size()); + } return openFileHandles.get(random.nextInt(openFileHandles.size())); } + LOGGER.debug("No file handle availible, creating an invalid random handle"); return getRandomHandle(); } /** - * Return a random valid handle for a file or a directory. + * Return a known valid file or directory handle that has the specified index in the maintained + * list. The specified index is always calculated modulo the combined list size. + * + *

If index is null, return a random valid file or directory handle instead * *

If there are no valid handles, return an invalid random handle. * * @return handle */ - public byte[] getFileOrDirectoryHandle() { + public byte[] getFileOrDirectoryHandle(Integer index) { if (!openFileHandles.isEmpty() || !openDirectoryHandles.isEmpty()) { - int resultIdx = random.nextInt(openFileHandles.size() + openDirectoryHandles.size()); + int resultIdx; + if (index != null) { + resultIdx = index % (openFileHandles.size() + openDirectoryHandles.size()); + } else { + resultIdx = random.nextInt(openFileHandles.size() + openDirectoryHandles.size()); + } if (resultIdx >= openFileHandles.size()) { resultIdx -= openFileHandles.size(); return openDirectoryHandles.get(resultIdx); } return openFileHandles.get(resultIdx); } + LOGGER.debug("No handle availible, creating an invalid random handle"); return getRandomHandle(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCopyDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCopyDataMessage.java index ed328ef48..0bc5b9f4e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCopyDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCopyDataMessage.java @@ -14,6 +14,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.extended_request.SftpRequestCopyDataMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import jakarta.xml.bind.annotation.XmlAttribute; public class SftpRequestCopyDataMessage extends SftpRequestExtendedWithHandleMessage { @@ -26,6 +27,9 @@ public class SftpRequestCopyDataMessage private ModifiableByteArray writeToHandle; private ModifiableLong writeToOffset; + @XmlAttribute(name = "writeToHandleIndex") + private Integer configWriteToHandleIndex; + public SftpRequestCopyDataMessage() { super(); } @@ -38,6 +42,7 @@ public SftpRequestCopyDataMessage(SftpRequestCopyDataMessage other) { other.writeToHandleLength != null ? other.writeToHandleLength.createCopy() : null; writeToHandle = other.writeToHandle != null ? other.writeToHandle.createCopy() : null; writeToOffset = other.writeToOffset != null ? other.writeToOffset.createCopy() : null; + configWriteToHandleIndex = other.configWriteToHandleIndex; } @Override @@ -125,6 +130,14 @@ public void setWriteToOffset(long writeToOffset) { ModifiableVariableFactory.safelySetValue(this.writeToOffset, writeToOffset); } + public Integer getConfigWriteToHandleIndex() { + return configWriteToHandleIndex; + } + + public void setConfigWriteToHandleIndex(Integer configWriteToHandleIndex) { + this.configWriteToHandleIndex = configWriteToHandleIndex; + } + public static final SftpRequestCopyDataMessageHandler HANDLER = new SftpRequestCopyDataMessageHandler(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExtendedWithHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExtendedWithHandleMessage.java index 60a2e090d..c155b7914 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExtendedWithHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestExtendedWithHandleMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import jakarta.xml.bind.annotation.XmlAttribute; public abstract class SftpRequestExtendedWithHandleMessage< T extends SftpRequestExtendedWithHandleMessage> @@ -18,6 +19,9 @@ public abstract class SftpRequestExtendedWithHandleMessage< private ModifiableInteger handleLength; private ModifiableByteArray handle; + @XmlAttribute(name = "handleIndex") + protected Integer configHandleIndex; + protected SftpRequestExtendedWithHandleMessage() { super(); } @@ -26,6 +30,7 @@ protected SftpRequestExtendedWithHandleMessage(SftpRequestExtendedWithHandleMess super(other); handleLength = other.handleLength != null ? other.handleLength.createCopy() : null; handle = other.handle != null ? other.handle.createCopy() : null; + configHandleIndex = other.configHandleIndex; } @Override @@ -69,4 +74,12 @@ public void setHandle(byte[] handle, boolean adjustLengthField) { setHandleLength(this.handle.getValue().length); } } + + public Integer getConfigHandleIndex() { + return configHandleIndex; + } + + public void setConfigHandleIndex(Integer configHandleIndex) { + this.configHandleIndex = configHandleIndex; + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWithHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWithHandleMessage.java index 5c5a12d14..a1618711d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWithHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWithHandleMessage.java @@ -10,6 +10,7 @@ import de.rub.nds.modifiablevariable.ModifiableVariableFactory; import de.rub.nds.modifiablevariable.bytearray.ModifiableByteArray; import de.rub.nds.modifiablevariable.integer.ModifiableInteger; +import jakarta.xml.bind.annotation.XmlAttribute; public abstract class SftpRequestWithHandleMessage> extends SftpRequestMessage { @@ -17,6 +18,9 @@ public abstract class SftpRequestWithHandleMessage other) { super(other); handle = other.handle != null ? other.handle.createCopy() : null; handleLength = other.handleLength != null ? other.handleLength.createCopy() : null; + configHandleIndex = other.configHandleIndex; } @Override @@ -68,4 +73,12 @@ public void setHandle(byte[] handle, boolean adjustLengthField) { setHandleLength(this.handle.getValue().length); } } + + public Integer getConfigHandleIndex() { + return configHandleIndex; + } + + public void setConfigHandleIndex(Integer configHandleIndex) { + this.configHandleIndex = configHandleIndex; + } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseHandleMessage.java index eb3b2b9de..a8668a374 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/response/SftpResponseHandleMessage.java @@ -13,12 +13,16 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseHandleMessageHandler; import de.rub.nds.sshattacker.core.state.SshContext; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; +import jakarta.xml.bind.annotation.XmlAttribute; public class SftpResponseHandleMessage extends SftpResponseMessage { private ModifiableInteger handleLength; private ModifiableByteArray handle; + @XmlAttribute(name = "handleIndex") + private Integer configHandleIndex; + public SftpResponseHandleMessage() { super(); } @@ -27,6 +31,7 @@ public SftpResponseHandleMessage(SftpResponseHandleMessage other) { super(other); handleLength = other.handleLength != null ? other.handleLength.createCopy() : null; handle = other.handle != null ? other.handle.createCopy() : null; + configHandleIndex = other.configHandleIndex; } @Override @@ -73,6 +78,14 @@ public void setHandle(byte[] handle, boolean adjustLengthField) { } } + public Integer getConfigHandleIndex() { + return configHandleIndex; + } + + public void setConfigHandleIndex(Integer configHandleIndex) { + this.configHandleIndex = configHandleIndex; + } + public static final SftpResponseHandleMessageHandler HANDLER = new SftpResponseHandleMessageHandler(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java index 8ebf599fc..dafc34256 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java @@ -23,7 +23,9 @@ public SftpRequestCheckFileHandleMessagePreparator() { @Override public void prepareRequestExtendedSpecificContents( SftpRequestCheckFileHandleMessage object, Chooser chooser) { - object.setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); + object.setHandle( + chooser.getContext().getSftpManager().getFileHandle(object.getConfigHandleIndex()), + true); object.setHashAlgorithms(List.of(HashAlgorithm.MD5, HashAlgorithm.SHA_1), true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java index 40328e8c9..a29f82386 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java @@ -21,13 +21,19 @@ public SftpRequestCopyDataMessagePreparator() { @Override public void prepareRequestExtendedSpecificContents( SftpRequestCopyDataMessage object, Chooser chooser) { - object.setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); + object.setHandle( + chooser.getContext().getSftpManager().getFileHandle(object.getConfigHandleIndex()), + true); object.setReadFromOffset(0); object.setReadDataLength(1000000); - object.setWriteToHandle(chooser.getContext().getSftpManager().getFileHandle(), true); + object.setWriteToHandle( + chooser.getContext() + .getSftpManager() + .getFileHandle(object.getConfigWriteToHandleIndex()), + true); object.setWriteToOffset(0); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java index a7cf1f8f6..f540ef5e3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java @@ -21,6 +21,10 @@ public SftpRequestFileStatVfsMessagePreparator() { @Override public void prepareRequestExtendedSpecificContents( SftpRequestFileStatVfsMessage object, Chooser chooser) { - object.setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); + object.setHandle( + chooser.getContext() + .getSftpManager() + .getFileOrDirectoryHandle(object.getConfigHandleIndex()), + true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java index 79d1f8771..cad062e70 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java @@ -21,6 +21,8 @@ public SftpRequestFileSyncMessagePreparator() { @Override public void prepareRequestExtendedSpecificContents( SftpRequestFileSyncMessage object, Chooser chooser) { - object.setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); + object.setHandle( + chooser.getContext().getSftpManager().getFileHandle(object.getConfigHandleIndex()), + true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java index ddff96796..1bf354dc3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java @@ -21,7 +21,9 @@ public SftpRequestTextSeekMessagePreparator() { @Override public void prepareRequestExtendedSpecificContents( SftpRequestTextSeekMessage object, Chooser chooser) { - object.setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); + object.setHandle( + chooser.getContext().getSftpManager().getFileHandle(object.getConfigHandleIndex()), + true); object.setLineNumber(0); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestCloseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestCloseMessagePreparator.java index e59e5622e..53ef83c8a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestCloseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestCloseMessagePreparator.java @@ -20,6 +20,10 @@ public SftpRequestCloseMessagePreparator() { @Override public void prepareRequestSpecificContents(SftpRequestCloseMessage object, Chooser chooser) { - object.setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); + object.setHandle( + chooser.getContext() + .getSftpManager() + .getFileOrDirectoryHandle(object.getConfigHandleIndex()), + true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileSetStatMessagePreparator.java index 302a5a373..e3eacb0c7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileSetStatMessagePreparator.java @@ -21,7 +21,11 @@ public SftpRequestFileSetStatMessagePreparator() { @Override public void prepareRequestSpecificContents( SftpRequestFileSetStatMessage object, Chooser chooser) { - object.setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); + object.setHandle( + chooser.getContext() + .getSftpManager() + .getFileOrDirectoryHandle(object.getConfigHandleIndex()), + true); object.getAttributes().prepare(chooser); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileStatMessagePreparator.java index d36cb53eb..e75cb35a6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileStatMessagePreparator.java @@ -20,6 +20,10 @@ public SftpRequestFileStatMessagePreparator() { @Override public void prepareRequestSpecificContents(SftpRequestFileStatMessage object, Chooser chooser) { - object.setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); + object.setHandle( + chooser.getContext() + .getSftpManager() + .getFileOrDirectoryHandle(object.getConfigHandleIndex()), + true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadDirMessagePreparator.java index 354e16843..03ebbeabe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadDirMessagePreparator.java @@ -20,6 +20,10 @@ public SftpRequestReadDirMessagePreparator() { @Override public void prepareRequestSpecificContents(SftpRequestReadDirMessage object, Chooser chooser) { - object.setHandle(chooser.getContext().getSftpManager().getDirectoryHandle(), true); + object.setHandle( + chooser.getContext() + .getSftpManager() + .getDirectoryHandle(object.getConfigHandleIndex()), + true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadMessagePreparator.java index dfa01a322..e1d51675d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadMessagePreparator.java @@ -20,7 +20,9 @@ public SftpRequestReadMessagePreparator() { @Override public void prepareRequestSpecificContents(SftpRequestReadMessage object, Chooser chooser) { - object.setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); + object.setHandle( + chooser.getContext().getSftpManager().getFileHandle(object.getConfigHandleIndex()), + true); object.setOffset(0); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestWriteMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestWriteMessagePreparator.java index 23b672d22..fa3734843 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestWriteMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestWriteMessagePreparator.java @@ -20,7 +20,9 @@ public SftpRequestWriteMessagePreparator() { @Override public void prepareRequestSpecificContents(SftpRequestWriteMessage object, Chooser chooser) { - object.setHandle(chooser.getContext().getSftpManager().getFileHandle(), true); + object.setHandle( + chooser.getContext().getSftpManager().getFileHandle(object.getConfigHandleIndex()), + true); object.setOffset(0); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileSetStatMessagePreparator.java index d7aef2fe0..ca65dafa7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileSetStatMessagePreparator.java @@ -22,7 +22,11 @@ public SftpV4RequestFileSetStatMessagePreparator() { @Override public void prepareRequestSpecificContents( SftpV4RequestFileSetStatMessage object, Chooser chooser) { - object.setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); + object.setHandle( + chooser.getContext() + .getSftpManager() + .getFileOrDirectoryHandle(object.getConfigHandleIndex()), + true); object.getAttributes().prepare(chooser); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileStatMessagePreparator.java index ed2956dff..3172e62a6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileStatMessagePreparator.java @@ -23,7 +23,11 @@ public SftpV4RequestFileStatMessagePreparator() { @Override public void prepareRequestSpecificContents( SftpV4RequestFileStatMessage object, Chooser chooser) { - object.setHandle(chooser.getContext().getSftpManager().getFileOrDirectoryHandle(), true); + object.setHandle( + chooser.getContext() + .getSftpManager() + .getFileOrDirectoryHandle(object.getConfigHandleIndex()), + true); object.setFlags(SftpFileAttributeFlag.SSH_FILEXFER_ATTR_SIZE); } } From e85fda18471814c6331de00d49af052bb216dc26 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 5 Mar 2025 09:40:44 +0100 Subject: [PATCH 182/203] Add some simple constructors to messages with handle, so that configured handle index can be set easier. --- .../extended_request/SftpRequestCheckFileHandleMessage.java | 5 +++++ .../extended_request/SftpRequestCopyDataMessage.java | 6 ++++++ .../extended_request/SftpRequestFileStatVfsMessage.java | 5 +++++ .../extended_request/SftpRequestFileSyncMessage.java | 5 +++++ .../extended_request/SftpRequestTextSeekMessage.java | 5 +++++ .../common/message/request/SftpRequestCloseMessage.java | 5 +++++ .../message/request/SftpRequestFileSetStatMessage.java | 5 +++++ .../common/message/request/SftpRequestFileStatMessage.java | 5 +++++ .../common/message/request/SftpRequestReadDirMessage.java | 5 +++++ .../sftp/common/message/request/SftpRequestReadMessage.java | 5 +++++ .../common/message/request/SftpRequestWriteMessage.java | 5 +++++ .../v4/message/request/SftpV4RequestFileSetStatMessage.java | 5 +++++ .../v4/message/request/SftpV4RequestFileStatMessage.java | 5 +++++ .../protocol/connection/message/ChannelCloseMessage.java | 2 +- .../protocol/connection/message/ChannelOpenMessage.java | 2 +- .../connection/message/ChannelOpenSessionMessage.java | 2 +- 16 files changed, 69 insertions(+), 3 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCheckFileHandleMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCheckFileHandleMessage.java index bd6803ba6..556c9a9e8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCheckFileHandleMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCheckFileHandleMessage.java @@ -32,6 +32,11 @@ public SftpRequestCheckFileHandleMessage() { super(); } + public SftpRequestCheckFileHandleMessage(int handleIndex) { + super(); + configHandleIndex = handleIndex; + } + public SftpRequestCheckFileHandleMessage(SftpRequestCheckFileHandleMessage other) { super(other); hashAlgorithmsLength = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCopyDataMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCopyDataMessage.java index 0bc5b9f4e..2c46ae750 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCopyDataMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestCopyDataMessage.java @@ -34,6 +34,12 @@ public SftpRequestCopyDataMessage() { super(); } + public SftpRequestCopyDataMessage(int handleIndex, int writeToHandleIndex) { + super(); + configHandleIndex = handleIndex; + configWriteToHandleIndex = writeToHandleIndex; + } + public SftpRequestCopyDataMessage(SftpRequestCopyDataMessage other) { super(other); readFromOffset = other.readFromOffset != null ? other.readFromOffset.createCopy() : null; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestFileStatVfsMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestFileStatVfsMessage.java index fefb0aff8..a47dd468b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestFileStatVfsMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestFileStatVfsMessage.java @@ -18,6 +18,11 @@ public SftpRequestFileStatVfsMessage() { super(); } + public SftpRequestFileStatVfsMessage(int handleIndex) { + super(); + configHandleIndex = handleIndex; + } + public SftpRequestFileStatVfsMessage(SftpRequestFileStatVfsMessage other) { super(other); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestFileSyncMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestFileSyncMessage.java index 0582039b6..0b19e2f6a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestFileSyncMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestFileSyncMessage.java @@ -18,6 +18,11 @@ public SftpRequestFileSyncMessage() { super(); } + public SftpRequestFileSyncMessage(int handleIndex) { + super(); + configHandleIndex = handleIndex; + } + public SftpRequestFileSyncMessage(SftpRequestFileSyncMessage other) { super(other); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestTextSeekMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestTextSeekMessage.java index 9085084d1..7984a64a5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestTextSeekMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/extended_request/SftpRequestTextSeekMessage.java @@ -22,6 +22,11 @@ public SftpRequestTextSeekMessage() { super(); } + public SftpRequestTextSeekMessage(int handleIndex) { + super(); + configHandleIndex = handleIndex; + } + public SftpRequestTextSeekMessage(SftpRequestTextSeekMessage other) { super(other); lineNumber = other.lineNumber != null ? other.lineNumber.createCopy() : null; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestCloseMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestCloseMessage.java index 5d9add35c..b46d5bfe9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestCloseMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestCloseMessage.java @@ -17,6 +17,11 @@ public SftpRequestCloseMessage() { super(); } + public SftpRequestCloseMessage(int handleIndex) { + super(); + configHandleIndex = handleIndex; + } + public SftpRequestCloseMessage(SftpRequestCloseMessage other) { super(other); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestFileSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestFileSetStatMessage.java index 31d45fc28..bdfa301c6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestFileSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestFileSetStatMessage.java @@ -24,6 +24,11 @@ public SftpRequestFileSetStatMessage() { super(); } + public SftpRequestFileSetStatMessage(int handleIndex) { + super(); + configHandleIndex = handleIndex; + } + public SftpRequestFileSetStatMessage(SftpRequestFileSetStatMessage other) { super(other); attributes = other.attributes != null ? other.attributes.createCopy() : null; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestFileStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestFileStatMessage.java index 078d88fa4..5db4c548f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestFileStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestFileStatMessage.java @@ -18,6 +18,11 @@ public SftpRequestFileStatMessage() { super(); } + public SftpRequestFileStatMessage(int handleIndex) { + super(); + configHandleIndex = handleIndex; + } + public SftpRequestFileStatMessage(SftpRequestFileStatMessage other) { super(other); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadDirMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadDirMessage.java index 02c1e9198..27f8e54ca 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadDirMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadDirMessage.java @@ -18,6 +18,11 @@ public SftpRequestReadDirMessage() { super(); } + public SftpRequestReadDirMessage(int handleIndex) { + super(); + configHandleIndex = handleIndex; + } + public SftpRequestReadDirMessage(SftpRequestReadDirMessage other) { super(other); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadMessage.java index 90d4e675d..28919d4ba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestReadMessage.java @@ -23,6 +23,11 @@ public SftpRequestReadMessage() { super(); } + public SftpRequestReadMessage(int handleIndex) { + super(); + configHandleIndex = handleIndex; + } + public SftpRequestReadMessage(SftpRequestReadMessage other) { super(other); offset = other.offset != null ? other.offset.createCopy() : null; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWriteMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWriteMessage.java index 6d143b788..a91c74b94 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWriteMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/request/SftpRequestWriteMessage.java @@ -25,6 +25,11 @@ public SftpRequestWriteMessage() { super(); } + public SftpRequestWriteMessage(int handleIndex) { + super(); + configHandleIndex = handleIndex; + } + public SftpRequestWriteMessage(SftpRequestWriteMessage other) { super(other); offset = other.offset != null ? other.offset.createCopy() : null; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileSetStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileSetStatMessage.java index dab3a0365..fb655339d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileSetStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileSetStatMessage.java @@ -25,6 +25,11 @@ public SftpV4RequestFileSetStatMessage() { super(); } + public SftpV4RequestFileSetStatMessage(int handleIndex) { + super(); + configHandleIndex = handleIndex; + } + public SftpV4RequestFileSetStatMessage(SftpV4RequestFileSetStatMessage other) { super(other); attributes = other.attributes != null ? other.attributes.createCopy() : null; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileStatMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileStatMessage.java index 3df4d7672..19382c84f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileStatMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/request/SftpV4RequestFileStatMessage.java @@ -25,6 +25,11 @@ public SftpV4RequestFileStatMessage() { super(); } + public SftpV4RequestFileStatMessage(int handleIndex) { + super(); + configHandleIndex = handleIndex; + } + public SftpV4RequestFileStatMessage(SftpV4RequestFileStatMessage other) { super(other); flags = other.flags != null ? other.flags.createCopy() : null; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelCloseMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelCloseMessage.java index 71d71ddba..a494a37a2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelCloseMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelCloseMessage.java @@ -21,7 +21,7 @@ public ChannelCloseMessage() { public ChannelCloseMessage(int localChannelId) { super(); - setConfigLocalChannelId(localChannelId); + configLocalChannelId = localChannelId; } public ChannelCloseMessage(ChannelCloseMessage other) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java index c36e2500f..ba321dc39 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenMessage.java @@ -24,7 +24,7 @@ public abstract class ChannelOpenMessage> extend private ModifiableInteger senderChannelId; @XmlAttribute(name = "localChannel") - private Integer configLocalChannelId; + protected Integer configLocalChannelId; protected ChannelOpenMessage() { super(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenSessionMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenSessionMessage.java index b636d882d..52332b29a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenSessionMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/message/ChannelOpenSessionMessage.java @@ -19,7 +19,7 @@ public ChannelOpenSessionMessage() { public ChannelOpenSessionMessage(int localChannelId) { super(); - setConfigLocalChannelId(localChannelId); + configLocalChannelId = localChannelId; } public ChannelOpenSessionMessage(ChannelOpenSessionMessage other) { From 878f0527c8c6cabe0f202955b20215d29970ae74 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 5 Mar 2025 10:06:46 +0100 Subject: [PATCH 183/203] Fix the bug that crept into the last commit.(fixes getFileHandle) --- .../java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java index 461b3fbc4..809280daa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpManager.java @@ -231,7 +231,7 @@ public byte[] getDirectoryHandle(Integer index) { public byte[] getFileHandle(Integer index) { if (!openFileHandles.isEmpty()) { if (index != null) { - return openDirectoryHandles.get(index % openFileHandles.size()); + return openFileHandles.get(index % openFileHandles.size()); } return openFileHandles.get(random.nextInt(openFileHandles.size())); } From 44b60eb8ad1ee5b929ea915cd4bc1e8e6171c16a Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 5 Mar 2025 10:15:05 +0100 Subject: [PATCH 184/203] Make warning about data message parsing consume error more verbose. --- .../rub/nds/sshattacker/core/data/DataMessageLayer.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java index 5743af507..d6185f910 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java @@ -110,10 +110,12 @@ yield new UnknownDataMessageParser( < parsedPacket.get().getPayload().getValue().length) { // This usually means that we have not implemented the parser for the negotiated // SFTP version. + DataMessage finalResultMessage = resultMessage; LOGGER.warn( - "Data message did not consume complete data packet. Only parsed {} of {} bytes.", - resultMessage.getCompleteResultingMessage().getValue().length, - parsedPacket.get().getPayload().getValue().length); + "Data message [{}] did not consume complete data packet. Only parsed {} of {} bytes.", + () -> finalResultMessage.getClass().getSimpleName(), + () -> finalResultMessage.getCompleteResultingMessage().getValue().length, + () -> parsedPacket.get().getPayload().getValue().length); } resultMessage.setChannelDataWrapper(message); return resultMessage; From 80cdee334df9e05eb4d11bb6867a7c858c17dbfe Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 5 Mar 2025 10:49:45 +0100 Subject: [PATCH 185/203] Add trace log message for Complete packet payload bytes --- .../workflow/action/executor/ReceiveMessageHelper.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java index 107ee5c17..5a40b7de3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java @@ -192,7 +192,12 @@ public static MessageActionResult handleReceivedBytes( Optional parsedPacket = parseResult.getParsedPacket(); if (parsedPacket.isPresent()) { - ProtocolMessage message = context.getMessageLayer().parse(parsedPacket.get()); + AbstractPacket parsedPresentPacket = parsedPacket.get(); + LOGGER.trace( + "Complete packet payload bytes: {}", + () -> ArrayConverter.bytesToHexString(parsedPresentPacket.getPayload().getValue())); + + ProtocolMessage message = context.getMessageLayer().parse(parsedPresentPacket); message.adjustContext(context); retrievedPackets.add(parsedPacket.get()); From 05c2db9b94891b4af05234e0c293ddd1f1071993 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 5 Mar 2025 11:37:27 +0100 Subject: [PATCH 186/203] Add comment about malformed filenames. --- .../de/rub/nds/sshattacker/core/data/DataMessageLayer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java index d6185f910..1f6843df8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java @@ -109,7 +109,8 @@ yield new UnknownDataMessageParser( if (resultMessage.getCompleteResultingMessage().getValue().length < parsedPacket.get().getPayload().getValue().length) { // This usually means that we have not implemented the parser for the negotiated - // SFTP version. + // SFTP version, or we received malformed responses. Especially length of malformed + // filenames are often wrong. DataMessage finalResultMessage = resultMessage; LOGGER.warn( "Data message [{}] did not consume complete data packet. Only parsed {} of {} bytes.", From ee8f213ff4bf6f281ba024dd5e0fde516435592c Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 5 Mar 2025 14:15:46 +0100 Subject: [PATCH 187/203] Hardening SFTP Version exchange a little bit. Fallback to SFTPv3 Parsing if v4 parsing fails instead of directly using unknown message. --- .../core/data/sftp/SftpMessageParser.java | 6 ++-- .../handler/SftpInitMessageHandler.java | 24 +++++-------- .../handler/SftpVersionMessageHandler.java | 35 +++++++++++++++---- .../v4/handler/SftpV4InitMessageHandler.java | 20 +++++------ .../action/executor/ReceiveMessageHelper.java | 6 ++-- 5 files changed, 51 insertions(+), 40 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java index c27a903b7..0e3bad354 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java @@ -146,18 +146,18 @@ public static SftpMessage delegateParsingV4(AbstractDataPacket packet, SshCon } catch (ParserException ex) { if (context.getChooser().getSftpNegotiatedVersion() == 4) { LOGGER.warn( - "Error while parsing {} v4: {}. Now parsing as SftpUnknownMessage", + "Error while parsing {} v4: {}. Fallback to SFTP v3 Parsing", () -> SftpPacketTypeConstant.fromId(raw[0]).toString(), ex::getMessage); } else { // It is expected to fail parsing if version 4 was not negotiated LOGGER.debug( - "Error while parsing {} v4: {}. Now parsing as SftpUnknownMessage", + "Error while parsing {} v4: {}. Fallback to SFTP v3 Parsing", () -> SftpPacketTypeConstant.fromId(raw[0]).toString(), ex::getMessage); } LOGGER.debug("Parser Error:", ex); - return new SftpUnknownMessageParser(raw).parse(); + return delegateParsingV3(packet, context); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java index bf443e0f5..1731c24c0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java @@ -12,13 +12,11 @@ import de.rub.nds.sshattacker.core.data.sftp.common.parser.SftpInitMessageParser; import de.rub.nds.sshattacker.core.data.sftp.common.preperator.SftpInitMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.SftpInitMessageSerializer; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.state.SshContext; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -public class SftpInitMessageHandler extends SftpMessageHandler { - - private static final Logger LOGGER = LogManager.getLogger(); +public class SftpInitMessageHandler extends SftpMessageHandler + implements MessageSentHandler { @Override public void adjustContext(SshContext context, SftpInitMessage object) { @@ -26,18 +24,12 @@ public void adjustContext(SshContext context, SftpInitMessage object) { context.setSftpClientVersion(receivedClientVersion); context.setSftpClientSupportedExtensions(object.getExtensions()); object.getExtensions().forEach(extension -> extension.adjustContext(context)); + } - // Set negotiated SFTP version based on own server version and received client version - int negotiatedVersion; - if (receivedClientVersion < context.getConfig().getSftpServerVersion()) { - negotiatedVersion = receivedClientVersion; - } else { - negotiatedVersion = context.getConfig().getSftpServerVersion(); - } - context.setSftpNegotiatedVersion(negotiatedVersion); - if (negotiatedVersion < 3 || negotiatedVersion > 4) { - LOGGER.warn("Negotiated SFTP version {} is not implemented.", negotiatedVersion); - } + @Override + public void adjustContextAfterMessageSent(SshContext context, SftpInitMessage object) { + context.setSftpClientVersion(object.getVersion().getValue()); + context.setSftpClientSupportedExtensions(object.getExtensions()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java index 80bb92124..1efd1a7d8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java @@ -12,11 +12,13 @@ import de.rub.nds.sshattacker.core.data.sftp.common.parser.SftpVersionMessageParser; import de.rub.nds.sshattacker.core.data.sftp.common.preperator.SftpVersionMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.SftpVersionMessageSerializer; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.state.SshContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SftpVersionMessageHandler extends SftpMessageHandler { +public class SftpVersionMessageHandler extends SftpMessageHandler + implements MessageSentHandler { private static final Logger LOGGER = LogManager.getLogger(); @@ -27,14 +29,33 @@ public void adjustContext(SshContext context, SftpVersionMessage object) { context.setSftpServerSupportedExtensions(object.getExtensions()); object.getExtensions().forEach(extension -> extension.adjustContext(context)); - // Set negotiated SFTP version based on own client version and received server version - int negotiatedVersion; - if (receivedServerVersion < context.getConfig().getSftpClientVersion()) { - negotiatedVersion = receivedServerVersion; - } else { - negotiatedVersion = context.getConfig().getSftpClientVersion(); + if (context.isClient()) { + negotiateSftpVersion(context); + } + } + + @Override + public void adjustContextAfterMessageSent(SshContext context, SftpVersionMessage object) { + if (context.isServer()) { + context.setSftpServerVersion(object.getVersion().getValue()); + negotiateSftpVersion(context); + } + } + + private static void negotiateSftpVersion(SshContext context) { + // Set negotiated SFTP version based on own server version and received client version + Integer sftpClientVersion = context.getChooser().getSftpClientVersion(); + Integer sftpServerVersion = context.getChooser().getSftpServerVersion(); + int negotiatedVersion = sftpServerVersion; + if (sftpClientVersion < sftpServerVersion) { + negotiatedVersion = sftpClientVersion; } context.setSftpNegotiatedVersion(negotiatedVersion); + LOGGER.info( + "Negotiated SFTP version {}. Client version: {}. Server Version: {}", + negotiatedVersion, + sftpClientVersion, + sftpServerVersion); if (negotiatedVersion < 3 || negotiatedVersion > 4) { LOGGER.warn("Negotiated SFTP version {} is not implemented.", negotiatedVersion); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java index 32ad137fa..1148a6cbf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java @@ -12,11 +12,13 @@ import de.rub.nds.sshattacker.core.data.sftp.v4.parser.SftpV4InitMessageParser; import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.SftpV4InitMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.SftpV4InitMessageSerializer; +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.state.SshContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class SftpV4InitMessageHandler extends SftpMessageHandler { +public class SftpV4InitMessageHandler extends SftpMessageHandler + implements MessageSentHandler { private static final Logger LOGGER = LogManager.getLogger(); @@ -26,18 +28,12 @@ public void adjustContext(SshContext context, SftpV4InitMessage object) { context.setSftpClientVersion(receivedClientVersion); context.setSftpClientSupportedExtensions(object.getExtensions()); object.getExtensions().forEach(extension -> extension.adjustContext(context)); + } - // Set negotiated SFTP version based on own server version and received client version - int negotiatedVersion; - if (receivedClientVersion < context.getConfig().getSftpServerVersion()) { - negotiatedVersion = receivedClientVersion; - } else { - negotiatedVersion = context.getConfig().getSftpServerVersion(); - } - context.setSftpNegotiatedVersion(negotiatedVersion); - if (negotiatedVersion < 3 || negotiatedVersion > 4) { - LOGGER.warn("Negotiated SFTP version {} is not implemented.", negotiatedVersion); - } + @Override + public void adjustContextAfterMessageSent(SshContext context, SftpV4InitMessage object) { + context.setSftpClientVersion(object.getVersion().getValue()); + context.setSftpClientSupportedExtensions(object.getExtensions()); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java index 5a40b7de3..5ab29f89e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/workflow/action/executor/ReceiveMessageHelper.java @@ -194,8 +194,10 @@ public static MessageActionResult handleReceivedBytes( if (parsedPacket.isPresent()) { AbstractPacket parsedPresentPacket = parsedPacket.get(); LOGGER.trace( - "Complete packet payload bytes: {}", - () -> ArrayConverter.bytesToHexString(parsedPresentPacket.getPayload().getValue())); + "Complete packet payload bytes: {}", + () -> + ArrayConverter.bytesToHexString( + parsedPresentPacket.getPayload().getValue())); ProtocolMessage message = context.getMessageLayer().parse(parsedPresentPacket); message.adjustContext(context); From f26b8390da7215c7bce31739ace80f773b5956b5 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 5 Mar 2025 14:42:49 +0100 Subject: [PATCH 188/203] Check if the context is client, in adjustContextAfterMessageSent --- .../sftp/common/handler/SftpInitMessageHandler.java | 9 +++++---- .../common/handler/SftpVersionMessageHandler.java | 3 +-- .../sftp/v4/handler/SftpV4InitMessageHandler.java | 13 +++++-------- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java index 1731c24c0..d83aa10ba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java @@ -20,16 +20,17 @@ public class SftpInitMessageHandler extends SftpMessageHandler @Override public void adjustContext(SshContext context, SftpInitMessage object) { - int receivedClientVersion = object.getVersion().getValue(); - context.setSftpClientVersion(receivedClientVersion); + context.setSftpClientVersion(object.getVersion().getValue()); context.setSftpClientSupportedExtensions(object.getExtensions()); object.getExtensions().forEach(extension -> extension.adjustContext(context)); } @Override public void adjustContextAfterMessageSent(SshContext context, SftpInitMessage object) { - context.setSftpClientVersion(object.getVersion().getValue()); - context.setSftpClientSupportedExtensions(object.getExtensions()); + if (context.isClient()) { + context.setSftpClientVersion(object.getVersion().getValue()); + context.setSftpClientSupportedExtensions(object.getExtensions()); + } } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java index 1efd1a7d8..7d1d1bfc4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java @@ -24,8 +24,7 @@ public class SftpVersionMessageHandler extends SftpMessageHandler extension.adjustContext(context)); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java index 1148a6cbf..29d5d4139 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java @@ -14,26 +14,23 @@ import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.SftpV4InitMessageSerializer; import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.state.SshContext; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; public class SftpV4InitMessageHandler extends SftpMessageHandler implements MessageSentHandler { - private static final Logger LOGGER = LogManager.getLogger(); - @Override public void adjustContext(SshContext context, SftpV4InitMessage object) { - int receivedClientVersion = object.getVersion().getValue(); - context.setSftpClientVersion(receivedClientVersion); + context.setSftpClientVersion(object.getVersion().getValue()); context.setSftpClientSupportedExtensions(object.getExtensions()); object.getExtensions().forEach(extension -> extension.adjustContext(context)); } @Override public void adjustContextAfterMessageSent(SshContext context, SftpV4InitMessage object) { - context.setSftpClientVersion(object.getVersion().getValue()); - context.setSftpClientSupportedExtensions(object.getExtensions()); + if (context.isClient()) { + context.setSftpClientVersion(object.getVersion().getValue()); + context.setSftpClientSupportedExtensions(object.getExtensions()); + } } @Override From 77fc67a530dc6c4d9857339d494155b5692832e6 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 5 Mar 2025 14:46:59 +0100 Subject: [PATCH 189/203] Revert fallback to SFTP v3 Parsing. It does not really make sense. --- .../nds/sshattacker/core/data/sftp/SftpMessageParser.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java index 0e3bad354..c27a903b7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java @@ -146,18 +146,18 @@ public static SftpMessage delegateParsingV4(AbstractDataPacket packet, SshCon } catch (ParserException ex) { if (context.getChooser().getSftpNegotiatedVersion() == 4) { LOGGER.warn( - "Error while parsing {} v4: {}. Fallback to SFTP v3 Parsing", + "Error while parsing {} v4: {}. Now parsing as SftpUnknownMessage", () -> SftpPacketTypeConstant.fromId(raw[0]).toString(), ex::getMessage); } else { // It is expected to fail parsing if version 4 was not negotiated LOGGER.debug( - "Error while parsing {} v4: {}. Fallback to SFTP v3 Parsing", + "Error while parsing {} v4: {}. Now parsing as SftpUnknownMessage", () -> SftpPacketTypeConstant.fromId(raw[0]).toString(), ex::getMessage); } LOGGER.debug("Parser Error:", ex); - return delegateParsingV3(packet, context); + return new SftpUnknownMessageParser(raw).parse(); } } From 2d223fd0bb6613901cff57c32d0219255f96fb2d Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 5 Mar 2025 14:53:40 +0100 Subject: [PATCH 190/203] Activate adjustContextAfterSent on the SFTP Handshake messages --- .../core/data/sftp/common/message/SftpHandshakeMessage.java | 5 +++-- .../core/data/sftp/common/message/SftpInitMessage.java | 5 +++++ .../core/data/sftp/common/message/SftpVersionMessage.java | 5 +++++ .../core/data/sftp/v4/message/SftpV4InitMessage.java | 5 +++++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpHandshakeMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpHandshakeMessage.java index db595e783..a524077d3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpHandshakeMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpHandshakeMessage.java @@ -12,6 +12,7 @@ import de.rub.nds.modifiablevariable.integer.ModifiableInteger; import de.rub.nds.sshattacker.core.data.sftp.SftpMessage; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.*; +import de.rub.nds.sshattacker.core.protocol.common.HasSentHandler; import de.rub.nds.sshattacker.core.protocol.common.ModifiableVariableHolder; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; @@ -19,8 +20,8 @@ import java.util.ArrayList; import java.util.List; -public abstract class SftpHandshakeMessage> - extends SftpMessage { +public abstract class SftpHandshakeMessage> extends SftpMessage + implements HasSentHandler { private ModifiableInteger version; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpInitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpInitMessage.java index 5722bc30d..40810aaf2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpInitMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpInitMessage.java @@ -38,6 +38,11 @@ public void adjustContext(SshContext context) { HANDLER.adjustContext(context, this); } + @Override + public void adjustContextAfterSent(SshContext context) { + HANDLER.adjustContextAfterMessageSent(context, this); + } + @Override public void prepare(Chooser chooser) { SftpInitMessageHandler.PREPARATOR.prepare(this, chooser); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpVersionMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpVersionMessage.java index b98d5ea04..ed9ff561e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpVersionMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/message/SftpVersionMessage.java @@ -38,6 +38,11 @@ public void adjustContext(SshContext context) { HANDLER.adjustContext(context, this); } + @Override + public void adjustContextAfterSent(SshContext context) { + HANDLER.adjustContextAfterMessageSent(context, this); + } + @Override public void prepare(Chooser chooser) { SftpVersionMessageHandler.PREPARATOR.prepare(this, chooser); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/SftpV4InitMessage.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/SftpV4InitMessage.java index 870e7f949..b091737f6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/SftpV4InitMessage.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/message/SftpV4InitMessage.java @@ -39,6 +39,11 @@ public void adjustContext(SshContext context) { HANDLER.adjustContext(context, this); } + @Override + public void adjustContextAfterSent(SshContext context) { + HANDLER.adjustContextAfterMessageSent(context, this); + } + @Override public void prepare(Chooser chooser) { SftpV4InitMessageHandler.PREPARATOR.prepare(this, chooser); From 63cd24e75b73c92ea5362e2116b1309385367b4a Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 5 Mar 2025 15:21:43 +0100 Subject: [PATCH 191/203] Make Negotiated SFTP version waring a debug message. Warn only about data message consume errors if the SFTP version is implemented. --- .../core/data/DataMessageLayer.java | 30 +++++++++++++++---- .../handler/SftpVersionMessageHandler.java | 2 +- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java index 1f6843df8..efc942ead 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java @@ -112,11 +112,31 @@ yield new UnknownDataMessageParser( // SFTP version, or we received malformed responses. Especially length of malformed // filenames are often wrong. DataMessage finalResultMessage = resultMessage; - LOGGER.warn( - "Data message [{}] did not consume complete data packet. Only parsed {} of {} bytes.", - () -> finalResultMessage.getClass().getSimpleName(), - () -> finalResultMessage.getCompleteResultingMessage().getValue().length, - () -> parsedPacket.get().getPayload().getValue().length); + Integer sftpNegotiatedVersion = context.getChooser().getSftpNegotiatedVersion(); + if (dataType == ChannelDataType.SUBSYSTEM_SFTP + && sftpNegotiatedVersion >= 3 + && sftpNegotiatedVersion <= 4) { + LOGGER.warn( + "Data message [{}] did not consume complete data packet. Only parsed {} of {} bytes.", + () -> finalResultMessage.getClass().getSimpleName(), + () -> + finalResultMessage + .getCompleteResultingMessage() + .getValue() + .length, + () -> parsedPacket.get().getPayload().getValue().length); + } else { + // expected to fail because the SFTP version is not implemented + LOGGER.debug( + "Data message [{}] did not consume complete data packet. Only parsed {} of {} bytes.", + () -> finalResultMessage.getClass().getSimpleName(), + () -> + finalResultMessage + .getCompleteResultingMessage() + .getValue() + .length, + () -> parsedPacket.get().getPayload().getValue().length); + } } resultMessage.setChannelDataWrapper(message); return resultMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java index 7d1d1bfc4..23aefa925 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java @@ -56,7 +56,7 @@ private static void negotiateSftpVersion(SshContext context) { sftpClientVersion, sftpServerVersion); if (negotiatedVersion < 3 || negotiatedVersion > 4) { - LOGGER.warn("Negotiated SFTP version {} is not implemented.", negotiatedVersion); + LOGGER.debug("Negotiated SFTP version {} is not implemented.", negotiatedVersion); } } From 9d6a41a4d8c255951bbc967446ffb4f984e11ce8 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 5 Mar 2025 15:41:17 +0100 Subject: [PATCH 192/203] Make SFTP parsing errors debug, no matter what SFTP is negotiated. Has no real use anyway without other debug log messages. --- .../core/data/DataMessageLayer.java | 37 +++++-------------- .../core/data/sftp/SftpMessageParser.java | 35 +++++------------- 2 files changed, 19 insertions(+), 53 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java index efc942ead..e9e2ebd90 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java @@ -72,7 +72,7 @@ public DataMessage parse(ChannelDataMessage message) { DataPacketLayerParseResult parseResult = packetLayer.parsePacketSoftly(message.getData().getValue(), 0); if (parseResult.getParsedByteCount() < message.getDataLength().getValue()) { - LOGGER.warn( + LOGGER.debug( "Data packet did not consume complete channel data. Only parsed {} of {} bytes.", parseResult.getParsedByteCount(), message.getDataLength().getValue()); @@ -106,37 +106,18 @@ yield new UnknownDataMessageParser( } // If the data message body was empty - if (resultMessage.getCompleteResultingMessage().getValue().length - < parsedPacket.get().getPayload().getValue().length) { + int resultMessageLength = resultMessage.getCompleteResultingMessage().getValue().length; + int packetPayloadLength = parsedPacket.get().getPayload().getValue().length; + if (resultMessageLength < packetPayloadLength) { // This usually means that we have not implemented the parser for the negotiated // SFTP version, or we received malformed responses. Especially length of malformed // filenames are often wrong. DataMessage finalResultMessage = resultMessage; - Integer sftpNegotiatedVersion = context.getChooser().getSftpNegotiatedVersion(); - if (dataType == ChannelDataType.SUBSYSTEM_SFTP - && sftpNegotiatedVersion >= 3 - && sftpNegotiatedVersion <= 4) { - LOGGER.warn( - "Data message [{}] did not consume complete data packet. Only parsed {} of {} bytes.", - () -> finalResultMessage.getClass().getSimpleName(), - () -> - finalResultMessage - .getCompleteResultingMessage() - .getValue() - .length, - () -> parsedPacket.get().getPayload().getValue().length); - } else { - // expected to fail because the SFTP version is not implemented - LOGGER.debug( - "Data message [{}] did not consume complete data packet. Only parsed {} of {} bytes.", - () -> finalResultMessage.getClass().getSimpleName(), - () -> - finalResultMessage - .getCompleteResultingMessage() - .getValue() - .length, - () -> parsedPacket.get().getPayload().getValue().length); - } + LOGGER.debug( + "Data message [{}] did not consume complete data packet. Only parsed {} of {} bytes.", + () -> finalResultMessage.getClass().getSimpleName(), + () -> resultMessageLength, + () -> packetPayloadLength); } resultMessage.setChannelDataWrapper(message); return resultMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java index c27a903b7..a81777e18 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java @@ -107,19 +107,11 @@ public static SftpMessage delegateParsingV3(AbstractDataPacket packet, SshCon } }; } catch (ParserException ex) { - int sftpVersion = context.getChooser().getSftpNegotiatedVersion(); - if (sftpVersion >= 3 && sftpVersion <= 4) { - LOGGER.warn( - "Error while parsing {} v3 / common: {}. Now parsing as SftpUnknownMessage", - () -> SftpPacketTypeConstant.fromId(raw[0]).toString(), - ex::getMessage); - } else { - // It is expected to fail parsing if version 3 or 4 was not negotiated - LOGGER.debug( - "Error while parsing {} v3 / common: {}. Now parsing as SftpUnknownMessage", - () -> SftpPacketTypeConstant.fromId(raw[0]).toString(), - ex::getMessage); - } + // It is expected to fail parsing if version 3 or 4 was not negotiated + LOGGER.debug( + "Error while parsing {} v3 / common: {}. Now parsing as SftpUnknownMessage", + () -> SftpPacketTypeConstant.fromId(raw[0]).toString(), + ex::getMessage); LOGGER.debug("Parser Error:", ex); return new SftpUnknownMessageParser(raw).parse(); } @@ -144,18 +136,11 @@ public static SftpMessage delegateParsingV4(AbstractDataPacket packet, SshCon default -> delegateParsingV3(packet, context); }; } catch (ParserException ex) { - if (context.getChooser().getSftpNegotiatedVersion() == 4) { - LOGGER.warn( - "Error while parsing {} v4: {}. Now parsing as SftpUnknownMessage", - () -> SftpPacketTypeConstant.fromId(raw[0]).toString(), - ex::getMessage); - } else { - // It is expected to fail parsing if version 4 was not negotiated - LOGGER.debug( - "Error while parsing {} v4: {}. Now parsing as SftpUnknownMessage", - () -> SftpPacketTypeConstant.fromId(raw[0]).toString(), - ex::getMessage); - } + // It is expected to fail parsing if version 4 was not negotiated + LOGGER.debug( + "Error while parsing {} v4: {}. Now parsing as SftpUnknownMessage", + () -> SftpPacketTypeConstant.fromId(raw[0]).toString(), + ex::getMessage); LOGGER.debug("Parser Error:", ex); return new SftpUnknownMessageParser(raw).parse(); } From b2138431798dd8acf00d5e3b9f7f658c2aa1df7f Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 5 Mar 2025 16:57:07 +0100 Subject: [PATCH 193/203] Simlify log message --- .../de/rub/nds/sshattacker/core/data/DataMessageLayer.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java index e9e2ebd90..a349ff055 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java @@ -112,12 +112,11 @@ yield new UnknownDataMessageParser( // This usually means that we have not implemented the parser for the negotiated // SFTP version, or we received malformed responses. Especially length of malformed // filenames are often wrong. - DataMessage finalResultMessage = resultMessage; LOGGER.debug( "Data message [{}] did not consume complete data packet. Only parsed {} of {} bytes.", - () -> finalResultMessage.getClass().getSimpleName(), - () -> resultMessageLength, - () -> packetPayloadLength); + resultMessage.getClass().getSimpleName(), + resultMessageLength, + packetPayloadLength); } resultMessage.setChannelDataWrapper(message); return resultMessage; From d36276a25d3ea265b0a284594ef4d9c08e2c0386 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sun, 9 Mar 2025 09:08:15 +0100 Subject: [PATCH 194/203] Rename SftpFilePermission enums. Add Flags for file type. --- .../core/constants/SftpFilePermission.java | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFilePermission.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFilePermission.java index 756e5d75e..312761354 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFilePermission.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpFilePermission.java @@ -14,30 +14,44 @@ public enum SftpFilePermission { * Sources: * - https://chromium.googlesource.com/native_client/nacl-newlib/+/a9ae3c60b36dea3d8a10e18b1b6db952d21268c2/newlib/libc/include/sys/stat.h#80 */ + // is a directory + IS_DIR(0040000), + // is a character special file / character device + IS_CHAR(0020000), + // is block special + IS_BLOCK(0060000), + // is regular file + IS_REGULAR(0100000), + // is symbolic link + IS_LINK(0120000), + // is socket + IS_SOCKET(0140000), + // is fifo + IS_FIFO(0010000), // set user id on execution - S_ISUID(04000), + SET_USER_ID(04000), // set group id on execution - S_ISGID(02000), - // save swapped text even after use - S_ISVTX(01000), + SET_GROUP_ID(02000), + // save swapped text even after use or prevents users from deleting others' files in a directory + STICKY_BIT(01000), // read permission, owner - S_IRUSR(0400), + USER_READ(0400), // write permission, owner - S_IWUSR(0200), + USER_WRITE(0200), // execute/search permission, owner - S_IXUSR(0100), + USER_EXEC(0100), // read permission, group - S_IRGRP(0040), + GROUP_READ(0040), // write permission, group - S_IWGRP(0020), + GROUP_WRITE(0020), // execute/search permission, group - S_IXGRP(0010), + GROUP_EXEC(0010), // read permission, other - S_IROTH(0004), + OTHER_READ(0004), // write permission, other - S_IWOTH(0002), + OTHER_WRITE(0002), // execute/search permission, other - S_IXOTH(0001); + OTHER_EXECUTE(0001); private final int value; From 03a9751633aa4529faa2f182d2042ea6de1dc064 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 12 Mar 2025 13:36:20 +0100 Subject: [PATCH 195/203] Change default value of SftpRequestExpandPathMessage path. --- .../SftpRequestExpandPathMessagePreparator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java index b13af5508..295224848 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java @@ -21,6 +21,6 @@ public SftpRequestExpandPathMessagePreparator() { @Override public void prepareRequestExtendedSpecificContents( SftpRequestExpandPathMessage object, Chooser chooser) { - object.setPath("~/.chooser.getConfig()/passwd", true); + object.setPath("~/etc/passwd", true); } } From c95a41b8612388247aabe69b6a353eab47427d99 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sun, 16 Mar 2025 11:37:17 +0100 Subject: [PATCH 196/203] Simplify code of adjustContext and adjustContextAfterMessageSent of channel Requests by using abstract class ChannelRequestMessageHandler as super class. --- ...ChannelRequestAuthAgentMessageHandler.java | 21 +---------------- .../ChannelRequestBreakMessageHandler.java | 22 ++---------------- .../ChannelRequestEnvMessageHandler.java | 21 ++--------------- .../ChannelRequestExecMessageHandler.java | 22 ++---------------- ...hannelRequestExitSignalMessageHandler.java | 23 +------------------ ...hannelRequestExitStatusMessageHandler.java | 23 +------------------ .../ChannelRequestPtyMessageHandler.java | 21 ++--------------- .../ChannelRequestShellMessageHandler.java | 22 ++---------------- .../ChannelRequestSignalMessageHandler.java | 23 +------------------ ...ChannelRequestSubsystemMessageHandler.java | 21 +---------------- .../ChannelRequestUnknownMessageHandler.java | 21 +---------------- ...nnelRequestWindowChangeMessageHandler.java | 23 +------------------ .../ChannelRequestX11MessageHandler.java | 21 ++--------------- .../ChannelRequestXonXoffMessageHandler.java | 23 +------------------ 14 files changed, 20 insertions(+), 287 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestAuthAgentMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestAuthAgentMessageHandler.java index 01a0cbeb1..a98d53991 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestAuthAgentMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestAuthAgentMessageHandler.java @@ -7,33 +7,14 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; -import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestAuthAgentMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestAuthAgentMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelRequestAuthAgentMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelRequestAuthAgentMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestAuthAgentMessageHandler - extends SshMessageHandler - implements MessageSentHandler { - - @Override - public void adjustContext(SshContext context, ChannelRequestAuthAgentMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addReceivedRequestThatWantsReply(object); - } - } - - @Override - public void adjustContextAfterMessageSent( - SshContext context, ChannelRequestAuthAgentMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addSentRequestThatWantsReply(object); - } - } + extends ChannelRequestMessageHandler { @Override public ChannelRequestAuthAgentMessageParser getParser(byte[] array, SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestBreakMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestBreakMessageHandler.java index 3b2bc61ba..1d613bd94 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestBreakMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestBreakMessageHandler.java @@ -7,32 +7,14 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; -import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestBreakMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestBreakMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelRequestBreakMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelRequestBreakMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.util.Converter; -public class ChannelRequestBreakMessageHandler extends SshMessageHandler - implements MessageSentHandler { - - @Override - public void adjustContext(SshContext context, ChannelRequestBreakMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addReceivedRequestThatWantsReply(object); - } - } - - @Override - public void adjustContextAfterMessageSent( - SshContext context, ChannelRequestBreakMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addSentRequestThatWantsReply(object); - } - } +public class ChannelRequestBreakMessageHandler + extends ChannelRequestMessageHandler { @Override public ChannelRequestBreakMessageParser getParser(byte[] array, SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestEnvMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestEnvMessageHandler.java index a631dc9fd..97a7fead4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestEnvMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestEnvMessageHandler.java @@ -7,31 +7,14 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; -import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestEnvMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestEnvMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelRequestEnvMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelRequestEnvMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.util.Converter; -public class ChannelRequestEnvMessageHandler extends SshMessageHandler - implements MessageSentHandler { - - @Override - public void adjustContext(SshContext context, ChannelRequestEnvMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addReceivedRequestThatWantsReply(object); - } - } - - @Override - public void adjustContextAfterMessageSent(SshContext context, ChannelRequestEnvMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addSentRequestThatWantsReply(object); - } - } +public class ChannelRequestEnvMessageHandler + extends ChannelRequestMessageHandler { @Override public ChannelRequestEnvMessageParser getParser(byte[] array, SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExecMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExecMessageHandler.java index b896a95aa..b59c97cf8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExecMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExecMessageHandler.java @@ -7,32 +7,14 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; -import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestExecMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestExecMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelRequestExecMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelRequestExecMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.util.Converter; -public class ChannelRequestExecMessageHandler extends SshMessageHandler - implements MessageSentHandler { - - @Override - public void adjustContext(SshContext context, ChannelRequestExecMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addReceivedRequestThatWantsReply(object); - } - } - - @Override - public void adjustContextAfterMessageSent( - SshContext context, ChannelRequestExecMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addSentRequestThatWantsReply(object); - } - } +public class ChannelRequestExecMessageHandler + extends ChannelRequestMessageHandler { @Override public ChannelRequestExecMessageParser getParser(byte[] array, SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitSignalMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitSignalMessageHandler.java index e5da531eb..73aeae867 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitSignalMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitSignalMessageHandler.java @@ -7,35 +7,14 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; -import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestExitSignalMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestExitSignalMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelRequestExitSignalMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelRequestExitSignalMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestExitSignalMessageHandler - extends SshMessageHandler - implements MessageSentHandler { - - @Override - public void adjustContext(SshContext context, ChannelRequestExitSignalMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - // This should not happen, because WantReply should always be false - context.getChannelManager().addReceivedRequestThatWantsReply(object); - } - } - - @Override - public void adjustContextAfterMessageSent( - SshContext context, ChannelRequestExitSignalMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - // This should not happen, because WantReply should always be false - context.getChannelManager().addSentRequestThatWantsReply(object); - } - } + extends ChannelRequestMessageHandler { @Override public ChannelRequestExitSignalMessageParser getParser(byte[] array, SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitStatusMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitStatusMessageHandler.java index eec1184bc..57dd7323b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitStatusMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestExitStatusMessageHandler.java @@ -7,35 +7,14 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; -import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestExitStatusMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestExitStatusMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelRequestExitStatusMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelRequestExitStatusMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestExitStatusMessageHandler - extends SshMessageHandler - implements MessageSentHandler { - - @Override - public void adjustContext(SshContext context, ChannelRequestExitStatusMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - // This should not happen, because WantReply should always be false - context.getChannelManager().addReceivedRequestThatWantsReply(object); - } - } - - @Override - public void adjustContextAfterMessageSent( - SshContext context, ChannelRequestExitStatusMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - // This should not happen, because WantReply should always be false - context.getChannelManager().addSentRequestThatWantsReply(object); - } - } + extends ChannelRequestMessageHandler { @Override public ChannelRequestExitStatusMessageParser getParser(byte[] array, SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestPtyMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestPtyMessageHandler.java index 1acc89b33..530258984 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestPtyMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestPtyMessageHandler.java @@ -7,31 +7,14 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; -import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestPtyMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestPtyMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelRequestPtyMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelRequestPtyMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.util.Converter; -public class ChannelRequestPtyMessageHandler extends SshMessageHandler - implements MessageSentHandler { - - @Override - public void adjustContext(SshContext context, ChannelRequestPtyMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addReceivedRequestThatWantsReply(object); - } - } - - @Override - public void adjustContextAfterMessageSent(SshContext context, ChannelRequestPtyMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addSentRequestThatWantsReply(object); - } - } +public class ChannelRequestPtyMessageHandler + extends ChannelRequestMessageHandler { @Override public ChannelRequestPtyMessageParser getParser(byte[] array, SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestShellMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestShellMessageHandler.java index 90256639b..58a602e02 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestShellMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestShellMessageHandler.java @@ -7,32 +7,14 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; -import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestShellMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestShellMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelRequestShellMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelRequestShellMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.util.Converter; -public class ChannelRequestShellMessageHandler extends SshMessageHandler - implements MessageSentHandler { - - @Override - public void adjustContext(SshContext context, ChannelRequestShellMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addReceivedRequestThatWantsReply(object); - } - } - - @Override - public void adjustContextAfterMessageSent( - SshContext context, ChannelRequestShellMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addSentRequestThatWantsReply(object); - } - } +public class ChannelRequestShellMessageHandler + extends ChannelRequestMessageHandler { @Override public ChannelRequestShellMessageParser getParser(byte[] array, SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSignalMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSignalMessageHandler.java index 3ead65bbd..573fcf4fe 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSignalMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSignalMessageHandler.java @@ -7,35 +7,14 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; -import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestSignalMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestSignalMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelRequestSignalMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelRequestSignalMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestSignalMessageHandler - extends SshMessageHandler - implements MessageSentHandler { - - @Override - public void adjustContext(SshContext context, ChannelRequestSignalMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - // This should not happen, because WantReply should always be false - context.getChannelManager().addReceivedRequestThatWantsReply(object); - } - } - - @Override - public void adjustContextAfterMessageSent( - SshContext context, ChannelRequestSignalMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - // This should not happen, because WantReply should always be false - context.getChannelManager().addSentRequestThatWantsReply(object); - } - } + extends ChannelRequestMessageHandler { @Override public ChannelRequestSignalMessageParser getParser(byte[] array, SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSubsystemMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSubsystemMessageHandler.java index b59f9280c..6d9855f1b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSubsystemMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestSubsystemMessageHandler.java @@ -7,33 +7,14 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; -import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestSubsystemMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestSubsystemMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelRequestSubsystemMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelRequestSubsystemMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestSubsystemMessageHandler - extends SshMessageHandler - implements MessageSentHandler { - - @Override - public void adjustContext(SshContext context, ChannelRequestSubsystemMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addReceivedRequestThatWantsReply(object); - } - } - - @Override - public void adjustContextAfterMessageSent( - SshContext context, ChannelRequestSubsystemMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addSentRequestThatWantsReply(object); - } - } + extends ChannelRequestMessageHandler { @Override public ChannelRequestSubsystemMessageParser getParser(byte[] array, SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestUnknownMessageHandler.java index 6ae0c66e7..fbae86f72 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestUnknownMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestUnknownMessageHandler.java @@ -7,33 +7,14 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; -import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestUnknownMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestUnknownMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelRequestUnknownMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelRequestUnknownMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestUnknownMessageHandler - extends SshMessageHandler - implements MessageSentHandler { - - @Override - public void adjustContext(SshContext context, ChannelRequestUnknownMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addReceivedRequestThatWantsReply(object); - } - } - - @Override - public void adjustContextAfterMessageSent( - SshContext context, ChannelRequestUnknownMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addSentRequestThatWantsReply(object); - } - } + extends ChannelRequestMessageHandler { @Override public ChannelRequestUnknownMessageParser getParser(byte[] array, SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestWindowChangeMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestWindowChangeMessageHandler.java index 3892fe969..d1e36bf3a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestWindowChangeMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestWindowChangeMessageHandler.java @@ -7,35 +7,14 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; -import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestWindowChangeMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestWindowChangeMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelRequestWindowChangeMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelRequestWindowChangeMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestWindowChangeMessageHandler - extends SshMessageHandler - implements MessageSentHandler { - - @Override - public void adjustContext(SshContext context, ChannelRequestWindowChangeMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - // This should not happen, because WantReply should always be false - context.getChannelManager().addReceivedRequestThatWantsReply(object); - } - } - - @Override - public void adjustContextAfterMessageSent( - SshContext context, ChannelRequestWindowChangeMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - // This should not happen, because WantReply should always be false - context.getChannelManager().addSentRequestThatWantsReply(object); - } - } + extends ChannelRequestMessageHandler { @Override public ChannelRequestWindowChangeMessageParser getParser(byte[] array, SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestX11MessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestX11MessageHandler.java index 70c1b9b12..1d2e27336 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestX11MessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestX11MessageHandler.java @@ -7,31 +7,14 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; -import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestX11Message; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestX11MessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelRequestX11MessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelRequestX11MessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.util.Converter; -public class ChannelRequestX11MessageHandler extends SshMessageHandler - implements MessageSentHandler { - - @Override - public void adjustContext(SshContext context, ChannelRequestX11Message object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addReceivedRequestThatWantsReply(object); - } - } - - @Override - public void adjustContextAfterMessageSent(SshContext context, ChannelRequestX11Message object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - context.getChannelManager().addSentRequestThatWantsReply(object); - } - } +public class ChannelRequestX11MessageHandler + extends ChannelRequestMessageHandler { @Override public ChannelRequestX11MessageParser getParser(byte[] array, SshContext context) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestXonXoffMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestXonXoffMessageHandler.java index 86913f639..0705b8435 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestXonXoffMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestXonXoffMessageHandler.java @@ -7,35 +7,14 @@ */ package de.rub.nds.sshattacker.core.protocol.connection.handler; -import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; -import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestXonXoffMessage; import de.rub.nds.sshattacker.core.protocol.connection.parser.ChannelRequestXonXoffMessageParser; import de.rub.nds.sshattacker.core.protocol.connection.preparator.ChannelRequestXonXoffMessagePreparator; import de.rub.nds.sshattacker.core.protocol.connection.serializer.ChannelRequestXonXoffMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; -import de.rub.nds.sshattacker.core.util.Converter; public class ChannelRequestXonXoffMessageHandler - extends SshMessageHandler - implements MessageSentHandler { - - @Override - public void adjustContext(SshContext context, ChannelRequestXonXoffMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - // This should not happen, because WantReply should always be false - context.getChannelManager().addReceivedRequestThatWantsReply(object); - } - } - - @Override - public void adjustContextAfterMessageSent( - SshContext context, ChannelRequestXonXoffMessage object) { - if (Converter.byteToBoolean(object.getWantReply().getValue())) { - // This should not happen, because WantReply should always be false - context.getChannelManager().addSentRequestThatWantsReply(object); - } - } + extends ChannelRequestMessageHandler { @Override public ChannelRequestXonXoffMessageParser getParser(byte[] array, SshContext context) { From a8e715ed81d1d6602c10daeb0e50f74ba4f2ee35 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sun, 16 Mar 2025 11:52:18 +0100 Subject: [PATCH 197/203] Use removeFirst --- .../rub/nds/sshattacker/core/protocol/connection/Channel.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/Channel.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/Channel.java index ace3392f0..115413151 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/Channel.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/Channel.java @@ -277,14 +277,14 @@ public void addSentRequestsThatWantsReply(ChannelRequestMessage message) { public ChannelRequestMessage removeFirstReceivedRequestThatWantReply() { if (!receivedRequestsThatWantReply.isEmpty()) { - return receivedRequestsThatWantReply.remove(0); + return receivedRequestsThatWantReply.removeFirst(); } return null; } public ChannelRequestMessage removeFirstSentRequestThatWantReply() { if (!sentRequestsThatWantReply.isEmpty()) { - return sentRequestsThatWantReply.remove(0); + return sentRequestsThatWantReply.removeFirst(); } return null; } From e1244f1fdf449ef92a19531566f521fd15894bf6 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sun, 16 Mar 2025 12:14:32 +0100 Subject: [PATCH 198/203] Add ChannelRequestMessageHandler class, that I forgot to add to the commit. --- .../handler/ChannelRequestMessageHandler.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestMessageHandler.java diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestMessageHandler.java new file mode 100644 index 000000000..a9fec9e4e --- /dev/null +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/handler/ChannelRequestMessageHandler.java @@ -0,0 +1,32 @@ +/* + * SSH-Attacker - A Modular Penetration Testing Framework for SSH + * + * Copyright 2014-2022 Ruhr University Bochum, Paderborn University, and Hackmanit GmbH + * + * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 + */ +package de.rub.nds.sshattacker.core.protocol.connection.handler; + +import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; +import de.rub.nds.sshattacker.core.protocol.common.SshMessageHandler; +import de.rub.nds.sshattacker.core.protocol.connection.message.ChannelRequestMessage; +import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.util.Converter; + +public abstract class ChannelRequestMessageHandler> + extends SshMessageHandler implements MessageSentHandler { + + @Override + public void adjustContext(SshContext context, T object) { + if (Converter.byteToBoolean(object.getWantReply().getValue())) { + context.getChannelManager().addReceivedRequestThatWantsReply(object); + } + } + + @Override + public void adjustContextAfterMessageSent(SshContext context, T object) { + if (Converter.byteToBoolean(object.getWantReply().getValue())) { + context.getChannelManager().addSentRequestThatWantsReply(object); + } + } +} From fef2ef3e7e02caac4cdaca5fa31c0f826db0298c Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sun, 16 Mar 2025 16:25:11 +0100 Subject: [PATCH 199/203] Use singleton for Data Packet parser --- .../nds/sshattacker/core/data/DataMessageLayer.java | 6 ++---- .../data/packet/layer/AbstractDataPacketLayer.java | 11 ++++------- .../core/data/packet/layer/DataPacketLayer.java | 9 +++++---- .../data/packet/layer/DataPacketLayerFactory.java | 7 ++----- .../data/packet/layer/PassThroughPacketLayer.java | 9 +++++---- 5 files changed, 18 insertions(+), 24 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java index a349ff055..a71f426aa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/DataMessageLayer.java @@ -139,14 +139,11 @@ public ChannelDataMessage serialize(DataMessage message) { AbstractDataPacketLayer packetLayer; if (message instanceof SftpMessage) { packet = new DataPacket(); - packetLayer = new DataPacketLayer(context); } else if (message instanceof StringDataMessage) { packet = new PassThroughPacket(); - packetLayer = new PassThroughPacketLayer(context); } else { // Unknown Data Messages packet = new PassThroughPacket(); - packetLayer = new PassThroughPacketLayer(context); } packet.setPayload(message.serialize()); @@ -155,7 +152,8 @@ public ChannelDataMessage serialize(DataMessage message) { resultMessage.prepare(context.getChooser()); // Set prepared and serialized packet as data of ChannelDataMessage - resultMessage.setData(packetLayer.preparePacket(packet), true); + resultMessage.setData( + AbstractDataPacketLayer.preparePacket(packet, context.getChooser()), true); // TODO: If more than one channel is open: // Try to set recipientChannelId to channel that expect that data type diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/AbstractDataPacketLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/AbstractDataPacketLayer.java index 76c447506..b779182ea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/AbstractDataPacketLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/AbstractDataPacketLayer.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.packet.AbstractDataPacket; import de.rub.nds.sshattacker.core.exceptions.ParserException; -import de.rub.nds.sshattacker.core.state.SshContext; +import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; /** * An abstraction layer that can be used to define different packet layer types that can occur in @@ -17,11 +17,8 @@ */ public abstract class AbstractDataPacketLayer { - protected final SshContext context; - - protected AbstractDataPacketLayer(SshContext context) { + protected AbstractDataPacketLayer() { super(); - this.context = context; } /** @@ -47,8 +44,8 @@ public abstract DataPacketLayerParseResult parsePacket(byte[] rawBytes, int star public abstract DataPacketLayerParseResult parsePacketSoftly( byte[] rawBytes, int startPosition); - public byte[] preparePacket(AbstractDataPacket packet) { - packet.prepare(context.getChooser()); + public static byte[] preparePacket(AbstractDataPacket packet, Chooser chooser) { + packet.prepare(chooser); return packet.serialize(); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayer.java index 8d52f603f..b23e9d30e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayer.java @@ -10,16 +10,17 @@ import de.rub.nds.sshattacker.core.data.packet.DataPacket; import de.rub.nds.sshattacker.core.data.packet.parser.DataPacketParser; import de.rub.nds.sshattacker.core.exceptions.ParserException; -import de.rub.nds.sshattacker.core.state.SshContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class DataPacketLayer extends AbstractDataPacketLayer { +public final class DataPacketLayer extends AbstractDataPacketLayer { private static final Logger LOGGER = LogManager.getLogger(); - public DataPacketLayer(SshContext context) { - super(context); + public static final DataPacketLayer INSTANCE = new DataPacketLayer(); + + private DataPacketLayer() { + super(); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayerFactory.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayerFactory.java index 24b9bdf8b..638f920fb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayerFactory.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/DataPacketLayerFactory.java @@ -15,11 +15,8 @@ public final class DataPacketLayerFactory { public static AbstractDataPacketLayer getDataPacketLayer( DataPacketLayerType type, SshContext context) { return switch (type) { - case DATA -> new DataPacketLayer(context); - case PASS_THROUGH -> new PassThroughPacketLayer(context); - default -> - throw new UnsupportedOperationException( - "Packet layer type '" + type + "' not supported!"); + case DATA -> DataPacketLayer.INSTANCE; + case PASS_THROUGH -> PassThroughPacketLayer.INSTANCE; }; } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/PassThroughPacketLayer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/PassThroughPacketLayer.java index ab83f0b21..55ea36d06 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/PassThroughPacketLayer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/packet/layer/PassThroughPacketLayer.java @@ -10,16 +10,17 @@ import de.rub.nds.sshattacker.core.data.packet.PassThroughPacket; import de.rub.nds.sshattacker.core.data.packet.parser.PassThroughPacketParser; import de.rub.nds.sshattacker.core.exceptions.ParserException; -import de.rub.nds.sshattacker.core.state.SshContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -public class PassThroughPacketLayer extends AbstractDataPacketLayer { +public final class PassThroughPacketLayer extends AbstractDataPacketLayer { private static final Logger LOGGER = LogManager.getLogger(); - public PassThroughPacketLayer(SshContext context) { - super(context); + public static final PassThroughPacketLayer INSTANCE = new PassThroughPacketLayer(); + + private PassThroughPacketLayer() { + super(); } @Override From 4c59c5b4e6fd1a2f1ab7c7d1d34c53152aa9e84c Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Mon, 17 Mar 2025 12:20:02 +0100 Subject: [PATCH 200/203] Rename some Sftp Extension Enums to match the pattern used before. --- .../sshattacker/core/constants/SftpExtension.java | 8 ++++---- .../core/data/sftp/SftpMessageParser.java | 14 ++++++++------ .../extension/SftpExtensionExpandPathHandler.java | 2 +- .../extension/SftpExtensionLimitsHandler.java | 2 +- .../extension/SftpExtensionLinkSetStatHandler.java | 2 +- .../SftpExtensionUsersGroupsByIdHandler.java | 4 +++- .../common/parser/SftpHandshakeMessageParser.java | 8 ++++---- .../SftpRequestExpandPathMessagePreparator.java | 2 +- .../SftpRequestLimitsMessagePreparator.java | 2 +- .../SftpRequestLinkSetStatMessagePreparator.java | 2 +- ...ftpRequestUsersGroupsByIdMessagePreparator.java | 2 +- 11 files changed, 26 insertions(+), 22 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java index b0b431311..215871b97 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/constants/SftpExtension.java @@ -56,10 +56,10 @@ public enum SftpExtension { F_STAT_VFS_OPENSSH_COM("fstatvfs@openssh.com"), HARDLINK_OPENSSH_COM("hardlink@openssh.com"), F_SYNC_OPENSSH_COM("fsync@openssh.com"), - L_SET_STAT("lsetstat@openssh.com"), - LIMITS("limits@openssh.com"), - EXPAND_PATH("expand-path@openssh.com"), - USERS_GROUPS_BY_ID("users-groups-by-id@openssh.com"), + L_SET_STAT_OPENSSH_COM("lsetstat@openssh.com"), + LIMITS_OPENSSH_COM("limits@openssh.com"), + EXPAND_PATH_OPENSSH_COM("expand-path@openssh.com"), + USERS_GROUPS_BY_ID_OPENSSH_COM("users-groups-by-id@openssh.com"), UNKNOWN(null); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java index a81777e18..ea3615bcc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessageParser.java @@ -169,10 +169,11 @@ public static SftpMessage handleExtendedRequestMessageParsing( case F_STAT_VFS_OPENSSH_COM -> new SftpRequestFileStatVfsMessageParser(raw).parse(); case HARDLINK_OPENSSH_COM -> new SftpRequestHardlinkMessageParser(raw).parse(); case F_SYNC_OPENSSH_COM -> new SftpRequestFileSyncMessageParser(raw).parse(); - case L_SET_STAT -> new SftpRequestLinkSetStatMessageParser(raw).parse(); - case LIMITS -> new SftpRequestLimitsMessageParser(raw).parse(); - case EXPAND_PATH -> new SftpRequestExpandPathMessageParser(raw).parse(); - case USERS_GROUPS_BY_ID -> new SftpRequestUsersGroupsByIdMessageParser(raw).parse(); + case L_SET_STAT_OPENSSH_COM -> new SftpRequestLinkSetStatMessageParser(raw).parse(); + case LIMITS_OPENSSH_COM -> new SftpRequestLimitsMessageParser(raw).parse(); + case EXPAND_PATH_OPENSSH_COM -> new SftpRequestExpandPathMessageParser(raw).parse(); + case USERS_GROUPS_BY_ID_OPENSSH_COM -> + new SftpRequestUsersGroupsByIdMessageParser(raw).parse(); default -> { LOGGER.debug( "Received unimplemented extended request message type: {}", @@ -202,8 +203,9 @@ public static SftpMessage handleExtendedResponseMessageParsing( // Vendor extensions case STAT_VFS_OPENSSH_COM, F_STAT_VFS_OPENSSH_COM -> new SftpResponseStatVfsMessageParser(raw).parse(); - case LIMITS -> new SftpResponseLimitsMessageParser(raw).parse(); - case USERS_GROUPS_BY_ID -> new SftpResponseUsersGroupsByIdMessageParser(raw).parse(); + case LIMITS_OPENSSH_COM -> new SftpResponseLimitsMessageParser(raw).parse(); + case USERS_GROUPS_BY_ID_OPENSSH_COM -> + new SftpResponseUsersGroupsByIdMessageParser(raw).parse(); default -> { LOGGER.debug( "Received unimplemented extended response message type: {}", diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionExpandPathHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionExpandPathHandler.java index f27de2bd7..7b7623ba3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionExpandPathHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionExpandPathHandler.java @@ -34,7 +34,7 @@ public SftpExtensionWithVersionParser getParser( } public static final SftpExtensionWithVersionPreparator PREPARATOR = - new SftpExtensionWithVersionPreparator<>(SftpExtension.EXPAND_PATH); + new SftpExtensionWithVersionPreparator<>(SftpExtension.EXPAND_PATH_OPENSSH_COM); public static final SftpExtensionWithVersionSerializer SERIALIZER = new SftpExtensionWithVersionSerializer<>(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLimitsHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLimitsHandler.java index b525322fe..3221c69df 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLimitsHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLimitsHandler.java @@ -32,7 +32,7 @@ public SftpExtensionWithVersionParser getParser( } public static final SftpExtensionWithVersionPreparator PREPARATOR = - new SftpExtensionWithVersionPreparator<>(SftpExtension.LIMITS); + new SftpExtensionWithVersionPreparator<>(SftpExtension.LIMITS_OPENSSH_COM); public static final SftpExtensionWithVersionSerializer SERIALIZER = new SftpExtensionWithVersionSerializer<>(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLinkSetStatHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLinkSetStatHandler.java index eea44b5d9..ead168a48 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLinkSetStatHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLinkSetStatHandler.java @@ -34,7 +34,7 @@ public SftpExtensionWithVersionParser getParser( } public static final SftpExtensionWithVersionPreparator PREPARATOR = - new SftpExtensionWithVersionPreparator<>(SftpExtension.L_SET_STAT); + new SftpExtensionWithVersionPreparator<>(SftpExtension.L_SET_STAT_OPENSSH_COM); public static final SftpExtensionWithVersionSerializer SERIALIZER = new SftpExtensionWithVersionSerializer<>(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUsersGroupsByIdHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUsersGroupsByIdHandler.java index a86b7c4c9..302b03bca 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUsersGroupsByIdHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUsersGroupsByIdHandler.java @@ -34,7 +34,9 @@ public SftpExtensionWithVersionParser getParser( } public static final SftpExtensionWithVersionPreparator - PREPARATOR = new SftpExtensionWithVersionPreparator<>(SftpExtension.USERS_GROUPS_BY_ID); + PREPARATOR = + new SftpExtensionWithVersionPreparator<>( + SftpExtension.USERS_GROUPS_BY_ID_OPENSSH_COM); public static final SftpExtensionWithVersionSerializer SERIALIZER = new SftpExtensionWithVersionSerializer<>(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpHandshakeMessageParser.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpHandshakeMessageParser.java index 7664f3c50..ddd34217e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpHandshakeMessageParser.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/parser/SftpHandshakeMessageParser.java @@ -118,22 +118,22 @@ private void parseExtensions() { SftpExtensionFileSync::new, getArray(), extensionStartPointer); - case L_SET_STAT -> + case L_SET_STAT_OPENSSH_COM -> new SftpExtensionWithVersionParser<>( SftpExtensionLinkSetStat::new, getArray(), extensionStartPointer); - case LIMITS -> + case LIMITS_OPENSSH_COM -> new SftpExtensionWithVersionParser<>( SftpExtensionLimits::new, getArray(), extensionStartPointer); - case EXPAND_PATH -> + case EXPAND_PATH_OPENSSH_COM -> new SftpExtensionWithVersionParser<>( SftpExtensionExpandPath::new, getArray(), extensionStartPointer); - case USERS_GROUPS_BY_ID -> + case USERS_GROUPS_BY_ID_OPENSSH_COM -> new SftpExtensionWithVersionParser<>( SftpExtensionUsersGroupsById::new, getArray(), diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java index 295224848..bd9bceec0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java @@ -15,7 +15,7 @@ public class SftpRequestExpandPathMessagePreparator extends SftpRequestExtendedMessagePreparator { public SftpRequestExpandPathMessagePreparator() { - super(SftpExtension.EXPAND_PATH); + super(SftpExtension.EXPAND_PATH_OPENSSH_COM); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLimitsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLimitsMessagePreparator.java index 4fdfc6564..d527e045e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLimitsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLimitsMessagePreparator.java @@ -15,7 +15,7 @@ public class SftpRequestLimitsMessagePreparator extends SftpRequestExtendedMessagePreparator { public SftpRequestLimitsMessagePreparator() { - super(SftpExtension.LIMITS); + super(SftpExtension.LIMITS_OPENSSH_COM); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java index e2b8b5da1..a0100b301 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java @@ -15,7 +15,7 @@ public class SftpRequestLinkSetStatMessagePreparator extends SftpRequestExtendedMessagePreparator { public SftpRequestLinkSetStatMessagePreparator() { - super(SftpExtension.L_SET_STAT); + super(SftpExtension.L_SET_STAT_OPENSSH_COM); } @Override diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java index bf0aafb88..d849beedf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java @@ -16,7 +16,7 @@ public class SftpRequestUsersGroupsByIdMessagePreparator extends SftpRequestExtendedMessagePreparator { public SftpRequestUsersGroupsByIdMessagePreparator() { - super(SftpExtension.USERS_GROUPS_BY_ID); + super(SftpExtension.USERS_GROUPS_BY_ID_OPENSSH_COM); } @Override From bc12a1e299f78cad61302b830b93a4ccf698acb7 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Wed, 19 Mar 2025 11:55:07 +0100 Subject: [PATCH 201/203] Fix typo: preperator -> preparator --- .../core/data/sftp/common/handler/SftpInitMessageHandler.java | 2 +- .../data/sftp/common/handler/SftpUnknownMessageHandler.java | 2 +- .../data/sftp/common/handler/SftpVersionMessageHandler.java | 2 +- .../SftpRequestCheckFileHandleMessageHandler.java | 2 +- .../SftpRequestCheckFileNameMessageHandler.java | 2 +- .../extended_request/SftpRequestCopyDataMessageHandler.java | 2 +- .../extended_request/SftpRequestCopyFileMessageHandler.java | 2 +- .../extended_request/SftpRequestExpandPathMessageHandler.java | 2 +- .../SftpRequestFileStatVfsMessageHandler.java | 2 +- .../extended_request/SftpRequestFileSyncMessageHandler.java | 2 +- .../SftpRequestGetTempFolderMessageHandler.java | 2 +- .../extended_request/SftpRequestHardlinkMessageHandler.java | 2 +- .../SftpRequestHomeDirectoryMessageHandler.java | 2 +- .../extended_request/SftpRequestLimitsMessageHandler.java | 2 +- .../SftpRequestLinkSetStatMessageHandler.java | 2 +- .../SftpRequestMakeTempFolderMessageHandler.java | 2 +- .../SftpRequestPosixRenameMessageHandler.java | 2 +- .../SftpRequestSpaceAvailableMessageHandler.java | 2 +- .../extended_request/SftpRequestStatVfsMessageHandler.java | 2 +- .../extended_request/SftpRequestTextSeekMessageHandler.java | 2 +- .../extended_request/SftpRequestUnknownMessageHandler.java | 2 +- .../SftpRequestUsersGroupsByIdMessageHandler.java | 2 +- .../extended_request/SftpRequestVendorIdMessageHandler.java | 2 +- .../SftpResponseCheckFileMessageHandler.java | 2 +- .../extended_response/SftpResponseLimitsMessageHandler.java | 2 +- .../SftpResponseSpaceAvailableMessageHandler.java | 2 +- .../extended_response/SftpResponseStatVfsMessageHandler.java | 2 +- .../extended_response/SftpResponseUnknownMessageHandler.java | 2 +- .../SftpResponseUsersGroupsByIdMessageHandler.java | 2 +- .../handler/extension/SftpExtensionCheckFileHandler.java | 2 +- .../handler/extension/SftpExtensionCopyDataHandler.java | 2 +- .../handler/extension/SftpExtensionCopyFileHandler.java | 2 +- .../handler/extension/SftpExtensionExpandPathHandler.java | 2 +- .../handler/extension/SftpExtensionFileStatVfsHandler.java | 2 +- .../handler/extension/SftpExtensionFileSyncHandler.java | 2 +- .../handler/extension/SftpExtensionGetTempFolderHandler.java | 2 +- .../handler/extension/SftpExtensionHardlinkHandler.java | 2 +- .../handler/extension/SftpExtensionHomeDirectoryHandler.java | 2 +- .../common/handler/extension/SftpExtensionLimitsHandler.java | 2 +- .../handler/extension/SftpExtensionLinkSetStatHandler.java | 2 +- .../handler/extension/SftpExtensionMakeTempFolderHandler.java | 2 +- .../common/handler/extension/SftpExtensionNewlineHandler.java | 2 +- .../handler/extension/SftpExtensionPosixRenameHandler.java | 2 +- .../handler/extension/SftpExtensionSpaceAvailableHandler.java | 2 +- .../common/handler/extension/SftpExtensionStatVfsHandler.java | 2 +- .../handler/extension/SftpExtensionTextSeekHandler.java | 2 +- .../common/handler/extension/SftpExtensionUnknownHandler.java | 2 +- .../extension/SftpExtensionUsersGroupsByIdHandler.java | 2 +- .../handler/extension/SftpExtensionVendorIdHandler.java | 2 +- .../data/sftp/common/handler/holder/SftpAclEntryHandler.java | 2 +- .../sftp/common/handler/holder/SftpFileAttributesHandler.java | 2 +- .../handler/holder/SftpFileExtendedAttributeHandler.java | 2 +- .../sftp/common/handler/holder/SftpFileNameEntryHandler.java | 2 +- .../data/sftp/common/handler/holder/SftpIdEntryHandler.java | 2 +- .../data/sftp/common/handler/holder/SftpNameEntryHandler.java | 2 +- .../handler/request/SftpRequestCloseMessageHandler.java | 2 +- .../handler/request/SftpRequestFileSetStatMessageHandler.java | 2 +- .../handler/request/SftpRequestFileStatMessageHandler.java | 2 +- .../handler/request/SftpRequestLinkStatMessageHandler.java | 2 +- .../handler/request/SftpRequestMakeDirMessageHandler.java | 2 +- .../handler/request/SftpRequestOpenDirMessageHandler.java | 2 +- .../common/handler/request/SftpRequestOpenMessageHandler.java | 2 +- .../handler/request/SftpRequestReadDirMessageHandler.java | 2 +- .../handler/request/SftpRequestReadLinkMessageHandler.java | 2 +- .../common/handler/request/SftpRequestReadMessageHandler.java | 2 +- .../handler/request/SftpRequestRealPathMessageHandler.java | 2 +- .../handler/request/SftpRequestRemoveDirMessageHandler.java | 2 +- .../handler/request/SftpRequestRemoveMessageHandler.java | 2 +- .../handler/request/SftpRequestRenameMessageHandler.java | 2 +- .../handler/request/SftpRequestSetStatMessageHandler.java | 2 +- .../common/handler/request/SftpRequestStatMessageHandler.java | 2 +- .../request/SftpRequestSymbolicLinkMessageHandler.java | 2 +- .../handler/request/SftpRequestWriteMessageHandler.java | 2 +- .../response/SftpResponseAttributesMessageHandler.java | 2 +- .../handler/response/SftpResponseDataMessageHandler.java | 2 +- .../handler/response/SftpResponseHandleMessageHandler.java | 2 +- .../handler/response/SftpResponseNameMessageHandler.java | 2 +- .../handler/response/SftpResponseStatusMessageHandler.java | 2 +- .../{preperator => preparator}/SftpInitMessagePreparator.java | 2 +- .../SftpUnknownMessagePreparator.java | 2 +- .../SftpVersionMessagePreparator.java | 2 +- .../SftpRequestCheckFileHandleMessagePreparator.java | 2 +- .../SftpRequestCheckFileNameMessagePreparator.java | 2 +- .../SftpRequestCopyDataMessagePreparator.java | 2 +- .../SftpRequestCopyFileMessagePreparator.java | 2 +- .../SftpRequestExpandPathMessagePreparator.java | 2 +- .../SftpRequestExtendedMessagePreparator.java | 4 ++-- .../SftpRequestFileStatVfsMessagePreparator.java | 2 +- .../SftpRequestFileSyncMessagePreparator.java | 2 +- .../SftpRequestGetTempFolderMessagePreparator.java | 2 +- .../SftpRequestHardlinkMessagePreparator.java | 2 +- .../SftpRequestHomeDirectoryMessagePreparator.java | 2 +- .../extended_request/SftpRequestLimitsMessagePreparator.java | 2 +- .../SftpRequestLinkSetStatMessagePreparator.java | 2 +- .../SftpRequestMakeTempFolderMessagePreparator.java | 2 +- .../SftpRequestPosixRenameMessagePreparator.java | 2 +- .../SftpRequestSpaceAvailableMessagePreparator.java | 2 +- .../extended_request/SftpRequestStatVfsMessagePreparator.java | 2 +- .../SftpRequestTextSeekMessagePreparator.java | 2 +- .../extended_request/SftpRequestUnknownMessagePreparator.java | 2 +- .../SftpRequestUsersGroupsByIdMessagePreparator.java | 2 +- .../SftpRequestVendorIdMessagePreparator.java | 2 +- .../SftpResponseCheckFileMessagePreparator.java | 2 +- .../SftpResponseExtendedMessagePreparator.java | 4 ++-- .../SftpResponseLimitsMessagePreparator.java | 2 +- .../SftpResponseSpaceAvailableMessagePreparator.java | 2 +- .../SftpResponseStatVfsMessagePreparator.java | 2 +- .../SftpResponseUnknownMessagePreparator.java | 2 +- .../SftpResponseUsersGroupsByIdMessagePreparator.java | 2 +- .../extension/SftpAbstractExtensionPreparator.java | 2 +- .../extension/SftpExtensionFileStatVfsPreparator.java | 2 +- .../extension/SftpExtensionNewlinePreparator.java | 2 +- .../extension/SftpExtensionStatVfsPreparator.java | 2 +- .../extension/SftpExtensionUnknownPreparator.java | 2 +- .../extension/SftpExtensionVendorIdPreparator.java | 2 +- .../extension/SftpExtensionWithVersionPreparator.java | 2 +- .../holder/SftpAclEntryPreparator.java | 2 +- .../holder/SftpFileAttributesPreparator.java | 2 +- .../holder/SftpFileExtendedAttributePreparator.java | 2 +- .../holder/SftpFileNameEntryPreparator.java | 2 +- .../holder/SftpIdEntryPreparator.java | 2 +- .../holder/SftpNameEntryPreparator.java | 2 +- .../request/SftpRequestCloseMessagePreparator.java | 2 +- .../request/SftpRequestFileSetStatMessagePreparator.java | 2 +- .../request/SftpRequestFileStatMessagePreparator.java | 2 +- .../request/SftpRequestLinkStatMessagePreparator.java | 2 +- .../request/SftpRequestMakeDirMessagePreparator.java | 2 +- .../request/SftpRequestMessagePreparator.java | 2 +- .../request/SftpRequestOpenDirMessagePreparator.java | 2 +- .../request/SftpRequestOpenMessagePreparator.java | 2 +- .../request/SftpRequestReadDirMessagePreparator.java | 2 +- .../request/SftpRequestReadLinkMessagePreparator.java | 2 +- .../request/SftpRequestReadMessagePreparator.java | 2 +- .../request/SftpRequestRealPathMessagePreparator.java | 2 +- .../request/SftpRequestRemoveDirMessagePreparator.java | 2 +- .../request/SftpRequestRemoveMessagePreparator.java | 2 +- .../request/SftpRequestRenameMessagePreparator.java | 2 +- .../request/SftpRequestSetStatMessagePreparator.java | 2 +- .../request/SftpRequestStatMessagePreparator.java | 2 +- .../request/SftpRequestSymbolicLinkMessagePreparator.java | 2 +- .../request/SftpRequestWriteMessagePreparator.java | 2 +- .../response/SftpResponseAttributesMessagePreparator.java | 2 +- .../response/SftpResponseDataMessagePreparator.java | 2 +- .../response/SftpResponseHandleMessagePreparator.java | 2 +- .../response/SftpResponseMessagePreparator.java | 2 +- .../response/SftpResponseNameMessagePreparator.java | 2 +- .../response/SftpResponseStatusMessagePreparator.java | 2 +- .../core/data/sftp/v4/handler/SftpV4InitMessageHandler.java | 2 +- .../sftp/v4/handler/holder/SftpV4FileAttributesHandler.java | 2 +- .../sftp/v4/handler/holder/SftpV4FileNameEntryHandler.java | 2 +- .../request/SftpV4RequestFileSetStatMessageHandler.java | 2 +- .../handler/request/SftpV4RequestFileStatMessageHandler.java | 2 +- .../handler/request/SftpV4RequestMakeDirMessageHandler.java | 2 +- .../v4/handler/request/SftpV4RequestOpenMessageHandler.java | 2 +- .../handler/request/SftpV4RequestSetStatMessageHandler.java | 2 +- .../v4/handler/request/SftpV4RequestStatMessageHandler.java | 2 +- .../response/SftpV4ResponseAttributesMessageHandler.java | 2 +- .../v4/handler/response/SftpV4ResponseNameMessageHandler.java | 2 +- .../SftpV4InitMessagePreparator.java | 2 +- .../holder/SftpV4FileAttributesPreparator.java | 2 +- .../holder/SftpV4FileNameEntryPreparator.java | 2 +- .../request/SftpV4RequestFileSetStatMessagePreparator.java | 4 ++-- .../request/SftpV4RequestFileStatMessagePreparator.java | 4 ++-- .../request/SftpV4RequestMakeDirMessagePreparator.java | 4 ++-- .../request/SftpV4RequestOpenMessagePreparator.java | 4 ++-- .../request/SftpV4RequestSetStatMessagePreparator.java | 4 ++-- .../request/SftpV4RequestStatMessagePreparator.java | 4 ++-- .../response/SftpV4ResponseAttributesMessagePreparator.java | 4 ++-- .../response/SftpV4ResponseNameMessagePreparator.java | 4 ++-- 169 files changed, 179 insertions(+), 179 deletions(-) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/SftpInitMessagePreparator.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/SftpUnknownMessagePreparator.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/SftpVersionMessagePreparator.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestCheckFileHandleMessagePreparator.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestCheckFileNameMessagePreparator.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestCopyDataMessagePreparator.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestCopyFileMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestExpandPathMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestExtendedMessagePreparator.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestFileStatVfsMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestFileSyncMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestGetTempFolderMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestHardlinkMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestHomeDirectoryMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestLimitsMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestLinkSetStatMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestMakeTempFolderMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestPosixRenameMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestSpaceAvailableMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestStatVfsMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestTextSeekMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestUnknownMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java (96%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_request/SftpRequestVendorIdMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_response/SftpResponseCheckFileMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_response/SftpResponseExtendedMessagePreparator.java (85%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_response/SftpResponseLimitsMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_response/SftpResponseSpaceAvailableMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_response/SftpResponseStatVfsMessagePreparator.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_response/SftpResponseUnknownMessagePreparator.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java (97%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extension/SftpAbstractExtensionPreparator.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extension/SftpExtensionFileStatVfsPreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extension/SftpExtensionNewlinePreparator.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extension/SftpExtensionStatVfsPreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extension/SftpExtensionUnknownPreparator.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extension/SftpExtensionVendorIdPreparator.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/extension/SftpExtensionWithVersionPreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/holder/SftpAclEntryPreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/holder/SftpFileAttributesPreparator.java (97%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/holder/SftpFileExtendedAttributePreparator.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/holder/SftpFileNameEntryPreparator.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/holder/SftpIdEntryPreparator.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/holder/SftpNameEntryPreparator.java (91%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestCloseMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestFileSetStatMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestFileStatMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestLinkStatMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestMakeDirMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestOpenDirMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestOpenMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestReadDirMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestReadLinkMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestReadMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestRealPathMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestRemoveDirMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestRemoveMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestRenameMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestSetStatMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestStatMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestSymbolicLinkMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/request/SftpRequestWriteMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/response/SftpResponseAttributesMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/response/SftpResponseDataMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/response/SftpResponseHandleMessagePreparator.java (95%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/response/SftpResponseMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/response/SftpResponseNameMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/{preperator => preparator}/response/SftpResponseStatusMessagePreparator.java (94%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/{preperator => preparator}/SftpV4InitMessagePreparator.java (93%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/{preperator => preparator}/holder/SftpV4FileAttributesPreparator.java (98%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/{preperator => preparator}/holder/SftpV4FileNameEntryPreparator.java (92%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/{preperator => preparator}/request/SftpV4RequestFileSetStatMessagePreparator.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/{preperator => preparator}/request/SftpV4RequestFileStatMessagePreparator.java (90%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/{preperator => preparator}/request/SftpV4RequestMakeDirMessagePreparator.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/{preperator => preparator}/request/SftpV4RequestOpenMessagePreparator.java (89%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/{preperator => preparator}/request/SftpV4RequestSetStatMessagePreparator.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/{preperator => preparator}/request/SftpV4RequestStatMessagePreparator.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/{preperator => preparator}/response/SftpV4ResponseAttributesMessagePreparator.java (88%) rename SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/{preperator => preparator}/response/SftpV4ResponseNameMessagePreparator.java (88%) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java index d83aa10ba..68ee0e229 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpInitMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.SftpMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpInitMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.SftpInitMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.SftpInitMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.SftpInitMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.SftpInitMessageSerializer; import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpUnknownMessageHandler.java index 2c7e6fabb..ab150a539 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpUnknownMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpUnknownMessageHandler.java @@ -11,7 +11,7 @@ import de.rub.nds.sshattacker.core.data.sftp.SftpMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpUnknownMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.SftpUnknownMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.SftpUnknownMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.SftpUnknownMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.SftpUnknownMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; import org.apache.logging.log4j.LogManager; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java index 23aefa925..8645a6aa6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/SftpVersionMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.SftpMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpVersionMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.SftpVersionMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.SftpVersionMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.SftpVersionMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.SftpVersionMessageSerializer; import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java index 9d8cfb554..fe3474bcc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCheckFileHandleMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCheckFileHandleMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestCheckFileHandleMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestCheckFileHandleMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestCheckFileHandleMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestCheckFileHandleMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java index cb23994a1..a1b2756f6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCheckFileNameMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCheckFileNameMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestCheckFileNameMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestCheckFileNameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestCheckFileNameMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestCheckFileNameMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCopyDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCopyDataMessageHandler.java index 8010d7b36..509de1c23 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCopyDataMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCopyDataMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCopyDataMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestCopyDataMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestCopyDataMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestCopyDataMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestCopyDataMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCopyFileMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCopyFileMessageHandler.java index 51a8c065e..a63c325d1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCopyFileMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestCopyFileMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCopyFileMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestCopyFileMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestCopyFileMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestCopyFileMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestCopyFileMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestExpandPathMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestExpandPathMessageHandler.java index e1a363bcd..47c8f158d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestExpandPathMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestExpandPathMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExpandPathMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestExpandPathMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestExpandPathMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestExpandPathMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestExpandPathMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java index e1c524859..e61d12bd3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestFileStatVfsMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestFileStatVfsMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestFileStatVfsMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestFileStatVfsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestFileStatVfsMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestFileStatVfsMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestFileSyncMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestFileSyncMessageHandler.java index a303c68a1..ebacf05dd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestFileSyncMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestFileSyncMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestFileSyncMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestFileSyncMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestFileSyncMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestFileSyncMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestFileSyncMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java index a2c4ba305..803548c62 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestGetTempFolderMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestGetTempFolderMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestGetTempFolderMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestGetTempFolderMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestGetTempFolderMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestGetTempFolderMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestHardlinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestHardlinkMessageHandler.java index 0e587db40..121560ef3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestHardlinkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestHardlinkMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestHardlinkMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestHardlinkMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestHardlinkMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestHardlinkMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestHardlinkMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java index 8e5cc81a9..68c5f47db 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestHomeDirectoryMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestHomeDirectoryMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestHomeDirectoryMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestHomeDirectoryMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestHomeDirectoryMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestHomeDirectoryMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestLimitsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestLimitsMessageHandler.java index 6ae375d22..790ad2795 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestLimitsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestLimitsMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestLimitsMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestLimitsMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestLimitsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestLimitsMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestLimitsMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java index 0a04070e8..10fd9227d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestLinkSetStatMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestLinkSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestLinkSetStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestLinkSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestLinkSetStatMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestLinkSetStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java index 4f4a01292..d6c1e9fa4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestMakeTempFolderMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestMakeTempFolderMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestMakeTempFolderMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestMakeTempFolderMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestMakeTempFolderMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestMakeTempFolderMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestPosixRenameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestPosixRenameMessageHandler.java index a14d54c3e..0ed89f705 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestPosixRenameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestPosixRenameMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestPosixRenameMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestPosixRenameMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestPosixRenameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestPosixRenameMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestPosixRenameMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java index f3e2ebcfb..0a4dbbdfb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestSpaceAvailableMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestSpaceAvailableMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestSpaceAvailableMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestSpaceAvailableMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestSpaceAvailableMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestSpaceAvailableMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestStatVfsMessageHandler.java index ddab29597..5b20a6132 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestStatVfsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestStatVfsMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestStatVfsMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestStatVfsMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestStatVfsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestStatVfsMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestStatVfsMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestTextSeekMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestTextSeekMessageHandler.java index f2fa50689..549f2eb12 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestTextSeekMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestTextSeekMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestTextSeekMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestTextSeekMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestTextSeekMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestTextSeekMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestTextSeekMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestUnknownMessageHandler.java index 9bcc028d3..e7706ff7e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestUnknownMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestUnknownMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestUnknownMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestUnknownMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestUnknownMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestUnknownMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestUnknownMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java index 6531612a5..ecc30a6ea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestUsersGroupsByIdMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestUsersGroupsByIdMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestUsersGroupsByIdMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestUsersGroupsByIdMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestUsersGroupsByIdMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestUsersGroupsByIdMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestVendorIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestVendorIdMessageHandler.java index c3e2b526b..ea25784ad 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestVendorIdMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_request/SftpRequestVendorIdMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestVendorIdMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_request.SftpRequestVendorIdMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request.SftpRequestVendorIdMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request.SftpRequestVendorIdMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_request.SftpRequestVendorIdMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseCheckFileMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseCheckFileMessageHandler.java index 21f57d742..9f225ca0e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseCheckFileMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseCheckFileMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseCheckFileMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response.SftpResponseCheckFileMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response.SftpResponseCheckFileMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_response.SftpResponseCheckFileMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response.SftpResponseCheckFileMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseLimitsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseLimitsMessageHandler.java index d8b9f704c..aa01596e3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseLimitsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseLimitsMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseLimitsMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response.SftpResponseLimitsMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response.SftpResponseLimitsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_response.SftpResponseLimitsMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response.SftpResponseLimitsMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java index 95755c475..0c71da36b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseSpaceAvailableMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseSpaceAvailableMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response.SftpResponseSpaceAvailableMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response.SftpResponseSpaceAvailableMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_response.SftpResponseSpaceAvailableMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response.SftpResponseSpaceAvailableMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseStatVfsMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseStatVfsMessageHandler.java index 2d52c60c4..a83ae0afd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseStatVfsMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseStatVfsMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseStatVfsMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response.SftpResponseStatVfsMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response.SftpResponseStatVfsMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_response.SftpResponseStatVfsMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response.SftpResponseStatVfsMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseUnknownMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseUnknownMessageHandler.java index cbb012ac1..40240e1e7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseUnknownMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseUnknownMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseUnknownMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response.SftpResponseUnknownMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response.SftpResponseUnknownMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_response.SftpResponseUnknownMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response.SftpResponseUnknownMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java index 65b361d0b..043d95e93 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extended_response/SftpResponseUsersGroupsByIdMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseUsersGroupsByIdMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extended_response.SftpResponseUsersGroupsByIdMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response.SftpResponseUsersGroupsByIdMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_response.SftpResponseUsersGroupsByIdMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extended_response.SftpResponseUsersGroupsByIdMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCheckFileHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCheckFileHandler.java index 778b04155..8513982cc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCheckFileHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCheckFileHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionCheckFile; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCopyDataHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCopyDataHandler.java index bb070159f..1d0bb966e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCopyDataHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCopyDataHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionCopyData; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCopyFileHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCopyFileHandler.java index 448f7a0a1..504546642 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCopyFileHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionCopyFileHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionCopyFile; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionExpandPathHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionExpandPathHandler.java index 7b7623ba3..7b3681035 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionExpandPathHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionExpandPathHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionExpandPath; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionFileStatVfsHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionFileStatVfsHandler.java index 2b684de60..6999595a1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionFileStatVfsHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionFileStatVfsHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionFileStatVfs; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionFileStatVfsPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionFileStatVfsPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionFileSyncHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionFileSyncHandler.java index b45562e7c..a6c8cc3ca 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionFileSyncHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionFileSyncHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionFileSync; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionGetTempFolderHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionGetTempFolderHandler.java index 70be8490c..ad71cbebf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionGetTempFolderHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionGetTempFolderHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionGetTempFolder; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionHardlinkHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionHardlinkHandler.java index 64a74f8a8..2b49d0390 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionHardlinkHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionHardlinkHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionHardlink; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionHomeDirectoryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionHomeDirectoryHandler.java index b9cd93589..c2207cbda 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionHomeDirectoryHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionHomeDirectoryHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionHomeDirectory; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLimitsHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLimitsHandler.java index 3221c69df..5d5941b11 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLimitsHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLimitsHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionLimits; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLinkSetStatHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLinkSetStatHandler.java index ead168a48..ae77cd8d9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLinkSetStatHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionLinkSetStatHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionLinkSetStat; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionMakeTempFolderHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionMakeTempFolderHandler.java index c1a6a9098..74c476248 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionMakeTempFolderHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionMakeTempFolderHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionMakeTempFolder; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionNewlineHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionNewlineHandler.java index 2294853bf..0f03c7b62 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionNewlineHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionNewlineHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionNewline; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionNewlineParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionNewlinePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionNewlinePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionNewlineSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionPosixRenameHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionPosixRenameHandler.java index 30f0e7f2c..6f8980822 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionPosixRenameHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionPosixRenameHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionPosixRename; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionSpaceAvailableHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionSpaceAvailableHandler.java index f6e586662..f853140a5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionSpaceAvailableHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionSpaceAvailableHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionSpaceAvailable; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionStatVfsHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionStatVfsHandler.java index 016e5477b..3f35a3501 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionStatVfsHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionStatVfsHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionStatVfs; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionStatVfsPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionStatVfsPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionTextSeekHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionTextSeekHandler.java index b1c6a9de1..08114319c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionTextSeekHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionTextSeekHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionTextSeek; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUnknownHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUnknownHandler.java index 80819bd90..26cd094bf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUnknownHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUnknownHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionUnknown; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionUnknownParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionUnknownPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionUnknownPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionUnknownSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUsersGroupsByIdHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUsersGroupsByIdHandler.java index 302b03bca..8f854fb31 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUsersGroupsByIdHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionUsersGroupsByIdHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionUsersGroupsById; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionWithVersionParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionWithVersionPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionWithVersionPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionWithVersionSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionVendorIdHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionVendorIdHandler.java index 08e1d16db..a0b8176f0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionVendorIdHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/extension/SftpExtensionVendorIdHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionVendorId; import de.rub.nds.sshattacker.core.data.sftp.common.parser.extension.SftpExtensionVendorIdParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension.SftpExtensionVendorIdPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension.SftpExtensionVendorIdPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.extension.SftpExtensionVendorIdSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpAclEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpAclEntryHandler.java index ee4a7c317..964d027cb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpAclEntryHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpAclEntryHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpAclEntry; import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpAclEntryParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder.SftpAclEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.holder.SftpAclEntryPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder.SftpAclEntrySerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileAttributesHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileAttributesHandler.java index 48e218e7e..6ba717920 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileAttributesHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileAttributesHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileAttributes; import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpFileAttributesParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder.SftpFileAttributesPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.holder.SftpFileAttributesPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder.SftpFileAttributesSerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileExtendedAttributeHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileExtendedAttributeHandler.java index a1d3c2d70..3951b3e30 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileExtendedAttributeHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileExtendedAttributeHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileExtendedAttribute; import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpFileExtendedAttributeParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder.SftpFileExtendedAttributePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.holder.SftpFileExtendedAttributePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder.SftpFileExtendedAttributeSerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileNameEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileNameEntryHandler.java index 8e1bfad1a..6021e3b18 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileNameEntryHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpFileNameEntryHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileNameEntry; import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpFileNameEntryParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder.SftpFileNameEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.holder.SftpFileNameEntryPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder.SftpFileNameEntrySerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpIdEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpIdEntryHandler.java index 15d9c0b2b..4dcdde5ed 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpIdEntryHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpIdEntryHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpIdEntry; import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpIdEntryParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder.SftpIdEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.holder.SftpIdEntryPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder.SftpIdEntrySerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpNameEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpNameEntryHandler.java index 011a1881e..e3d62923d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpNameEntryHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/holder/SftpNameEntryHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpNameEntry; import de.rub.nds.sshattacker.core.data.sftp.common.parser.holder.SftpNameEntryParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder.SftpNameEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.holder.SftpNameEntryPreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.holder.SftpNameEntrySerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestCloseMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestCloseMessageHandler.java index bef5d9210..29e52335f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestCloseMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestCloseMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestCloseMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestCloseMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestCloseMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestCloseMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestCloseMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestFileSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestFileSetStatMessageHandler.java index 7a8bdc66c..8508f3e26 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestFileSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestFileSetStatMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestFileSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestFileSetStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestFileSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestFileSetStatMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestFileSetStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestFileStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestFileStatMessageHandler.java index fdf3edbb7..9a61d485f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestFileStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestFileStatMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestFileStatMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestFileStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestFileStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestFileStatMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestFileStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestLinkStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestLinkStatMessageHandler.java index 51d932722..e2f412567 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestLinkStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestLinkStatMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestLinkStatMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestLinkStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestLinkStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestLinkStatMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestLinkStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestMakeDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestMakeDirMessageHandler.java index cefd41603..bd13ec9a5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestMakeDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestMakeDirMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestMakeDirMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestMakeDirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMakeDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestMakeDirMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestMakeDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestOpenDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestOpenDirMessageHandler.java index 483e31475..056df3f23 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestOpenDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestOpenDirMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestOpenDirMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestOpenDirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestOpenDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestOpenDirMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestOpenDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestOpenMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestOpenMessageHandler.java index 0565c8337..6450ff3be 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestOpenMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestOpenMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestOpenMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestOpenMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestOpenMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestOpenMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestOpenMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadDirMessageHandler.java index 5240fb212..c31068b32 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadDirMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadDirMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestReadDirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestReadDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestReadDirMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestReadDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadLinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadLinkMessageHandler.java index 163880756..79500e7b8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadLinkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadLinkMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadLinkMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestReadLinkMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestReadLinkMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestReadLinkMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestReadLinkMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadMessageHandler.java index 46347a8a6..17ffcc4e6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestReadMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestReadMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestReadMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestReadMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestReadMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRealPathMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRealPathMessageHandler.java index f0146af27..a372d713c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRealPathMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRealPathMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRealPathMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestRealPathMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestRealPathMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestRealPathMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestRealPathMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRemoveDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRemoveDirMessageHandler.java index 7702dd48a..896eece4c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRemoveDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRemoveDirMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRemoveDirMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestRemoveDirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestRemoveDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestRemoveDirMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestRemoveDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRemoveMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRemoveMessageHandler.java index ef5dd71e1..61411b6a8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRemoveMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRemoveMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRemoveMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestRemoveMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestRemoveMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestRemoveMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestRemoveMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRenameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRenameMessageHandler.java index 4c6ed1821..db69fa288 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRenameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestRenameMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRenameMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestRenameMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestRenameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestRenameMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestRenameMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestSetStatMessageHandler.java index 4050bfc03..3b50a69a6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestSetStatMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestSetStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestSetStatMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestSetStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestStatMessageHandler.java index bf29f8b60..5def5c512 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestStatMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestStatMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestStatMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestSymbolicLinkMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestSymbolicLinkMessageHandler.java index 3489082fb..5c2149138 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestSymbolicLinkMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestSymbolicLinkMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestSymbolicLinkMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestSymbolicLinkMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestSymbolicLinkMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestSymbolicLinkMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestSymbolicLinkMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestWriteMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestWriteMessageHandler.java index ed3422736..303d28986 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestWriteMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/request/SftpRequestWriteMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWriteMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.request.SftpRequestWriteMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestWriteMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestWriteMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.request.SftpRequestWriteMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseAttributesMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseAttributesMessageHandler.java index 8c34641e2..e82946127 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseAttributesMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseAttributesMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseAttributesMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseAttributesMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseAttributesMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.response.SftpResponseAttributesMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseAttributesMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseDataMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseDataMessageHandler.java index b79c295f7..cee712425 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseDataMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseDataMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseDataMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseDataMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseDataMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.response.SftpResponseDataMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseDataMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseHandleMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseHandleMessageHandler.java index 9e2ca90f3..d3c9f3461 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseHandleMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseHandleMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseHandleMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseHandleMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseHandleMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.response.SftpResponseHandleMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseHandleMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseNameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseNameMessageHandler.java index 3f1891fb3..e734cdfaf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseNameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseNameMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseNameMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseNameMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseNameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.response.SftpResponseNameMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseNameMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseStatusMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseStatusMessageHandler.java index eb92257a2..b5452aa17 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseStatusMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/handler/response/SftpResponseStatusMessageHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseStatusMessage; import de.rub.nds.sshattacker.core.data.sftp.common.parser.response.SftpResponseStatusMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseStatusMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.response.SftpResponseStatusMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.serializer.response.SftpResponseStatusMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpInitMessagePreparator.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpInitMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpInitMessagePreparator.java index 79b03c4c6..17301ddb7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpInitMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpUnknownMessagePreparator.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpUnknownMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpUnknownMessagePreparator.java index 79c7655f8..592f0ea33 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpUnknownMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator; import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.common.message.SftpUnknownMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpVersionMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpVersionMessagePreparator.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpVersionMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpVersionMessagePreparator.java index 51837f6c1..eebbc69b4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/SftpVersionMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpVersionMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java index dafc34256..b33cb4cea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.HashAlgorithm; import de.rub.nds.sshattacker.core.constants.SftpExtension; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCheckFileNameMessagePreparator.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCheckFileNameMessagePreparator.java index ace26c833..246216a5c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCheckFileNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCheckFileNameMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.HashAlgorithm; import de.rub.nds.sshattacker.core.constants.SftpExtension; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCopyDataMessagePreparator.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCopyDataMessagePreparator.java index a29f82386..7d3904341 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCopyDataMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCopyDataMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCopyFileMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCopyFileMessagePreparator.java index a2c155df0..fa5694a21 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestCopyFileMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCopyFileMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestCopyFileMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestExpandPathMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestExpandPathMessagePreparator.java index bd9bceec0..10df48b45 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExpandPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestExpandPathMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExpandPathMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExtendedMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestExtendedMessagePreparator.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExtendedMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestExtendedMessagePreparator.java index b5e1fc9e7..78e4121ea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestExtendedMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestExtendedMessagePreparator.java @@ -5,12 +5,12 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestExtendedMessage; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestMessagePreparator; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; public abstract class SftpRequestExtendedMessagePreparator> diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestFileStatVfsMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestFileStatVfsMessagePreparator.java index f540ef5e3..7ac9f2dda 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestFileStatVfsMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestFileStatVfsMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestFileSyncMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestFileSyncMessagePreparator.java index cad062e70..6e0ebf9e4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestFileSyncMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestFileSyncMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestFileSyncMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestGetTempFolderMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestGetTempFolderMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestGetTempFolderMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestGetTempFolderMessagePreparator.java index 0b5c6bf9c..29a4838a9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestGetTempFolderMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestGetTempFolderMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestGetTempFolderMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestHardlinkMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestHardlinkMessagePreparator.java index d006a152b..2a338c17c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestHardlinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestHardlinkMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestHardlinkMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java index 27cb2f36c..f3d1e21c1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestHomeDirectoryMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLimitsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestLimitsMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLimitsMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestLimitsMessagePreparator.java index d527e045e..ac2910627 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLimitsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestLimitsMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestLimitsMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestLinkSetStatMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestLinkSetStatMessagePreparator.java index a0100b301..713fe3a5f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestLinkSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestLinkSetStatMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestLinkSetStatMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java index 7136e02e1..f82c838f5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestMakeTempFolderMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestPosixRenameMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestPosixRenameMessagePreparator.java index 506823f54..316c21cee 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestPosixRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestPosixRenameMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestPosixRenameMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java index cf4d2c4e5..6ad844c3f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestSpaceAvailableMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestStatVfsMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestStatVfsMessagePreparator.java index 8af2629fb..da8683554 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestStatVfsMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestStatVfsMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestTextSeekMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestTextSeekMessagePreparator.java index 1bf354dc3..3cb26d0cb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestTextSeekMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestTextSeekMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestTextSeekMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestUnknownMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUnknownMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestUnknownMessagePreparator.java index f20a23e4a..15a8afe3e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestUnknownMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestUnknownMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java similarity index 96% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java index d849beedf..023a3b5b4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpExtension; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestVendorIdMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestVendorIdMessagePreparator.java index f9d90a25a..b63f6ef5c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_request/SftpRequestVendorIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestVendorIdMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_request; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_request.SftpRequestVendorIdMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseCheckFileMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseCheckFileMessagePreparator.java index 6433786c6..b755cc4d2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseCheckFileMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseCheckFileMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_response; import de.rub.nds.sshattacker.core.constants.HashAlgorithm; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseCheckFileMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseExtendedMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseExtendedMessagePreparator.java similarity index 85% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseExtendedMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseExtendedMessagePreparator.java index 4b69ec115..00a76804c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseExtendedMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseExtendedMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseMessage; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.response.SftpResponseMessagePreparator; public abstract class SftpResponseExtendedMessagePreparator> extends SftpResponseMessagePreparator { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseLimitsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseLimitsMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseLimitsMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseLimitsMessagePreparator.java index af1709027..3224232c1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseLimitsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseLimitsMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_response; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseLimitsMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java index b0645433f..c855039e6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_response; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseSpaceAvailableMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseStatVfsMessagePreparator.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseStatVfsMessagePreparator.java index dd45fb8c4..bd0636991 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseStatVfsMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_response; import de.rub.nds.sshattacker.core.constants.SftpVfsFlag; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseStatVfsMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseUnknownMessagePreparator.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseUnknownMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseUnknownMessagePreparator.java index e489d1e04..27a3eaddb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseUnknownMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_response; import de.rub.nds.sshattacker.core.data.sftp.common.message.extended_response.SftpResponseUnknownMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java similarity index 97% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java index dd7dac7dc..a05878a06 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extended_response; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extended_response; import de.rub.nds.modifiablevariable.ModifiableVariable; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpAbstractExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpAbstractExtensionPreparator.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpAbstractExtensionPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpAbstractExtensionPreparator.java index cb2058794..95a8d1625 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpAbstractExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpAbstractExtensionPreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpAbstractExtension; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionFileStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionFileStatVfsPreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionFileStatVfsPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionFileStatVfsPreparator.java index 08678f4ca..849dc5d54 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionFileStatVfsPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionFileStatVfsPreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionFileStatVfs; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionNewlinePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionNewlinePreparator.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionNewlinePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionNewlinePreparator.java index b7e576712..21723a254 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionNewlinePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionNewlinePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionNewline; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionStatVfsPreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionStatVfsPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionStatVfsPreparator.java index 53d69e73f..83966a04f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionStatVfsPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionStatVfsPreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionStatVfs; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionUnknownPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionUnknownPreparator.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionUnknownPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionUnknownPreparator.java index f2310ae28..8a943abf6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionUnknownPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionUnknownPreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionUnknown; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionVendorIdPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionVendorIdPreparator.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionVendorIdPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionVendorIdPreparator.java index 9b1b46b44..80883318e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionVendorIdPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionVendorIdPreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension; import de.rub.nds.sshattacker.core.constants.DataFormatConstants; import de.rub.nds.sshattacker.core.constants.SftpExtension; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionWithVersionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionWithVersionPreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionWithVersionPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionWithVersionPreparator.java index 79a3b1fa0..f1ac4a9aa 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/extension/SftpExtensionWithVersionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionWithVersionPreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.extension; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.extension; import de.rub.nds.sshattacker.core.constants.SftpExtension; import de.rub.nds.sshattacker.core.data.sftp.common.message.extension.SftpExtensionWithVersion; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpAclEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpAclEntryPreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpAclEntryPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpAclEntryPreparator.java index 82031efbb..dadbd3a0f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpAclEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpAclEntryPreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.holder; import de.rub.nds.sshattacker.core.constants.SftpAceFlag; import de.rub.nds.sshattacker.core.constants.SftpAceMask; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpFileAttributesPreparator.java similarity index 97% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileAttributesPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpFileAttributesPreparator.java index ea26e5f1f..fcbb5a5ab 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileAttributesPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpFileAttributesPreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.holder; import de.rub.nds.sshattacker.core.config.Config; import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileExtendedAttributePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpFileExtendedAttributePreparator.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileExtendedAttributePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpFileExtendedAttributePreparator.java index a3a432ba8..2e8f60f9b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileExtendedAttributePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpFileExtendedAttributePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.holder; import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileExtendedAttribute; import de.rub.nds.sshattacker.core.protocol.common.Preparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpFileNameEntryPreparator.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileNameEntryPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpFileNameEntryPreparator.java index 6b0b320f2..26770909b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpFileNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpFileNameEntryPreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.holder; import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpFileNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Preparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpIdEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpIdEntryPreparator.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpIdEntryPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpIdEntryPreparator.java index d27ae7e4a..fbf3df425 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpIdEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpIdEntryPreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.holder; import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpIdEntry; import de.rub.nds.sshattacker.core.protocol.common.Preparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpNameEntryPreparator.java similarity index 91% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpNameEntryPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpNameEntryPreparator.java index 044790404..905ca4fb1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/holder/SftpNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/holder/SftpNameEntryPreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.holder; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.holder; import de.rub.nds.sshattacker.core.data.sftp.common.message.holder.SftpNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Preparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestCloseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestCloseMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestCloseMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestCloseMessagePreparator.java index 53ef83c8a..2b2122a45 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestCloseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestCloseMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestCloseMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestFileSetStatMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileSetStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestFileSetStatMessagePreparator.java index e3eacb0c7..e408e5a63 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestFileSetStatMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestFileSetStatMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestFileStatMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestFileStatMessagePreparator.java index e75cb35a6..fae4ee783 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestFileStatMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestFileStatMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestLinkStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestLinkStatMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestLinkStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestLinkStatMessagePreparator.java index f25dfc620..359af463e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestLinkStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestLinkStatMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestLinkStatMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestMakeDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestMakeDirMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestMakeDirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestMakeDirMessagePreparator.java index 91232736a..231bffe98 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestMakeDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestMakeDirMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestMakeDirMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestMessagePreparator.java index b2de5d8b8..82c293444 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestOpenDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestOpenDirMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestOpenDirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestOpenDirMessagePreparator.java index e2aae6521..6df705995 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestOpenDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestOpenDirMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestOpenDirMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestOpenMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestOpenMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestOpenMessagePreparator.java index 65f3adb0c..ad75349dc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestOpenMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadDirMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadDirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadDirMessagePreparator.java index 03ebbeabe..a42d7f22b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadDirMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadDirMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadLinkMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadLinkMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadLinkMessagePreparator.java index 5f56dd5a8..ca412a046 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadLinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadLinkMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadLinkMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadMessagePreparator.java index e1d51675d..85a74225d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestReadMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestReadMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRealPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRealPathMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRealPathMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRealPathMessagePreparator.java index 28ab83d68..523c77005 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRealPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRealPathMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRealPathMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRemoveDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRemoveDirMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRemoveDirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRemoveDirMessagePreparator.java index 6706ad0b3..83f0790b4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRemoveDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRemoveDirMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRemoveDirMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRemoveMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRemoveMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRemoveMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRemoveMessagePreparator.java index ca61c0f98..bba1e952e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRemoveMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRemoveMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRemoveMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRenameMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRenameMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRenameMessagePreparator.java index 40fd5698e..ff2fd75ab 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRenameMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestRenameMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestSetStatMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestSetStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestSetStatMessagePreparator.java index aeee366c0..68025fd9c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestSetStatMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestSetStatMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestStatMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestStatMessagePreparator.java index d4ae789f2..fc3171c97 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestStatMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestStatMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestSymbolicLinkMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestSymbolicLinkMessagePreparator.java index 8a42c883d..530f53805 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestSymbolicLinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestSymbolicLinkMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestSymbolicLinkMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestWriteMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestWriteMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestWriteMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestWriteMessagePreparator.java index fa3734843..7bbc98cf8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/request/SftpRequestWriteMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestWriteMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.request.SftpRequestWriteMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseAttributesMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseAttributesMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseAttributesMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseAttributesMessagePreparator.java index 572991827..e06d01b11 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseAttributesMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseAttributesMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseAttributesMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseDataMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseDataMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseDataMessagePreparator.java index fbc6c5904..40fce545d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseDataMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseDataMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseHandleMessagePreparator.java similarity index 95% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseHandleMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseHandleMessagePreparator.java index d33e47067..8fbe0f350 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseHandleMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseHandleMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseMessagePreparator.java index cea6046ea..383b26103 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseNameMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseNameMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseNameMessagePreparator.java index c76facfea..dd8690b61 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseNameMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.common.message.response.SftpResponseNameMessage; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseStatusMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseStatusMessagePreparator.java similarity index 94% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseStatusMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseStatusMessagePreparator.java index ac49ca1c4..9c2e51e13 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preperator/response/SftpResponseStatusMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseStatusMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.common.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.common.preparator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.constants.SftpStatusCode; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java index 29d5d4139..2256840c0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/SftpV4InitMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.SftpMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.v4.message.SftpV4InitMessage; import de.rub.nds.sshattacker.core.data.sftp.v4.parser.SftpV4InitMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.SftpV4InitMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.preparator.SftpV4InitMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.SftpV4InitMessageSerializer; import de.rub.nds.sshattacker.core.protocol.common.MessageSentHandler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileAttributesHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileAttributesHandler.java index b9f16d4ee..cfcbaa9d4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileAttributesHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileAttributesHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileAttributes; import de.rub.nds.sshattacker.core.data.sftp.v4.parser.holder.SftpV4FileAttributesParser; -import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.holder.SftpV4FileAttributesPreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.preparator.holder.SftpV4FileAttributesPreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.holder.SftpV4FileAttributesSerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileNameEntryHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileNameEntryHandler.java index 0c92974d0..6e9b549a4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileNameEntryHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/holder/SftpV4FileNameEntryHandler.java @@ -9,7 +9,7 @@ import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileNameEntry; import de.rub.nds.sshattacker.core.data.sftp.v4.parser.holder.SftpV4FileNameEntryParser; -import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.holder.SftpV4FileNameEntryPreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.preparator.holder.SftpV4FileNameEntryPreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.holder.SftpV4FileNameEntrySerializer; import de.rub.nds.sshattacker.core.protocol.common.Handler; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileSetStatMessageHandler.java index 7c612a0a7..96ffc6212 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileSetStatMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestFileSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.v4.parser.request.SftpV4RequestFileSetStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request.SftpV4RequestFileSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.preparator.request.SftpV4RequestFileSetStatMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request.SftpV4RequestFileSetStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileStatMessageHandler.java index eed41bf9e..15e1efc93 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestFileStatMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestFileStatMessage; import de.rub.nds.sshattacker.core.data.sftp.v4.parser.request.SftpV4RequestFileStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request.SftpV4RequestFileStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.preparator.request.SftpV4RequestFileStatMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request.SftpV4RequestFileStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestMakeDirMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestMakeDirMessageHandler.java index 177073821..9c77ee132 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestMakeDirMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestMakeDirMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestMakeDirMessage; import de.rub.nds.sshattacker.core.data.sftp.v4.parser.request.SftpV4RequestMakeDirMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request.SftpV4RequestMakeDirMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.preparator.request.SftpV4RequestMakeDirMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request.SftpV4RequestMakeDirMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestOpenMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestOpenMessageHandler.java index 8c05863c6..ca234985a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestOpenMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestOpenMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestOpenMessage; import de.rub.nds.sshattacker.core.data.sftp.v4.parser.request.SftpV4RequestOpenMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request.SftpV4RequestOpenMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.preparator.request.SftpV4RequestOpenMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request.SftpV4RequestOpenMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestSetStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestSetStatMessageHandler.java index 6e4610076..4ff0721ab 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestSetStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestSetStatMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestSetStatMessage; import de.rub.nds.sshattacker.core.data.sftp.v4.parser.request.SftpV4RequestSetStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request.SftpV4RequestSetStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.preparator.request.SftpV4RequestSetStatMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request.SftpV4RequestSetStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestStatMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestStatMessageHandler.java index aeebd1e21..918bc5014 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestStatMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/request/SftpV4RequestStatMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.request.SftpRequestMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestStatMessage; import de.rub.nds.sshattacker.core.data.sftp.v4.parser.request.SftpV4RequestStatMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request.SftpV4RequestStatMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.preparator.request.SftpV4RequestStatMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.request.SftpV4RequestStatMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseAttributesMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseAttributesMessageHandler.java index 3fc4bbffc..0c7ad4779 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseAttributesMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseAttributesMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseAttributesMessage; import de.rub.nds.sshattacker.core.data.sftp.v4.parser.response.SftpV4ResponseAttributesMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.response.SftpV4ResponseAttributesMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.preparator.response.SftpV4ResponseAttributesMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.response.SftpV4ResponseAttributesMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseNameMessageHandler.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseNameMessageHandler.java index 6496bc2c6..baa869513 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseNameMessageHandler.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/handler/response/SftpV4ResponseNameMessageHandler.java @@ -10,7 +10,7 @@ import de.rub.nds.sshattacker.core.data.sftp.common.handler.response.SftpResponseMessageHandler; import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseNameMessage; import de.rub.nds.sshattacker.core.data.sftp.v4.parser.response.SftpV4ResponseNameMessageParser; -import de.rub.nds.sshattacker.core.data.sftp.v4.preperator.response.SftpV4ResponseNameMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.v4.preparator.response.SftpV4ResponseNameMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.serializer.response.SftpV4ResponseNameMessageSerializer; import de.rub.nds.sshattacker.core.state.SshContext; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/SftpV4InitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/SftpV4InitMessagePreparator.java similarity index 93% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/SftpV4InitMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/SftpV4InitMessagePreparator.java index 645363464..c522c252f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/SftpV4InitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/SftpV4InitMessagePreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.v4.preperator; +package de.rub.nds.sshattacker.core.data.sftp.v4.preparator; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; import de.rub.nds.sshattacker.core.data.sftp.SftpMessagePreparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileAttributesPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/holder/SftpV4FileAttributesPreparator.java similarity index 98% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileAttributesPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/holder/SftpV4FileAttributesPreparator.java index fef5ea6d9..36642b5a0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileAttributesPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/holder/SftpV4FileAttributesPreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.holder; +package de.rub.nds.sshattacker.core.data.sftp.v4.preparator.holder; import de.rub.nds.modifiablevariable.ModifiableVariable; import de.rub.nds.sshattacker.core.config.Config; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/holder/SftpV4FileNameEntryPreparator.java similarity index 92% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/holder/SftpV4FileNameEntryPreparator.java index ffe2a4efd..0f546894a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/holder/SftpV4FileNameEntryPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/holder/SftpV4FileNameEntryPreparator.java @@ -5,7 +5,7 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.holder; +package de.rub.nds.sshattacker.core.data.sftp.v4.preparator.holder; import de.rub.nds.sshattacker.core.data.sftp.v4.message.holder.SftpV4FileNameEntry; import de.rub.nds.sshattacker.core.protocol.common.Preparator; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestFileSetStatMessagePreparator.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileSetStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestFileSetStatMessagePreparator.java index ca65dafa7..d752e64d6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestFileSetStatMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.v4.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestFileSetStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestFileStatMessagePreparator.java similarity index 90% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestFileStatMessagePreparator.java index 3172e62a6..10f086e19 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestFileStatMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.v4.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestFileStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestMakeDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestMakeDirMessagePreparator.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestMakeDirMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestMakeDirMessagePreparator.java index 7c23ce27d..744960902 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestMakeDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestMakeDirMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.v4.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestMakeDirMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestOpenMessagePreparator.java similarity index 89% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestOpenMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestOpenMessagePreparator.java index 2b917801e..7ac27875f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestOpenMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.v4.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpFileOpenFlag; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestOpenMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestSetStatMessagePreparator.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestSetStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestSetStatMessagePreparator.java index b2de2c465..d49e1eb4e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestSetStatMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.v4.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestSetStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestStatMessagePreparator.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestStatMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestStatMessagePreparator.java index ad7cb255c..44e92d81a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/request/SftpV4RequestStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestStatMessagePreparator.java @@ -5,11 +5,11 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.request; +package de.rub.nds.sshattacker.core.data.sftp.v4.preparator.request; import de.rub.nds.sshattacker.core.constants.SftpFileAttributeFlag; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.request.SftpRequestMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.request.SftpRequestMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.message.request.SftpV4RequestStatMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/response/SftpV4ResponseAttributesMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/response/SftpV4ResponseAttributesMessagePreparator.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/response/SftpV4ResponseAttributesMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/response/SftpV4ResponseAttributesMessagePreparator.java index 488172e34..7cdb562a1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/response/SftpV4ResponseAttributesMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/response/SftpV4ResponseAttributesMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.v4.preparator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.response.SftpResponseMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseAttributesMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/response/SftpV4ResponseNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/response/SftpV4ResponseNameMessagePreparator.java similarity index 88% rename from SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/response/SftpV4ResponseNameMessagePreparator.java rename to SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/response/SftpV4ResponseNameMessagePreparator.java index cce30a47a..a03ab2a5e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preperator/response/SftpV4ResponseNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/response/SftpV4ResponseNameMessagePreparator.java @@ -5,10 +5,10 @@ * * Licensed under Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 */ -package de.rub.nds.sshattacker.core.data.sftp.v4.preperator.response; +package de.rub.nds.sshattacker.core.data.sftp.v4.preparator.response; import de.rub.nds.sshattacker.core.constants.SftpPacketTypeConstant; -import de.rub.nds.sshattacker.core.data.sftp.common.preperator.response.SftpResponseMessagePreparator; +import de.rub.nds.sshattacker.core.data.sftp.common.preparator.response.SftpResponseMessagePreparator; import de.rub.nds.sshattacker.core.data.sftp.v4.message.response.SftpV4ResponseNameMessage; import de.rub.nds.sshattacker.core.workflow.chooser.Chooser; From bafc05431276c56ed7c7f8e142043c2ca8948224 Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 22 Mar 2025 15:00:04 +0100 Subject: [PATCH 202/203] Change visibility of preparator methods from public to protected. I see no reason why they should be public. Before my work the visibilities were mixed for the preparator methods, then I changed them all to public. But I now think it would be best to keep them protected, because you should prepare a message completely or just don't. --- .../data/sftp/common/preparator/SftpInitMessagePreparator.java | 2 +- .../sftp/common/preparator/SftpUnknownMessagePreparator.java | 2 +- .../sftp/common/preparator/SftpVersionMessagePreparator.java | 2 +- .../SftpRequestCheckFileHandleMessagePreparator.java | 2 +- .../SftpRequestCheckFileNameMessagePreparator.java | 2 +- .../extended_request/SftpRequestCopyDataMessagePreparator.java | 2 +- .../extended_request/SftpRequestCopyFileMessagePreparator.java | 2 +- .../SftpRequestExpandPathMessagePreparator.java | 2 +- .../extended_request/SftpRequestExtendedMessagePreparator.java | 2 +- .../SftpRequestFileStatVfsMessagePreparator.java | 2 +- .../extended_request/SftpRequestFileSyncMessagePreparator.java | 2 +- .../SftpRequestGetTempFolderMessagePreparator.java | 2 +- .../extended_request/SftpRequestHardlinkMessagePreparator.java | 2 +- .../SftpRequestHomeDirectoryMessagePreparator.java | 2 +- .../extended_request/SftpRequestLimitsMessagePreparator.java | 2 +- .../SftpRequestLinkSetStatMessagePreparator.java | 2 +- .../SftpRequestMakeTempFolderMessagePreparator.java | 2 +- .../SftpRequestPosixRenameMessagePreparator.java | 2 +- .../SftpRequestSpaceAvailableMessagePreparator.java | 2 +- .../extended_request/SftpRequestStatVfsMessagePreparator.java | 2 +- .../extended_request/SftpRequestTextSeekMessagePreparator.java | 2 +- .../extended_request/SftpRequestUnknownMessagePreparator.java | 2 +- .../SftpRequestUsersGroupsByIdMessagePreparator.java | 2 +- .../extended_request/SftpRequestVendorIdMessagePreparator.java | 2 +- .../SftpResponseCheckFileMessagePreparator.java | 2 +- .../extended_response/SftpResponseLimitsMessagePreparator.java | 3 ++- .../SftpResponseSpaceAvailableMessagePreparator.java | 2 +- .../SftpResponseStatVfsMessagePreparator.java | 2 +- .../SftpResponseUnknownMessagePreparator.java | 2 +- .../SftpResponseUsersGroupsByIdMessagePreparator.java | 2 +- .../extension/SftpExtensionFileStatVfsPreparator.java | 3 ++- .../preparator/extension/SftpExtensionNewlinePreparator.java | 2 +- .../preparator/extension/SftpExtensionStatVfsPreparator.java | 2 +- .../preparator/extension/SftpExtensionUnknownPreparator.java | 2 +- .../preparator/extension/SftpExtensionVendorIdPreparator.java | 2 +- .../extension/SftpExtensionWithVersionPreparator.java | 2 +- .../preparator/request/SftpRequestCloseMessagePreparator.java | 2 +- .../request/SftpRequestFileSetStatMessagePreparator.java | 2 +- .../request/SftpRequestFileStatMessagePreparator.java | 3 ++- .../request/SftpRequestLinkStatMessagePreparator.java | 3 ++- .../request/SftpRequestMakeDirMessagePreparator.java | 3 ++- .../preparator/request/SftpRequestMessagePreparator.java | 2 +- .../request/SftpRequestOpenDirMessagePreparator.java | 3 ++- .../preparator/request/SftpRequestOpenMessagePreparator.java | 2 +- .../request/SftpRequestReadDirMessagePreparator.java | 3 ++- .../request/SftpRequestReadLinkMessagePreparator.java | 3 ++- .../preparator/request/SftpRequestReadMessagePreparator.java | 2 +- .../request/SftpRequestRealPathMessagePreparator.java | 3 ++- .../request/SftpRequestRemoveDirMessagePreparator.java | 2 +- .../preparator/request/SftpRequestRemoveMessagePreparator.java | 3 ++- .../preparator/request/SftpRequestRenameMessagePreparator.java | 3 ++- .../request/SftpRequestSetStatMessagePreparator.java | 3 ++- .../preparator/request/SftpRequestStatMessagePreparator.java | 2 +- .../request/SftpRequestSymbolicLinkMessagePreparator.java | 2 +- .../preparator/request/SftpRequestWriteMessagePreparator.java | 2 +- .../response/SftpResponseAttributesMessagePreparator.java | 2 +- .../preparator/response/SftpResponseDataMessagePreparator.java | 3 ++- .../response/SftpResponseHandleMessagePreparator.java | 3 ++- .../preparator/response/SftpResponseMessagePreparator.java | 2 +- .../preparator/response/SftpResponseNameMessagePreparator.java | 3 ++- .../response/SftpResponseStatusMessagePreparator.java | 3 ++- .../data/sftp/v4/preparator/SftpV4InitMessagePreparator.java | 2 +- .../request/SftpV4RequestFileSetStatMessagePreparator.java | 2 +- .../request/SftpV4RequestFileStatMessagePreparator.java | 2 +- .../request/SftpV4RequestMakeDirMessagePreparator.java | 2 +- .../preparator/request/SftpV4RequestOpenMessagePreparator.java | 3 ++- .../request/SftpV4RequestSetStatMessagePreparator.java | 2 +- .../preparator/request/SftpV4RequestStatMessagePreparator.java | 3 ++- .../response/SftpV4ResponseAttributesMessagePreparator.java | 2 +- .../response/SftpV4ResponseNameMessagePreparator.java | 3 ++- .../core/data/string/StringDataMessagePreparator.java | 2 +- .../core/data/unknown/UnknownDataMessagePreparator.java | 2 +- .../core/packet/preparator/BinaryPacketPreparator.java | 2 +- .../core/packet/preparator/BlobPacketPreparator.java | 2 +- .../preparator/UserAuthBannerMessagePreparator.java | 2 +- .../preparator/UserAuthFailureMessagePreparator.java | 2 +- .../preparator/UserAuthHostbasedMessagePreparator.java | 2 +- .../preparator/UserAuthInfoRequestMessagePreparator.java | 3 ++- .../preparator/UserAuthInfoResponseMessagePreparator.java | 2 +- .../UserAuthKeyboardInteractiveMessagePreparator.java | 2 +- .../preparator/UserAuthNoneMessagePreparator.java | 2 +- .../preparator/UserAuthPasswordMessagePreparator.java | 2 +- .../preparator/UserAuthPkOkMessagePreparator.java | 2 +- .../preparator/UserAuthPubkeyMessagePreparator.java | 2 +- .../preparator/UserAuthRequestMessagePreparator.java | 2 +- .../preparator/UserAuthSuccessMessagePreparator.java | 2 +- .../preparator/UserAuthUnknownMessagePreparator.java | 2 +- .../sshattacker/core/protocol/common/SshMessagePreparator.java | 2 +- .../connection/preparator/ChannelCloseMessagePreparator.java | 2 +- .../connection/preparator/ChannelDataMessagePreparator.java | 3 ++- .../connection/preparator/ChannelEofMessagePreparator.java | 3 ++- .../preparator/ChannelExtendedDataMessagePreparator.java | 2 +- .../connection/preparator/ChannelFailureMessagePreparator.java | 2 +- .../preparator/ChannelOpenConfirmationMessagePreparator.java | 2 +- .../preparator/ChannelOpenFailureMessagePreparator.java | 2 +- .../connection/preparator/ChannelOpenMessagePreparator.java | 2 +- .../preparator/ChannelOpenSessionMessagePreparator.java | 2 +- .../preparator/ChannelOpenUnknownMessagePreparator.java | 2 +- .../preparator/ChannelRequestAuthAgentMessagePreparator.java | 2 +- .../preparator/ChannelRequestBreakMessagePreparator.java | 2 +- .../preparator/ChannelRequestEnvMessagePreparator.java | 2 +- .../preparator/ChannelRequestExecMessagePreparator.java | 2 +- .../preparator/ChannelRequestExitSignalMessagePreparator.java | 2 +- .../preparator/ChannelRequestExitStatusMessagePreparator.java | 2 +- .../preparator/ChannelRequestPtyMessagePreparator.java | 2 +- .../preparator/ChannelRequestShellMessagePreparator.java | 2 +- .../preparator/ChannelRequestSignalMessagePreparator.java | 2 +- .../preparator/ChannelRequestSubsystemMessagePreparator.java | 2 +- .../preparator/ChannelRequestUnknownMessagePreparator.java | 2 +- .../ChannelRequestWindowChangeMessagePreparator.java | 2 +- .../preparator/ChannelRequestX11MessagePreparator.java | 2 +- .../preparator/ChannelRequestXonXoffMessagePreparator.java | 2 +- .../connection/preparator/ChannelSuccessMessagePreparator.java | 2 +- .../preparator/ChannelWindowAdjustMessagePreparator.java | 2 +- .../GlobalRequestCancelTcpIpForwardMessagePreparator.java | 2 +- .../preparator/GlobalRequestFailureMessagePreparator.java | 2 +- .../GlobalRequestNoMoreSessionsMessagePreparator.java | 2 +- .../GlobalRequestOpenSshHostKeysMessagePreparator.java | 2 +- .../preparator/GlobalRequestSuccessMessagePreparator.java | 2 +- .../preparator/GlobalRequestTcpIpForwardMessagePreparator.java | 2 +- .../preparator/GlobalRequestUnknownMessagePreparator.java | 2 +- .../protocol/transport/preparator/AsciiMessagePreparator.java | 2 +- .../protocol/transport/preparator/DebugMessagePreparator.java | 2 +- .../preparator/DhGexKeyExchangeGroupMessagePreparator.java | 2 +- .../preparator/DhGexKeyExchangeInitMessagePreparator.java | 2 +- .../DhGexKeyExchangeOldRequestMessagePreparator.java | 2 +- .../preparator/DhGexKeyExchangeReplyMessagePreparator.java | 2 +- .../preparator/DhGexKeyExchangeRequestMessagePreparator.java | 2 +- .../preparator/DhKeyExchangeInitMessagePreparator.java | 3 ++- .../preparator/DhKeyExchangeReplyMessagePreparator.java | 3 ++- .../transport/preparator/DisconnectMessagePreparator.java | 2 +- .../preparator/EcdhKeyExchangeInitMessagePreparator.java | 3 ++- .../preparator/EcdhKeyExchangeReplyMessagePreparator.java | 2 +- .../transport/preparator/ExtensionInfoMessagePreparator.java | 2 +- .../preparator/HybridKeyExchangeInitMessagePreparator.java | 2 +- .../preparator/HybridKeyExchangeReplyMessagePreparator.java | 2 +- .../protocol/transport/preparator/IgnoreMessagePreparator.java | 2 +- .../transport/preparator/KeyExchangeInitMessagePreparator.java | 2 +- .../transport/preparator/NewCompressMessagePreparator.java | 2 +- .../transport/preparator/NewKeysMessagePreparator.java | 2 +- .../protocol/transport/preparator/PingMessagePreparator.java | 2 +- .../protocol/transport/preparator/PongMessagePreparator.java | 2 +- .../preparator/RsaKeyExchangeDoneMessagePreparator.java | 3 ++- .../preparator/RsaKeyExchangePubkeyMessagePreparator.java | 2 +- .../preparator/RsaKeyExchangeSecretMessagePreparator.java | 2 +- .../transport/preparator/ServiceAcceptMessagePreparator.java | 2 +- .../transport/preparator/ServiceRequestMessagePreparator.java | 2 +- .../transport/preparator/UnimplementedMessagePreparator.java | 2 +- .../transport/preparator/UnknownMessagePreparator.java | 2 +- .../transport/preparator/VersionExchangeMessagePreparator.java | 2 +- .../extension/DelayCompressionExtensionPreparator.java | 2 +- .../preparator/extension/NoFlowControlExtensionPreparator.java | 3 ++- .../preparator/extension/PingExtensionPreparator.java | 2 +- .../preparator/extension/ServerSigAlgsExtensionPreparator.java | 3 ++- .../preparator/extension/UnknownExtensionPreparator.java | 2 +- 155 files changed, 183 insertions(+), 155 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpInitMessagePreparator.java index 17301ddb7..18e7ec3c6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpInitMessagePreparator.java @@ -18,7 +18,7 @@ public SftpInitMessagePreparator() { super(SftpPacketTypeConstant.SSH_FXP_INIT); } - public void prepareMessageSpecificContents(SftpInitMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(SftpInitMessage object, Chooser chooser) { object.setVersion(chooser.getSftpClientVersion()); // Only Clients with protocol version 3 should send supported extensions, // since version 4 it is recommended to not send extensions in order diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpUnknownMessagePreparator.java index 592f0ea33..9366cf5a6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpUnknownMessagePreparator.java @@ -18,7 +18,7 @@ public SftpUnknownMessagePreparator() { } @Override - public void prepareMessageSpecificContents(SftpUnknownMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(SftpUnknownMessage object, Chooser chooser) { object.setPayload(new byte[0]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpVersionMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpVersionMessagePreparator.java index eebbc69b4..69804479d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpVersionMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/SftpVersionMessagePreparator.java @@ -18,7 +18,7 @@ public SftpVersionMessagePreparator() { super(SftpPacketTypeConstant.SSH_FXP_VERSION); } - public void prepareMessageSpecificContents(SftpVersionMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(SftpVersionMessage object, Chooser chooser) { // Send own server version, but negotiate the version that is the lower if the two object.setVersion(chooser.getSftpServerVersion()); if (object.getExtensions().isEmpty()) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java index b33cb4cea..849df7554 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCheckFileHandleMessagePreparator.java @@ -21,7 +21,7 @@ public SftpRequestCheckFileHandleMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestCheckFileHandleMessage object, Chooser chooser) { object.setHandle( chooser.getContext().getSftpManager().getFileHandle(object.getConfigHandleIndex()), diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCheckFileNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCheckFileNameMessagePreparator.java index 246216a5c..9d0481416 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCheckFileNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCheckFileNameMessagePreparator.java @@ -21,7 +21,7 @@ public SftpRequestCheckFileNameMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestCheckFileNameMessage object, Chooser chooser) { object.setPath("/etc/passwd", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCopyDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCopyDataMessagePreparator.java index 7d3904341..0b399a96c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCopyDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCopyDataMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestCopyDataMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestCopyDataMessage object, Chooser chooser) { object.setHandle( chooser.getContext().getSftpManager().getFileHandle(object.getConfigHandleIndex()), diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCopyFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCopyFileMessagePreparator.java index fa5694a21..838730cf6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCopyFileMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestCopyFileMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestCopyFileMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestCopyFileMessage object, Chooser chooser) { object.setPath("/etc/passwd", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestExpandPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestExpandPathMessagePreparator.java index 10df48b45..d9c759cb1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestExpandPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestExpandPathMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestExpandPathMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestExpandPathMessage object, Chooser chooser) { object.setPath("~/etc/passwd", true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestExtendedMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestExtendedMessagePreparator.java index 78e4121ea..de0a68b21 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestExtendedMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestExtendedMessagePreparator.java @@ -28,7 +28,7 @@ protected SftpRequestExtendedMessagePreparator(String extendedRequestName) { } @Override - public void prepareRequestSpecificContents(T object, Chooser chooser) { + protected void prepareRequestSpecificContents(T object, Chooser chooser) { // Always set correct extended request name -> Don't use soft set object.setExtendedRequestName(extendedRequestName, true); prepareRequestExtendedSpecificContents(object, chooser); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestFileStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestFileStatVfsMessagePreparator.java index 7ac9f2dda..ff66540eb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestFileStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestFileStatVfsMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestFileStatVfsMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestFileStatVfsMessage object, Chooser chooser) { object.setHandle( chooser.getContext() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestFileSyncMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestFileSyncMessagePreparator.java index 6e0ebf9e4..b59feea2a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestFileSyncMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestFileSyncMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestFileSyncMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestFileSyncMessage object, Chooser chooser) { object.setHandle( chooser.getContext().getSftpManager().getFileHandle(object.getConfigHandleIndex()), diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestGetTempFolderMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestGetTempFolderMessagePreparator.java index 29a4838a9..148c3caea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestGetTempFolderMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestGetTempFolderMessagePreparator.java @@ -19,6 +19,6 @@ public SftpRequestGetTempFolderMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestGetTempFolderMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestHardlinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestHardlinkMessagePreparator.java index 2a338c17c..256dbbb74 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestHardlinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestHardlinkMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestHardlinkMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestHardlinkMessage object, Chooser chooser) { object.setPath("/etc/passwd", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java index f3d1e21c1..a63805b7d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestHomeDirectoryMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestHomeDirectoryMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestHomeDirectoryMessage object, Chooser chooser) { object.setUsername("ssh-attacker", true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestLimitsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestLimitsMessagePreparator.java index ac2910627..0746e9e66 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestLimitsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestLimitsMessagePreparator.java @@ -19,6 +19,6 @@ public SftpRequestLimitsMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestLimitsMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestLinkSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestLinkSetStatMessagePreparator.java index 713fe3a5f..ad2e2a724 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestLinkSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestLinkSetStatMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestLinkSetStatMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestLinkSetStatMessage object, Chooser chooser) { object.setPath("/bin/python3", true); object.getAttributes().prepare(chooser); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java index f82c838f5..2107aeb15 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestMakeTempFolderMessagePreparator.java @@ -19,6 +19,6 @@ public SftpRequestMakeTempFolderMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestMakeTempFolderMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestPosixRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestPosixRenameMessagePreparator.java index 316c21cee..0e0404165 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestPosixRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestPosixRenameMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestPosixRenameMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestPosixRenameMessage object, Chooser chooser) { object.setPath("/etc/passwd", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java index 6ad844c3f..22248ec57 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestSpaceAvailableMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestSpaceAvailableMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestSpaceAvailableMessage object, Chooser chooser) { object.setPath("/tmp", true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestStatVfsMessagePreparator.java index da8683554..5fdc84b11 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestStatVfsMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestStatVfsMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestStatVfsMessage object, Chooser chooser) { object.setPath("/etc/", true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestTextSeekMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestTextSeekMessagePreparator.java index 3cb26d0cb..802368fdf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestTextSeekMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestTextSeekMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestTextSeekMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestTextSeekMessage object, Chooser chooser) { object.setHandle( chooser.getContext().getSftpManager().getFileHandle(object.getConfigHandleIndex()), diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestUnknownMessagePreparator.java index 15a8afe3e..e1e908afc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestUnknownMessagePreparator.java @@ -18,7 +18,7 @@ public SftpRequestUnknownMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestUnknownMessage object, Chooser chooser) { object.setRequestSpecificData(new byte[100]); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java index 023a3b5b4..b4d60b317 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestUsersGroupsByIdMessagePreparator.java @@ -20,7 +20,7 @@ public SftpRequestUsersGroupsByIdMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestUsersGroupsByIdMessage object, Chooser chooser) { if (object.getUserIds().isEmpty()) { object.addUserId(0); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestVendorIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestVendorIdMessagePreparator.java index b63f6ef5c..156848520 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestVendorIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_request/SftpRequestVendorIdMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestVendorIdMessagePreparator() { } @Override - public void prepareRequestExtendedSpecificContents( + protected void prepareRequestExtendedSpecificContents( SftpRequestVendorIdMessage object, Chooser chooser) { object.setVendorName("NDS RUB", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseCheckFileMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseCheckFileMessagePreparator.java index b755cc4d2..4d7ea6fbc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseCheckFileMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseCheckFileMessagePreparator.java @@ -15,7 +15,7 @@ public class SftpResponseCheckFileMessagePreparator extends SftpResponseExtendedMessagePreparator { @Override - public void prepareResponseSpecificContents( + protected void prepareResponseSpecificContents( SftpResponseCheckFileMessage object, Chooser chooser) { object.setUsedHashAlgorithm(HashAlgorithm.MD5, true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseLimitsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseLimitsMessagePreparator.java index 3224232c1..5f0e9643f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseLimitsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseLimitsMessagePreparator.java @@ -14,7 +14,8 @@ public class SftpResponseLimitsMessagePreparator extends SftpResponseExtendedMessagePreparator { @Override - public void prepareResponseSpecificContents(SftpResponseLimitsMessage object, Chooser chooser) { + protected void prepareResponseSpecificContents( + SftpResponseLimitsMessage object, Chooser chooser) { object.setMaximumPacketLength(100000); object.setMaximumReadLength(0); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java index c855039e6..ced55d9c6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseSpaceAvailableMessagePreparator.java @@ -14,7 +14,7 @@ public class SftpResponseSpaceAvailableMessagePreparator extends SftpResponseExtendedMessagePreparator { @Override - public void prepareResponseSpecificContents( + protected void prepareResponseSpecificContents( SftpResponseSpaceAvailableMessage object, Chooser chooser) { object.setBytesOnDevice(10000000001L); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseStatVfsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseStatVfsMessagePreparator.java index bd0636991..eb10495ba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseStatVfsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseStatVfsMessagePreparator.java @@ -15,7 +15,7 @@ public class SftpResponseStatVfsMessagePreparator extends SftpResponseExtendedMessagePreparator { @Override - public void prepareResponseSpecificContents( + protected void prepareResponseSpecificContents( SftpResponseStatVfsMessage object, Chooser chooser) { object.setBlockSize(32); object.setFundamentalBlockSize(32); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseUnknownMessagePreparator.java index 27a3eaddb..e5c02fcd5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseUnknownMessagePreparator.java @@ -14,7 +14,7 @@ public class SftpResponseUnknownMessagePreparator extends SftpResponseExtendedMessagePreparator { @Override - public void prepareResponseSpecificContents( + protected void prepareResponseSpecificContents( SftpResponseUnknownMessage object, Chooser chooser) { object.setResponseSpecificData(new byte[100]); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java index a05878a06..c92943f8b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extended_response/SftpResponseUsersGroupsByIdMessagePreparator.java @@ -17,7 +17,7 @@ public class SftpResponseUsersGroupsByIdMessagePreparator extends SftpResponseExtendedMessagePreparator { @Override - public void prepareResponseSpecificContents( + protected void prepareResponseSpecificContents( SftpResponseUsersGroupsByIdMessage object, Chooser chooser) { if (object.getUserNames().isEmpty()) { object.addUserName("ssh"); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionFileStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionFileStatVfsPreparator.java index 849dc5d54..82aabb90e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionFileStatVfsPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionFileStatVfsPreparator.java @@ -19,7 +19,8 @@ public SftpExtensionFileStatVfsPreparator() { } @Override - public void prepareExtensionSpecificContents(SftpExtensionFileStatVfs object, Chooser chooser) { + protected void prepareExtensionSpecificContents( + SftpExtensionFileStatVfs object, Chooser chooser) { object.setVersion("2", true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionNewlinePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionNewlinePreparator.java index 21723a254..f462396ff 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionNewlinePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionNewlinePreparator.java @@ -19,7 +19,7 @@ public SftpExtensionNewlinePreparator() { } @Override - public void prepareExtensionSpecificContents(SftpExtensionNewline object, Chooser chooser) { + protected void prepareExtensionSpecificContents(SftpExtensionNewline object, Chooser chooser) { object.setNewlineSeperator("\n", true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionStatVfsPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionStatVfsPreparator.java index 83966a04f..57524e194 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionStatVfsPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionStatVfsPreparator.java @@ -19,7 +19,7 @@ public SftpExtensionStatVfsPreparator() { } @Override - public void prepareExtensionSpecificContents(SftpExtensionStatVfs object, Chooser chooser) { + protected void prepareExtensionSpecificContents(SftpExtensionStatVfs object, Chooser chooser) { object.setVersion("2", true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionUnknownPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionUnknownPreparator.java index 8a943abf6..8909027de 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionUnknownPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionUnknownPreparator.java @@ -18,7 +18,7 @@ public SftpExtensionUnknownPreparator() { } @Override - public void prepareExtensionSpecificContents(SftpExtensionUnknown object, Chooser chooser) { + protected void prepareExtensionSpecificContents(SftpExtensionUnknown object, Chooser chooser) { object.setValue(new byte[100], true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionVendorIdPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionVendorIdPreparator.java index 80883318e..208e3a219 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionVendorIdPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionVendorIdPreparator.java @@ -20,7 +20,7 @@ public SftpExtensionVendorIdPreparator() { } @Override - public void prepareExtensionSpecificContents(SftpExtensionVendorId object, Chooser chooser) { + protected void prepareExtensionSpecificContents(SftpExtensionVendorId object, Chooser chooser) { object.setVendorName("NDS RUB", true); object.setProductName("SSH-Attacker", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionWithVersionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionWithVersionPreparator.java index f1ac4a9aa..c0c31dc9f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionWithVersionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/extension/SftpExtensionWithVersionPreparator.java @@ -19,7 +19,7 @@ public SftpExtensionWithVersionPreparator(SftpExtension extensionName) { } @Override - public void prepareExtensionSpecificContents(T object, Chooser chooser) { + protected void prepareExtensionSpecificContents(T object, Chooser chooser) { object.setVersion("1", true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestCloseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestCloseMessagePreparator.java index 2b2122a45..e7f5055ea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestCloseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestCloseMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestCloseMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestCloseMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents(SftpRequestCloseMessage object, Chooser chooser) { object.setHandle( chooser.getContext() .getSftpManager() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestFileSetStatMessagePreparator.java index e408e5a63..126825660 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestFileSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestFileSetStatMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestFileSetStatMessagePreparator() { } @Override - public void prepareRequestSpecificContents( + protected void prepareRequestSpecificContents( SftpRequestFileSetStatMessage object, Chooser chooser) { object.setHandle( chooser.getContext() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestFileStatMessagePreparator.java index fae4ee783..b598169b5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestFileStatMessagePreparator.java @@ -19,7 +19,8 @@ public SftpRequestFileStatMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestFileStatMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents( + SftpRequestFileStatMessage object, Chooser chooser) { object.setHandle( chooser.getContext() .getSftpManager() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestLinkStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestLinkStatMessagePreparator.java index 359af463e..a4ad288f1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestLinkStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestLinkStatMessagePreparator.java @@ -19,7 +19,8 @@ public SftpRequestLinkStatMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestLinkStatMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents( + SftpRequestLinkStatMessage object, Chooser chooser) { object.setPath("/bin/python3", true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestMakeDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestMakeDirMessagePreparator.java index 231bffe98..1d904b1e7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestMakeDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestMakeDirMessagePreparator.java @@ -19,7 +19,8 @@ public SftpRequestMakeDirMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestMakeDirMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents( + SftpRequestMakeDirMessage object, Chooser chooser) { object.setPath("/tmp/ssh-attacker/", true); object.getAttributes().prepare(chooser); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestMessagePreparator.java index 82c293444..d61c16704 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestMessagePreparator.java @@ -20,7 +20,7 @@ protected SftpRequestMessagePreparator(SftpPacketTypeConstant packetType) { } @Override - public void prepareMessageSpecificContents(T object, Chooser chooser) { + protected void prepareMessageSpecificContents(T object, Chooser chooser) { // Always set correct request id -> Don't use soft set object.setRequestId(chooser.getContext().getSftpManager().getNextRequestId()); prepareRequestSpecificContents(object, chooser); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestOpenDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestOpenDirMessagePreparator.java index 6df705995..d860b2039 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestOpenDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestOpenDirMessagePreparator.java @@ -19,7 +19,8 @@ public SftpRequestOpenDirMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestOpenDirMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents( + SftpRequestOpenDirMessage object, Chooser chooser) { object.setPath("/tmp/", true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestOpenMessagePreparator.java index ad75349dc..2be66ed35 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestOpenMessagePreparator.java @@ -20,7 +20,7 @@ public SftpRequestOpenMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestOpenMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents(SftpRequestOpenMessage object, Chooser chooser) { object.setPath("/etc/passwd", true); object.setOpenFlags(SftpFileOpenFlag.SSH_FXF_READ, SftpFileOpenFlag.SSH_FXF_CREAT); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadDirMessagePreparator.java index a42d7f22b..4a69af2b5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadDirMessagePreparator.java @@ -19,7 +19,8 @@ public SftpRequestReadDirMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestReadDirMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents( + SftpRequestReadDirMessage object, Chooser chooser) { object.setHandle( chooser.getContext() .getSftpManager() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadLinkMessagePreparator.java index ca412a046..15c1382d7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadLinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadLinkMessagePreparator.java @@ -19,7 +19,8 @@ public SftpRequestReadLinkMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestReadLinkMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents( + SftpRequestReadLinkMessage object, Chooser chooser) { object.setPath("/bin/python3", true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadMessagePreparator.java index 85a74225d..eb283dbe6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestReadMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestReadMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestReadMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents(SftpRequestReadMessage object, Chooser chooser) { object.setHandle( chooser.getContext().getSftpManager().getFileHandle(object.getConfigHandleIndex()), true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRealPathMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRealPathMessagePreparator.java index 523c77005..d446eb830 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRealPathMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRealPathMessagePreparator.java @@ -19,7 +19,8 @@ public SftpRequestRealPathMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestRealPathMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents( + SftpRequestRealPathMessage object, Chooser chooser) { object.setPath("/tmp/../etc/./passwd", true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRemoveDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRemoveDirMessagePreparator.java index 83f0790b4..9455aa3a5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRemoveDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRemoveDirMessagePreparator.java @@ -18,7 +18,7 @@ public SftpRequestRemoveDirMessagePreparator() { super(SftpPacketTypeConstant.SSH_FXP_RMDIR); } - public void prepareRequestSpecificContents( + protected void prepareRequestSpecificContents( SftpRequestRemoveDirMessage object, Chooser chooser) { object.setPath("/tmp/ssh-attacker", true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRemoveMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRemoveMessagePreparator.java index bba1e952e..dc8283778 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRemoveMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRemoveMessagePreparator.java @@ -19,7 +19,8 @@ public SftpRequestRemoveMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestRemoveMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents( + SftpRequestRemoveMessage object, Chooser chooser) { object.setPath("/etc/passwd", true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRenameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRenameMessagePreparator.java index ff2fd75ab..9b4cd0eb6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRenameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestRenameMessagePreparator.java @@ -19,7 +19,8 @@ public SftpRequestRenameMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestRenameMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents( + SftpRequestRenameMessage object, Chooser chooser) { object.setPath("/etc/passwd", true); object.setNewPath("/tmp/passwd-win", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestSetStatMessagePreparator.java index 68025fd9c..ea153375d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestSetStatMessagePreparator.java @@ -19,7 +19,8 @@ public SftpRequestSetStatMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestSetStatMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents( + SftpRequestSetStatMessage object, Chooser chooser) { object.setPath("/tmp/ssh-attacker", true); object.getAttributes().prepare(chooser); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestStatMessagePreparator.java index fc3171c97..b710724c2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestStatMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestStatMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestStatMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents(SftpRequestStatMessage object, Chooser chooser) { object.setPath("/etc/passwd", true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestSymbolicLinkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestSymbolicLinkMessagePreparator.java index 530f53805..87a317288 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestSymbolicLinkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestSymbolicLinkMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestSymbolicLinkMessagePreparator() { } @Override - public void prepareRequestSpecificContents( + protected void prepareRequestSpecificContents( SftpRequestSymbolicLinkMessage object, Chooser chooser) { object.setPath("/bin/sh", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestWriteMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestWriteMessagePreparator.java index 7bbc98cf8..901735c96 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestWriteMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/request/SftpRequestWriteMessagePreparator.java @@ -19,7 +19,7 @@ public SftpRequestWriteMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpRequestWriteMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents(SftpRequestWriteMessage object, Chooser chooser) { object.setHandle( chooser.getContext().getSftpManager().getFileHandle(object.getConfigHandleIndex()), true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseAttributesMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseAttributesMessagePreparator.java index e06d01b11..30d854360 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseAttributesMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseAttributesMessagePreparator.java @@ -19,7 +19,7 @@ public SftpResponseAttributesMessagePreparator() { } @Override - public void prepareResponseSpecificContents( + protected void prepareResponseSpecificContents( SftpResponseAttributesMessage object, Chooser chooser) { object.getAttributes().prepare(chooser); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseDataMessagePreparator.java index 40fce545d..6100a4ce2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseDataMessagePreparator.java @@ -19,7 +19,8 @@ public SftpResponseDataMessagePreparator() { } @Override - public void prepareResponseSpecificContents(SftpResponseDataMessage object, Chooser chooser) { + protected void prepareResponseSpecificContents( + SftpResponseDataMessage object, Chooser chooser) { object.setData(new byte[100], true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseHandleMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseHandleMessagePreparator.java index 8fbe0f350..67ae2cf4c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseHandleMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseHandleMessagePreparator.java @@ -19,7 +19,8 @@ public SftpResponseHandleMessagePreparator() { } @Override - public void prepareResponseSpecificContents(SftpResponseHandleMessage object, Chooser chooser) { + protected void prepareResponseSpecificContents( + SftpResponseHandleMessage object, Chooser chooser) { if (object.getHandle() == null || object.getHandle().getOriginalValue() == null) { // Should be set in SftpManager handleRequestMessage() -> Don't use soft set, because // soft set in this case would set diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseMessagePreparator.java index 383b26103..9df9439cd 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseMessagePreparator.java @@ -19,7 +19,7 @@ protected SftpResponseMessagePreparator(SftpPacketTypeConstant packetType) { super(packetType); } - public void prepareMessageSpecificContents(T object, Chooser chooser) { + protected void prepareMessageSpecificContents(T object, Chooser chooser) { // Request identifier should be set by SftpManager in handleRequestMessage() object.setRequestId(chooser.getContext().getSftpManager().getNextRequestId()); prepareResponseSpecificContents(object, chooser); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseNameMessagePreparator.java index dd8690b61..e0ed4c960 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseNameMessagePreparator.java @@ -19,7 +19,8 @@ public SftpResponseNameMessagePreparator() { } @Override - public void prepareResponseSpecificContents(SftpResponseNameMessage object, Chooser chooser) { + protected void prepareResponseSpecificContents( + SftpResponseNameMessage object, Chooser chooser) { object.setNameEntriesCount(object.getNameEntries().size()); object.getNameEntries().forEach(nameEntry -> nameEntry.prepare(chooser)); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseStatusMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseStatusMessagePreparator.java index 9c2e51e13..f65367c3a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseStatusMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/common/preparator/response/SftpResponseStatusMessagePreparator.java @@ -20,7 +20,8 @@ public SftpResponseStatusMessagePreparator() { } @Override - public void prepareResponseSpecificContents(SftpResponseStatusMessage object, Chooser chooser) { + protected void prepareResponseSpecificContents( + SftpResponseStatusMessage object, Chooser chooser) { object.setStatusCode(SftpStatusCode.SSH_FX_OK); object.setErrorMessage("SSH-Attacker sagt NEIN!", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/SftpV4InitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/SftpV4InitMessagePreparator.java index c522c252f..3842df4c7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/SftpV4InitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/SftpV4InitMessagePreparator.java @@ -18,7 +18,7 @@ public SftpV4InitMessagePreparator() { super(SftpPacketTypeConstant.SSH_FXP_INIT); } - public void prepareMessageSpecificContents(SftpV4InitMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(SftpV4InitMessage object, Chooser chooser) { object.setVersion(chooser.getSftpClientVersion()); object.getExtensions().clear(); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestFileSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestFileSetStatMessagePreparator.java index d752e64d6..954cd681f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestFileSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestFileSetStatMessagePreparator.java @@ -20,7 +20,7 @@ public SftpV4RequestFileSetStatMessagePreparator() { } @Override - public void prepareRequestSpecificContents( + protected void prepareRequestSpecificContents( SftpV4RequestFileSetStatMessage object, Chooser chooser) { object.setHandle( chooser.getContext() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestFileStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestFileStatMessagePreparator.java index 10f086e19..318bf26ec 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestFileStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestFileStatMessagePreparator.java @@ -21,7 +21,7 @@ public SftpV4RequestFileStatMessagePreparator() { } @Override - public void prepareRequestSpecificContents( + protected void prepareRequestSpecificContents( SftpV4RequestFileStatMessage object, Chooser chooser) { object.setHandle( chooser.getContext() diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestMakeDirMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestMakeDirMessagePreparator.java index 744960902..5e4cb482a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestMakeDirMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestMakeDirMessagePreparator.java @@ -20,7 +20,7 @@ public SftpV4RequestMakeDirMessagePreparator() { } @Override - public void prepareRequestSpecificContents( + protected void prepareRequestSpecificContents( SftpV4RequestMakeDirMessage object, Chooser chooser) { object.setPath("/tmp/ssh-attacker/", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestOpenMessagePreparator.java index 7ac27875f..8c190476c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestOpenMessagePreparator.java @@ -21,7 +21,8 @@ public SftpV4RequestOpenMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpV4RequestOpenMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents( + SftpV4RequestOpenMessage object, Chooser chooser) { object.setPath("/etc/passwd", true); object.setOpenFlags(SftpFileOpenFlag.SSH_FXF_READ, SftpFileOpenFlag.SSH_FXF_CREAT); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestSetStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestSetStatMessagePreparator.java index d49e1eb4e..426554a27 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestSetStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestSetStatMessagePreparator.java @@ -20,7 +20,7 @@ public SftpV4RequestSetStatMessagePreparator() { } @Override - public void prepareRequestSpecificContents( + protected void prepareRequestSpecificContents( SftpV4RequestSetStatMessage object, Chooser chooser) { object.setPath("/tmp/ssh-attacker", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestStatMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestStatMessagePreparator.java index 44e92d81a..47026eb36 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestStatMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/request/SftpV4RequestStatMessagePreparator.java @@ -21,7 +21,8 @@ public SftpV4RequestStatMessagePreparator() { } @Override - public void prepareRequestSpecificContents(SftpV4RequestStatMessage object, Chooser chooser) { + protected void prepareRequestSpecificContents( + SftpV4RequestStatMessage object, Chooser chooser) { object.setPath("/etc/passwd", true); object.setFlags(SftpFileAttributeFlag.values()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/response/SftpV4ResponseAttributesMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/response/SftpV4ResponseAttributesMessagePreparator.java index 7cdb562a1..8502643c6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/response/SftpV4ResponseAttributesMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/response/SftpV4ResponseAttributesMessagePreparator.java @@ -20,7 +20,7 @@ public SftpV4ResponseAttributesMessagePreparator() { } @Override - public void prepareResponseSpecificContents( + protected void prepareResponseSpecificContents( SftpV4ResponseAttributesMessage object, Chooser chooser) { object.getAttributes().prepare(chooser); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/response/SftpV4ResponseNameMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/response/SftpV4ResponseNameMessagePreparator.java index a03ab2a5e..929c1f085 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/response/SftpV4ResponseNameMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/v4/preparator/response/SftpV4ResponseNameMessagePreparator.java @@ -20,7 +20,8 @@ public SftpV4ResponseNameMessagePreparator() { } @Override - public void prepareResponseSpecificContents(SftpV4ResponseNameMessage object, Chooser chooser) { + protected void prepareResponseSpecificContents( + SftpV4ResponseNameMessage object, Chooser chooser) { object.setNameEntriesCount(object.getNameEntries().size()); object.getNameEntries().forEach(nameEntry -> nameEntry.prepare(chooser)); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java index ee94f0eef..ff4a94158 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessagePreparator.java @@ -12,7 +12,7 @@ public class StringDataMessagePreparator extends ProtocolMessagePreparator { - public void prepareProtocolMessageContents(StringDataMessage object, Chooser chooser) { + protected void prepareProtocolMessageContents(StringDataMessage object, Chooser chooser) { object.setData("ls /"); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessagePreparator.java index c765d3d03..1b71b9859 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessagePreparator.java @@ -12,7 +12,7 @@ public class UnknownDataMessagePreparator extends ProtocolMessagePreparator { - public void prepareProtocolMessageContents(UnknownDataMessage object, Chooser chooser) { + protected void prepareProtocolMessageContents(UnknownDataMessage object, Chooser chooser) { object.setPayload(new byte[0]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/preparator/BinaryPacketPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/preparator/BinaryPacketPreparator.java index 1aee8eb19..cbd1d6484 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/preparator/BinaryPacketPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/packet/preparator/BinaryPacketPreparator.java @@ -17,7 +17,7 @@ public class BinaryPacketPreparator extends AbstractPacketPreparator { private static final Logger LOGGER = LogManager.getLogger(); @Override - public void preparePacketContents(BlobPacket object, Chooser chooser) { + protected void preparePacketContents(BlobPacket object, Chooser chooser) { LOGGER.debug("Compressing blob packet"); chooser.getContext().getPacketLayer().getCompressor().compress(object); LOGGER.debug("Encrypting BlobPacket"); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthBannerMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthBannerMessagePreparator.java index 03c16538e..497b9dcda 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthBannerMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthBannerMessagePreparator.java @@ -19,7 +19,7 @@ public UserAuthBannerMessagePreparator() { } @Override - public void prepareMessageSpecificContents(UserAuthBannerMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(UserAuthBannerMessage object, Chooser chooser) { // TODO dummy values for fuzzing object.setMessage("", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthFailureMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthFailureMessagePreparator.java index cb6cb7f43..dc24dafa5 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthFailureMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthFailureMessagePreparator.java @@ -19,7 +19,7 @@ public UserAuthFailureMessagePreparator() { } @Override - public void prepareMessageSpecificContents(UserAuthFailureMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(UserAuthFailureMessage object, Chooser chooser) { // TODO dummy values for fuzzing object.setPossibleAuthenticationMethods("", true); object.setPartialSuccess(true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthHostbasedMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthHostbasedMessagePreparator.java index 529c18f9e..a6931eb37 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthHostbasedMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthHostbasedMessagePreparator.java @@ -38,7 +38,7 @@ public UserAuthHostbasedMessagePreparator() { } @Override - public void prepareUserAuthRequestSpecificContents( + protected void prepareUserAuthRequestSpecificContents( UserAuthHostbasedMessage object, Chooser chooser) { Config config = chooser.getConfig(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java index 4b3f69c9b..93b4a4cb7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoRequestMessagePreparator.java @@ -22,7 +22,8 @@ public UserAuthInfoRequestMessagePreparator() { } @Override - public void prepareMessageSpecificContents(UserAuthInfoRequestMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents( + UserAuthInfoRequestMessage object, Chooser chooser) { object.setUserName("", true); object.setInstruction("", true); object.setLanguageTag("", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java index 95201998d..18a0d1bcc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthInfoResponseMessagePreparator.java @@ -22,7 +22,7 @@ public UserAuthInfoResponseMessagePreparator() { } @Override - public void prepareMessageSpecificContents( + protected void prepareMessageSpecificContents( UserAuthInfoResponseMessage object, Chooser chooser) { ArrayList nextResponses = chooser.getNextPreConfiguredAuthResponses(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthKeyboardInteractiveMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthKeyboardInteractiveMessagePreparator.java index a90549cf2..11ba92839 100755 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthKeyboardInteractiveMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthKeyboardInteractiveMessagePreparator.java @@ -19,7 +19,7 @@ public UserAuthKeyboardInteractiveMessagePreparator() { } @Override - public void prepareUserAuthRequestSpecificContents( + protected void prepareUserAuthRequestSpecificContents( UserAuthKeyboardInteractiveMessage object, Chooser chooser) { object.setLanguageTag("", true); object.setSubMethods("pam", true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthNoneMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthNoneMessagePreparator.java index 98d83100f..ef630e5f2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthNoneMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthNoneMessagePreparator.java @@ -19,6 +19,6 @@ public UserAuthNoneMessagePreparator() { } @Override - public void prepareUserAuthRequestSpecificContents( + protected void prepareUserAuthRequestSpecificContents( UserAuthNoneMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPasswordMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPasswordMessagePreparator.java index 4dda681a0..b56e6cbef 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPasswordMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPasswordMessagePreparator.java @@ -19,7 +19,7 @@ public UserAuthPasswordMessagePreparator() { } @Override - public void prepareUserAuthRequestSpecificContents( + protected void prepareUserAuthRequestSpecificContents( UserAuthPasswordMessage object, Chooser chooser) { object.setChangePassword(false); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPkOkMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPkOkMessagePreparator.java index d63ecbcea..27dddc93c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPkOkMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPkOkMessagePreparator.java @@ -21,7 +21,7 @@ public UserAuthPkOkMessagePreparator() { } @Override - public void prepareMessageSpecificContents(UserAuthPkOkMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(UserAuthPkOkMessage object, Chooser chooser) { SshPublicKey pk = chooser.getSelectedPublicKeyForAuthentication(); if (pk != null) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPubkeyMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPubkeyMessagePreparator.java index 9cfb0ffbb..ad591abb6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPubkeyMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthPubkeyMessagePreparator.java @@ -139,7 +139,7 @@ private static byte[] getEncodedSignature( } @Override - public void prepareUserAuthRequestSpecificContents( + protected void prepareUserAuthRequestSpecificContents( UserAuthPubkeyMessage object, Chooser chooser) { object.setUseSignature(true); SshPublicKey pk = chooser.getSelectedPublicKeyForAuthentication(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java index b362ab1dc..59a2047b6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java @@ -33,5 +33,5 @@ public final void prepareMessageSpecificContents(T object, Chooser chooser) { prepareUserAuthRequestSpecificContents(object, chooser); } - public abstract void prepareUserAuthRequestSpecificContents(T object, Chooser chooser); + protected abstract void prepareUserAuthRequestSpecificContents(T object, Chooser chooser); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthSuccessMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthSuccessMessagePreparator.java index ce4e12798..e8a2c023f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthSuccessMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthSuccessMessagePreparator.java @@ -19,5 +19,5 @@ public UserAuthSuccessMessagePreparator() { } @Override - public void prepareMessageSpecificContents(UserAuthSuccessMessage object, Chooser chooser) {} + protected void prepareMessageSpecificContents(UserAuthSuccessMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthUnknownMessagePreparator.java index 418f67698..c76d12a65 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthUnknownMessagePreparator.java @@ -19,7 +19,7 @@ public UserAuthUnknownMessagePreparator() { } @Override - public void prepareUserAuthRequestSpecificContents( + protected void prepareUserAuthRequestSpecificContents( UserAuthUnknownMessage object, Chooser chooser) { object.setMethodSpecificFields(new byte[10]); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessagePreparator.java index 7da3bf0d9..815fe1d43 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/common/SshMessagePreparator.java @@ -27,5 +27,5 @@ protected final void prepareProtocolMessageContents(T object, Chooser chooser) { prepareMessageSpecificContents(object, chooser); } - public abstract void prepareMessageSpecificContents(T object, Chooser chooser); + protected abstract void prepareMessageSpecificContents(T object, Chooser chooser); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelCloseMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelCloseMessagePreparator.java index 02448a5bb..2cdfb4073 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelCloseMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelCloseMessagePreparator.java @@ -18,6 +18,6 @@ public ChannelCloseMessagePreparator() { } @Override - public void prepareChannelMessageSpecificContents( + protected void prepareChannelMessageSpecificContents( ChannelCloseMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelDataMessagePreparator.java index 1b7e48051..8b821a3d0 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelDataMessagePreparator.java @@ -18,7 +18,8 @@ public ChannelDataMessagePreparator() { } @Override - public void prepareChannelMessageSpecificContents(ChannelDataMessage object, Chooser chooser) { + protected void prepareChannelMessageSpecificContents( + ChannelDataMessage object, Chooser chooser) { // TODO dummy values for fuzzing object.setData(new byte[100], true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelEofMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelEofMessagePreparator.java index 23c5b009b..735878a00 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelEofMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelEofMessagePreparator.java @@ -18,5 +18,6 @@ public ChannelEofMessagePreparator() { } @Override - public void prepareChannelMessageSpecificContents(ChannelEofMessage object, Chooser chooser) {} + protected void prepareChannelMessageSpecificContents( + ChannelEofMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelExtendedDataMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelExtendedDataMessagePreparator.java index 0d03d5dbc..acd5be698 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelExtendedDataMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelExtendedDataMessagePreparator.java @@ -20,7 +20,7 @@ public ChannelExtendedDataMessagePreparator() { } @Override - public void prepareChannelMessageSpecificContents( + protected void prepareChannelMessageSpecificContents( ChannelExtendedDataMessage object, Chooser chooser) { // TODO dummy values for fuzzing object.setDataTypeCode(ExtendedChannelDataType.SSH_EXTENDED_DATA_STDERR.getDataTypeCode()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelFailureMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelFailureMessagePreparator.java index 7298583f4..3f65a826d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelFailureMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelFailureMessagePreparator.java @@ -19,6 +19,6 @@ public ChannelFailureMessagePreparator() { } @Override - public void prepareChannelMessageSpecificContents( + protected void prepareChannelMessageSpecificContents( ChannelFailureMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenConfirmationMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenConfirmationMessagePreparator.java index 4a0e48e3f..6958ec7c9 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenConfirmationMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenConfirmationMessagePreparator.java @@ -27,7 +27,7 @@ public ChannelOpenConfirmationMessagePreparator() { } @Override - public void prepareMessageSpecificContents( + protected void prepareMessageSpecificContents( ChannelOpenConfirmationMessage object, Chooser chooser) { ChannelManager channelManager = chooser.getContext().getChannelManager(); ChannelOpenConfirmationMessage toCopy = channelManager.prepareNextOpenConfirm(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenFailureMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenFailureMessagePreparator.java index 87a3cd2b4..192bf2e51 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenFailureMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenFailureMessagePreparator.java @@ -19,7 +19,7 @@ public ChannelOpenFailureMessagePreparator() { } @Override - public void prepareChannelMessageSpecificContents( + protected void prepareChannelMessageSpecificContents( ChannelOpenFailureMessage object, Chooser chooser) { // TODO dummy values for fuzzing object.setReasonCode(Integer.MAX_VALUE); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenMessagePreparator.java index f0a06230a..c5d824721 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenMessagePreparator.java @@ -37,7 +37,7 @@ protected ChannelOpenMessagePreparator(String channelType) { } @Override - public void prepareMessageSpecificContents(T object, Chooser chooser) { + protected void prepareMessageSpecificContents(T object, Chooser chooser) { ChannelManager channelManager = chooser.getContext().getChannelManager(); Integer localChannelId = diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreparator.java index fdf86fc6e..079054b72 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenSessionMessagePreparator.java @@ -19,6 +19,6 @@ public ChannelOpenSessionMessagePreparator() { } @Override - public void prepareChannelOpenMessageSpecificContents( + protected void prepareChannelOpenMessageSpecificContents( ChannelOpenSessionMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenUnknownMessagePreparator.java index 3687ef4b5..f1da6932a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelOpenUnknownMessagePreparator.java @@ -18,7 +18,7 @@ public ChannelOpenUnknownMessagePreparator() { } @Override - public void prepareChannelOpenMessageSpecificContents( + protected void prepareChannelOpenMessageSpecificContents( ChannelOpenUnknownMessage object, Chooser chooser) { object.setTypeSpecificData(new byte[10]); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestAuthAgentMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestAuthAgentMessagePreparator.java index f63ead2d7..c53c66d18 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestAuthAgentMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestAuthAgentMessagePreparator.java @@ -19,6 +19,6 @@ public ChannelRequestAuthAgentMessagePreparator() { } @Override - public void prepareChannelRequestMessageSpecificContents( + protected void prepareChannelRequestMessageSpecificContents( ChannelRequestAuthAgentMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestBreakMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestBreakMessagePreparator.java index a134344cb..649ddc930 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestBreakMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestBreakMessagePreparator.java @@ -19,7 +19,7 @@ public ChannelRequestBreakMessagePreparator() { } @Override - public void prepareChannelRequestMessageSpecificContents( + protected void prepareChannelRequestMessageSpecificContents( ChannelRequestBreakMessage object, Chooser chooser) { object.setBreakLength(chooser.getConfig().getDefaultBreakLength()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java index b348f0f44..888b01643 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestEnvMessagePreparator.java @@ -19,7 +19,7 @@ public ChannelRequestEnvMessagePreparator() { } @Override - public void prepareChannelRequestMessageSpecificContents( + protected void prepareChannelRequestMessageSpecificContents( ChannelRequestEnvMessage object, Chooser chooser) { object.setVariableName(chooser.getConfig().getDefaultVariableName(), true); object.setVariableValue(chooser.getConfig().getDefaultVariableValue(), true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExecMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExecMessagePreparator.java index 196deb9b2..6368b6019 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExecMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExecMessagePreparator.java @@ -19,7 +19,7 @@ public ChannelRequestExecMessagePreparator() { } @Override - public void prepareChannelRequestMessageSpecificContents( + protected void prepareChannelRequestMessageSpecificContents( ChannelRequestExecMessage object, Chooser chooser) { object.setCommand(chooser.getConfig().getChannelCommand(), true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitSignalMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitSignalMessagePreparator.java index b94af5f92..d9520e0b1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitSignalMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitSignalMessagePreparator.java @@ -20,7 +20,7 @@ public ChannelRequestExitSignalMessagePreparator() { } @Override - public void prepareChannelRequestMessageSpecificContents( + protected void prepareChannelRequestMessageSpecificContents( ChannelRequestExitSignalMessage object, Chooser chooser) { object.setSignalName(SignalType.SIGINT, true); object.setCoreDump(false); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitStatusMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitStatusMessagePreparator.java index 1ae6e15d1..c689f6b05 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitStatusMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestExitStatusMessagePreparator.java @@ -19,7 +19,7 @@ public ChannelRequestExitStatusMessagePreparator() { } @Override - public void prepareChannelRequestMessageSpecificContents( + protected void prepareChannelRequestMessageSpecificContents( ChannelRequestExitStatusMessage object, Chooser chooser) { object.setExitStatus(1); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java index 1a0ae6884..6bd93de09 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestPtyMessagePreparator.java @@ -20,7 +20,7 @@ public ChannelRequestPtyMessagePreparator() { } @Override - public void prepareChannelRequestMessageSpecificContents( + protected void prepareChannelRequestMessageSpecificContents( ChannelRequestPtyMessage object, Chooser chooser) { Config config = chooser.getConfig(); object.setTermEnvVariable(config.getDefaultTermEnvVariable(), true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestShellMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestShellMessagePreparator.java index 7aca9451d..533b61ead 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestShellMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestShellMessagePreparator.java @@ -19,6 +19,6 @@ public ChannelRequestShellMessagePreparator() { } @Override - public void prepareChannelRequestMessageSpecificContents( + protected void prepareChannelRequestMessageSpecificContents( ChannelRequestShellMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSignalMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSignalMessagePreparator.java index 140853ed5..b808347fb 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSignalMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSignalMessagePreparator.java @@ -20,7 +20,7 @@ public ChannelRequestSignalMessagePreparator() { } @Override - public void prepareChannelRequestMessageSpecificContents( + protected void prepareChannelRequestMessageSpecificContents( ChannelRequestSignalMessage object, Chooser chooser) { object.setSignalName(SignalType.SIGINT, true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java index 93aed6ed7..7468bbd01 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestSubsystemMessagePreparator.java @@ -19,7 +19,7 @@ public ChannelRequestSubsystemMessagePreparator() { } @Override - public void prepareChannelRequestMessageSpecificContents( + protected void prepareChannelRequestMessageSpecificContents( ChannelRequestSubsystemMessage object, Chooser chooser) { object.setSubsystemName(chooser.getConfig().getDefaultSubsystemName(), true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestUnknownMessagePreparator.java index 48e9a1c27..776d5d598 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestUnknownMessagePreparator.java @@ -18,7 +18,7 @@ public ChannelRequestUnknownMessagePreparator() { } @Override - public void prepareChannelRequestMessageSpecificContents( + protected void prepareChannelRequestMessageSpecificContents( ChannelRequestUnknownMessage object, Chooser chooser) { object.setTypeSpecificData(new byte[10]); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestWindowChangeMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestWindowChangeMessagePreparator.java index 551103419..94b8ccc5b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestWindowChangeMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestWindowChangeMessagePreparator.java @@ -20,7 +20,7 @@ public ChannelRequestWindowChangeMessagePreparator() { } @Override - public void prepareChannelRequestMessageSpecificContents( + protected void prepareChannelRequestMessageSpecificContents( ChannelRequestWindowChangeMessage object, Chooser chooser) { Config config = chooser.getConfig(); object.setWidthColumns(config.getDefaultTerminalWidthColumns()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestX11MessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestX11MessagePreparator.java index 5f60ad555..5811df57f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestX11MessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestX11MessagePreparator.java @@ -19,7 +19,7 @@ public ChannelRequestX11MessagePreparator() { } @Override - public void prepareChannelRequestMessageSpecificContents( + protected void prepareChannelRequestMessageSpecificContents( ChannelRequestX11Message object, Chooser chooser) { object.setSingleConnection(true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestXonXoffMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestXonXoffMessagePreparator.java index e35741989..814fa4cde 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestXonXoffMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelRequestXonXoffMessagePreparator.java @@ -19,7 +19,7 @@ public ChannelRequestXonXoffMessagePreparator() { } @Override - public void prepareChannelRequestMessageSpecificContents( + protected void prepareChannelRequestMessageSpecificContents( ChannelRequestXonXoffMessage object, Chooser chooser) { object.setClientFlowControl(chooser.getConfig().getClientFlowControl()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelSuccessMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelSuccessMessagePreparator.java index d930e2593..dd580dbf1 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelSuccessMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelSuccessMessagePreparator.java @@ -19,6 +19,6 @@ public ChannelSuccessMessagePreparator() { } @Override - public void prepareChannelMessageSpecificContents( + protected void prepareChannelMessageSpecificContents( ChannelSuccessMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelWindowAdjustMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelWindowAdjustMessagePreparator.java index f3171d208..12eaba04a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelWindowAdjustMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelWindowAdjustMessagePreparator.java @@ -19,7 +19,7 @@ public ChannelWindowAdjustMessagePreparator() { } @Override - public void prepareChannelMessageSpecificContents( + protected void prepareChannelMessageSpecificContents( ChannelWindowAdjustMessage object, Chooser chooser) { object.setRecipientChannelId(channel.getRemoteChannelId().getValue()); object.setBytesToAdd( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestCancelTcpIpForwardMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestCancelTcpIpForwardMessagePreparator.java index 34498325b..3a94080a6 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestCancelTcpIpForwardMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestCancelTcpIpForwardMessagePreparator.java @@ -19,7 +19,7 @@ public GlobalRequestCancelTcpIpForwardMessagePreparator() { } @Override - public void prepareGlobalRequestMessageSpecificContents( + protected void prepareGlobalRequestMessageSpecificContents( GlobalRequestCancelTcpIpForwardMessage object, Chooser chooser) { object.setIpAddressToBind("127.0.0.1", true); object.setPortToBind(22); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestFailureMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestFailureMessagePreparator.java index 2fd0bbefa..64160b67a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestFailureMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestFailureMessagePreparator.java @@ -20,6 +20,6 @@ public GlobalRequestFailureMessagePreparator() { } @Override - public void prepareMessageSpecificContents( + protected void prepareMessageSpecificContents( GlobalRequestFailureMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestNoMoreSessionsMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestNoMoreSessionsMessagePreparator.java index e27c0af56..dd7cbe39c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestNoMoreSessionsMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestNoMoreSessionsMessagePreparator.java @@ -19,6 +19,6 @@ public GlobalRequestNoMoreSessionsMessagePreparator() { } @Override - public void prepareGlobalRequestMessageSpecificContents( + protected void prepareGlobalRequestMessageSpecificContents( GlobalRequestNoMoreSessionsMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestOpenSshHostKeysMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestOpenSshHostKeysMessagePreparator.java index 0b063839d..2cc7cd345 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestOpenSshHostKeysMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestOpenSshHostKeysMessagePreparator.java @@ -19,7 +19,7 @@ public GlobalRequestOpenSshHostKeysMessagePreparator() { } @Override - public void prepareGlobalRequestMessageSpecificContents( + protected void prepareGlobalRequestMessageSpecificContents( GlobalRequestOpenSshHostKeysMessage object, Chooser chooser) { object.setHostKeys(chooser.getConfig().getHostKeys()); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestSuccessMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestSuccessMessagePreparator.java index 020c36645..d20d0500f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestSuccessMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestSuccessMessagePreparator.java @@ -20,6 +20,6 @@ public GlobalRequestSuccessMessagePreparator() { } @Override - public void prepareMessageSpecificContents( + protected void prepareMessageSpecificContents( GlobalRequestSuccessMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java index ee5b51ac9..0d02df3cc 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestTcpIpForwardMessagePreparator.java @@ -19,7 +19,7 @@ public GlobalRequestTcpIpForwardMessagePreparator() { } @Override - public void prepareGlobalRequestMessageSpecificContents( + protected void prepareGlobalRequestMessageSpecificContents( GlobalRequestTcpIpForwardMessage object, Chooser chooser) { object.setIpAddressToBind("127.0.0.1", true); object.setPortToBind(0); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestUnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestUnknownMessagePreparator.java index eb470766d..12a33c56f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestUnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestUnknownMessagePreparator.java @@ -18,7 +18,7 @@ public GlobalRequestUnknownMessagePreparator() { } @Override - public void prepareGlobalRequestMessageSpecificContents( + protected void prepareGlobalRequestMessageSpecificContents( GlobalRequestUnknownMessage object, Chooser chooser) { object.setTypeSpecificData(new byte[10]); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/AsciiMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/AsciiMessagePreparator.java index d71d79242..e82778fa3 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/AsciiMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/AsciiMessagePreparator.java @@ -14,7 +14,7 @@ public class AsciiMessagePreparator extends ProtocolMessagePreparator { @Override - public void prepareProtocolMessageContents(AsciiMessage object, Chooser chooser) { + protected void prepareProtocolMessageContents(AsciiMessage object, Chooser chooser) { object.setText(""); // TODO: Add a way to set this via configuration. if (chooser.getContext().isClient()) { object.setEndOfMessageSequence(chooser.getClientEndOfMessageSequence()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DebugMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DebugMessagePreparator.java index 1e58162da..eab489862 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DebugMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DebugMessagePreparator.java @@ -19,7 +19,7 @@ public DebugMessagePreparator() { } @Override - public void prepareMessageSpecificContents(DebugMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(DebugMessage object, Chooser chooser) { // TODO dummy values for fuzzing object.setAlwaysDisplay(true); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeGroupMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeGroupMessagePreparator.java index 1f625f616..59f3a7e71 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeGroupMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeGroupMessagePreparator.java @@ -23,7 +23,7 @@ public DhGexKeyExchangeGroupMessagePreparator() { } @Override - public void prepareMessageSpecificContents( + protected void prepareMessageSpecificContents( DhGexKeyExchangeGroupMessage object, Chooser chooser) { DhKeyExchange keyExchange = chooser.getDhGexKeyExchange(); if (chooser.getContext().isOldGroupRequestReceived()) { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeInitMessagePreparator.java index 575a2ae3c..986b04446 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeInitMessagePreparator.java @@ -22,7 +22,7 @@ public DhGexKeyExchangeInitMessagePreparator() { } @Override - public void prepareMessageSpecificContents( + protected void prepareMessageSpecificContents( DhGexKeyExchangeInitMessage object, Chooser chooser) { DhKeyExchange keyExchange = chooser.getDhGexKeyExchange(); keyExchange.generateKeyPair(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeOldRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeOldRequestMessagePreparator.java index f642b9ec1..2d769276c 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeOldRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeOldRequestMessagePreparator.java @@ -20,7 +20,7 @@ public DhGexKeyExchangeOldRequestMessagePreparator() { } @Override - public void prepareMessageSpecificContents( + protected void prepareMessageSpecificContents( DhGexKeyExchangeOldRequestMessage object, Chooser chooser) { Integer preferredDhGroupSize = chooser.getPreferredDhGroupSize(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeReplyMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeReplyMessagePreparator.java index 9229dd11c..598c8c5bf 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeReplyMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeReplyMessagePreparator.java @@ -24,7 +24,7 @@ public DhGexKeyExchangeReplyMessagePreparator() { } @Override - public void prepareMessageSpecificContents( + protected void prepareMessageSpecificContents( DhGexKeyExchangeReplyMessage object, Chooser chooser) { SshContext context = chooser.getContext(); KeyExchangeUtil.prepareHostKeyMessage(context, object); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeRequestMessagePreparator.java index 495f01d03..c98846b79 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhGexKeyExchangeRequestMessagePreparator.java @@ -21,7 +21,7 @@ public DhGexKeyExchangeRequestMessagePreparator() { } @Override - public void prepareMessageSpecificContents( + protected void prepareMessageSpecificContents( DhGexKeyExchangeRequestMessage object, Chooser chooser) { Integer minimalDhGroupSize = chooser.getMinimalDhGroupSize(); Integer preferredDhGroupSize = chooser.getPreferredDhGroupSize(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhKeyExchangeInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhKeyExchangeInitMessagePreparator.java index d3626cc05..1898e8e50 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhKeyExchangeInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhKeyExchangeInitMessagePreparator.java @@ -22,7 +22,8 @@ public DhKeyExchangeInitMessagePreparator() { } @Override - public void prepareMessageSpecificContents(DhKeyExchangeInitMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents( + DhKeyExchangeInitMessage object, Chooser chooser) { DhKeyExchange keyExchange = chooser.getDhKeyExchange(); keyExchange.generateKeyPair(); BigInteger pubKey = keyExchange.getLocalKeyPair().getPublicKey().getY(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhKeyExchangeReplyMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhKeyExchangeReplyMessagePreparator.java index d77e8a239..d197da80a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhKeyExchangeReplyMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DhKeyExchangeReplyMessagePreparator.java @@ -24,7 +24,8 @@ public DhKeyExchangeReplyMessagePreparator() { } @Override - public void prepareMessageSpecificContents(DhKeyExchangeReplyMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents( + DhKeyExchangeReplyMessage object, Chooser chooser) { SshContext context = chooser.getContext(); KeyExchangeUtil.prepareHostKeyMessage(context, object); prepareEphemeralPublicKey(object, chooser); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java index ff7a219e1..b2e0baa19 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/DisconnectMessagePreparator.java @@ -20,7 +20,7 @@ public DisconnectMessagePreparator() { } @Override - public void prepareMessageSpecificContents(DisconnectMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(DisconnectMessage object, Chooser chooser) { if (chooser.getContext().getDelayCompressionExtensionNegotiationFailed()) { object.setReasonCode(DisconnectReason.SSH_DISCONNECT_COMPRESSION_ERROR); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/EcdhKeyExchangeInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/EcdhKeyExchangeInitMessagePreparator.java index e2b9e18ef..147c1ec67 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/EcdhKeyExchangeInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/EcdhKeyExchangeInitMessagePreparator.java @@ -21,7 +21,8 @@ public EcdhKeyExchangeInitMessagePreparator() { } @Override - public void prepareMessageSpecificContents(EcdhKeyExchangeInitMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents( + EcdhKeyExchangeInitMessage object, Chooser chooser) { AbstractEcdhKeyExchange keyExchange = chooser.getEcdhKeyExchange(); keyExchange.generateKeyPair(); byte[] pubKey = keyExchange.getLocalKeyPair().getPublicKey().getEncoded(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/EcdhKeyExchangeReplyMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/EcdhKeyExchangeReplyMessagePreparator.java index 539b425c7..e83261b2e 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/EcdhKeyExchangeReplyMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/EcdhKeyExchangeReplyMessagePreparator.java @@ -23,7 +23,7 @@ public EcdhKeyExchangeReplyMessagePreparator() { } @Override - public void prepareMessageSpecificContents( + protected void prepareMessageSpecificContents( EcdhKeyExchangeReplyMessage object, Chooser chooser) { SshContext context = chooser.getContext(); KeyExchangeUtil.prepareHostKeyMessage(context, object); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ExtensionInfoMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ExtensionInfoMessagePreparator.java index b844f5fb1..609837152 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ExtensionInfoMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ExtensionInfoMessagePreparator.java @@ -19,7 +19,7 @@ public ExtensionInfoMessagePreparator() { } @Override - public void prepareMessageSpecificContents(ExtensionInfoMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(ExtensionInfoMessage object, Chooser chooser) { if (chooser.getContext().isClient()) { object.setExtensions(chooser.getClientSupportedExtensions(), true); } else { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeInitMessagePreparator.java index 4445551a1..64fded134 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeInitMessagePreparator.java @@ -26,7 +26,7 @@ public HybridKeyExchangeInitMessagePreparator() { } @Override - public void prepareMessageSpecificContents( + protected void prepareMessageSpecificContents( HybridKeyExchangeInitMessage object, Chooser chooser) { HybridKeyExchange keyExchange = chooser.getHybridKeyExchange(); AbstractEcdhKeyExchange classical = keyExchange.getClassical(); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeReplyMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeReplyMessagePreparator.java index fc78dbc7e..09eef50e4 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeReplyMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/HybridKeyExchangeReplyMessagePreparator.java @@ -29,7 +29,7 @@ public HybridKeyExchangeReplyMessagePreparator() { } @Override - public void prepareMessageSpecificContents( + protected void prepareMessageSpecificContents( HybridKeyExchangeReplyMessage object, Chooser chooser) { SshContext context = chooser.getContext(); KeyExchangeUtil.prepareHostKeyMessage(context, object); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/IgnoreMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/IgnoreMessagePreparator.java index 145e425d2..f2ab6389f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/IgnoreMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/IgnoreMessagePreparator.java @@ -19,7 +19,7 @@ public IgnoreMessagePreparator() { } @Override - public void prepareMessageSpecificContents(IgnoreMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(IgnoreMessage object, Chooser chooser) { // TODO dummy values for fuzzing object.setData(new byte[10], true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java index 74c39b103..866f26cd7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/KeyExchangeInitMessagePreparator.java @@ -19,7 +19,7 @@ public KeyExchangeInitMessagePreparator() { } @Override - public void prepareMessageSpecificContents(KeyExchangeInitMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(KeyExchangeInitMessage object, Chooser chooser) { if (chooser.getContext().isClient()) { object.setCookie(chooser.getClientCookie()); object.setKeyExchangeAlgorithms( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/NewCompressMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/NewCompressMessagePreparator.java index 06cfa2b7b..af247709a 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/NewCompressMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/NewCompressMessagePreparator.java @@ -19,5 +19,5 @@ public NewCompressMessagePreparator() { } @Override - public void prepareMessageSpecificContents(NewCompressMessage object, Chooser chooser) {} + protected void prepareMessageSpecificContents(NewCompressMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/NewKeysMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/NewKeysMessagePreparator.java index a26235356..1647034a2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/NewKeysMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/NewKeysMessagePreparator.java @@ -19,5 +19,5 @@ public NewKeysMessagePreparator() { } @Override - public void prepareMessageSpecificContents(NewKeysMessage object, Chooser chooser) {} + protected void prepareMessageSpecificContents(NewKeysMessage object, Chooser chooser) {} } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PingMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PingMessagePreparator.java index 400db2ca8..730c61523 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PingMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PingMessagePreparator.java @@ -19,7 +19,7 @@ public PingMessagePreparator() { } @Override - public void prepareMessageSpecificContents(PingMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(PingMessage object, Chooser chooser) { object.setData(new byte[0], true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PongMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PongMessagePreparator.java index a20302afd..d5a321158 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PongMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/PongMessagePreparator.java @@ -19,7 +19,7 @@ public PongMessagePreparator() { } @Override - public void prepareMessageSpecificContents(PongMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(PongMessage object, Chooser chooser) { object.setData(new byte[0], true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/RsaKeyExchangeDoneMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/RsaKeyExchangeDoneMessagePreparator.java index d4816c0eb..c7070f342 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/RsaKeyExchangeDoneMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/RsaKeyExchangeDoneMessagePreparator.java @@ -22,7 +22,8 @@ public RsaKeyExchangeDoneMessagePreparator() { } @Override - public void prepareMessageSpecificContents(RsaKeyExchangeDoneMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents( + RsaKeyExchangeDoneMessage object, Chooser chooser) { SshContext context = chooser.getContext(); KeyExchangeUtil.computeExchangeHash(context); KeyExchangeUtil.prepareExchangeHashSignatureMessage(context, object); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/RsaKeyExchangePubkeyMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/RsaKeyExchangePubkeyMessagePreparator.java index 9f954d8d3..9f2b45b3f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/RsaKeyExchangePubkeyMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/RsaKeyExchangePubkeyMessagePreparator.java @@ -28,7 +28,7 @@ public RsaKeyExchangePubkeyMessagePreparator() { } @Override - public void prepareMessageSpecificContents( + protected void prepareMessageSpecificContents( RsaKeyExchangePubkeyMessage object, Chooser chooser) { KeyExchangeUtil.prepareHostKeyMessage(chooser.getContext(), object); prepareTransientPublicKey(object, chooser); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/RsaKeyExchangeSecretMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/RsaKeyExchangeSecretMessagePreparator.java index dc30d57a8..61bb1cb57 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/RsaKeyExchangeSecretMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/RsaKeyExchangeSecretMessagePreparator.java @@ -24,7 +24,7 @@ public RsaKeyExchangeSecretMessagePreparator() { } @Override - public void prepareMessageSpecificContents( + protected void prepareMessageSpecificContents( RsaKeyExchangeSecretMessage object, Chooser chooser) { byte[] encryptedSecret; try { diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceAcceptMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceAcceptMessagePreparator.java index f357fa0ce..d930680ba 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceAcceptMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceAcceptMessagePreparator.java @@ -19,7 +19,7 @@ public ServiceAcceptMessagePreparator() { } @Override - public void prepareMessageSpecificContents(ServiceAcceptMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(ServiceAcceptMessage object, Chooser chooser) { // TODO: load service name from context object.setServiceName(chooser.getConfig().getServiceName(), true); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceRequestMessagePreparator.java index a8e710308..d4d4b5684 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/ServiceRequestMessagePreparator.java @@ -19,7 +19,7 @@ public ServiceRequestMessagePreparator() { } @Override - public void prepareMessageSpecificContents(ServiceRequestMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(ServiceRequestMessage object, Chooser chooser) { object.setServiceName(chooser.getConfig().getServiceName(), true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnimplementedMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnimplementedMessagePreparator.java index 728d45101..08f96c620 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnimplementedMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnimplementedMessagePreparator.java @@ -19,7 +19,7 @@ public UnimplementedMessagePreparator() { } @Override - public void prepareMessageSpecificContents(UnimplementedMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(UnimplementedMessage object, Chooser chooser) { object.setSequenceNumber(Integer.MAX_VALUE); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnknownMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnknownMessagePreparator.java index 4395cb73f..fe7500aae 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnknownMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/UnknownMessagePreparator.java @@ -19,7 +19,7 @@ public UnknownMessagePreparator() { } @Override - public void prepareMessageSpecificContents(UnknownMessage object, Chooser chooser) { + protected void prepareMessageSpecificContents(UnknownMessage object, Chooser chooser) { object.setPayload(new byte[0]); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/VersionExchangeMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/VersionExchangeMessagePreparator.java index c3b33caf5..7dd39294f 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/VersionExchangeMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/VersionExchangeMessagePreparator.java @@ -15,7 +15,7 @@ public class VersionExchangeMessagePreparator extends ProtocolMessagePreparator { @Override - public void prepareProtocolMessageContents(VersionExchangeMessage object, Chooser chooser) { + protected void prepareProtocolMessageContents(VersionExchangeMessage object, Chooser chooser) { if (chooser.getContext().isClient()) { object.setVersion(chooser.getClientVersion()); object.setComment(chooser.getClientComment()); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java index 4efe3d680..e678195e8 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/DelayCompressionExtensionPreparator.java @@ -19,7 +19,7 @@ public DelayCompressionExtensionPreparator() { } @Override - public void prepareExtensionSpecificContents( + protected void prepareExtensionSpecificContents( DelayCompressionExtension object, Chooser chooser) { if (chooser.getContext().isClient()) { object.setCompressionMethodsClientToServer( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/NoFlowControlExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/NoFlowControlExtensionPreparator.java index 0040dc17b..cab883774 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/NoFlowControlExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/NoFlowControlExtensionPreparator.java @@ -19,7 +19,8 @@ public NoFlowControlExtensionPreparator() { } @Override - public void prepareExtensionSpecificContents(NoFlowControlExtension object, Chooser chooser) { + protected void prepareExtensionSpecificContents( + NoFlowControlExtension object, Chooser chooser) { object.setChoice("p", true); } } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PingExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PingExtensionPreparator.java index 39980a54f..ce0b2f29d 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PingExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/PingExtensionPreparator.java @@ -22,7 +22,7 @@ public PingExtensionPreparator() { } @Override - public void prepareExtensionSpecificContents(PingExtension object, Chooser chooser) { + protected void prepareExtensionSpecificContents(PingExtension object, Chooser chooser) { // Sending ping@openssh.com is not allowed by the client according to OpenSSH specs if (chooser.getContext().isClient()) { LOGGER.warn( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java index 02c77ec8e..879da4aea 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/ServerSigAlgsExtensionPreparator.java @@ -23,7 +23,8 @@ public ServerSigAlgsExtensionPreparator() { } @Override - public void prepareExtensionSpecificContents(ServerSigAlgsExtension object, Chooser chooser) { + protected void prepareExtensionSpecificContents( + ServerSigAlgsExtension object, Chooser chooser) { // sending server-sig-algs extension is not allowed when acting as client if (chooser.getContext().isClient()) { LOGGER.warn( diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/UnknownExtensionPreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/UnknownExtensionPreparator.java index d0509386b..de52f0aa2 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/UnknownExtensionPreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/transport/preparator/extension/UnknownExtensionPreparator.java @@ -17,7 +17,7 @@ public UnknownExtensionPreparator() { } @Override - public void prepareExtensionSpecificContents(UnknownExtension object, Chooser chooser) { + protected void prepareExtensionSpecificContents(UnknownExtension object, Chooser chooser) { object.setValue(new byte[100], true); } } From 8c1d166c573817c2f868131f2eea7eed77bbf03a Mon Sep 17 00:00:00 2001 From: c0d3d3v Date: Sat, 22 Mar 2025 15:47:30 +0100 Subject: [PATCH 203/203] fix some more visibilities --- .../nds/sshattacker/core/data/sftp/SftpMessagePreparator.java | 2 +- .../core/data/string/StringDataMessageSerializer.java | 2 +- .../core/data/unknown/UnknownDataMessageSerializer.java | 2 +- .../preparator/UserAuthRequestMessagePreparator.java | 2 +- .../connection/preparator/ChannelMessagePreparator.java | 2 +- .../connection/preparator/GlobalRequestMessagePreparator.java | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessagePreparator.java index 67a005c94..71cd39f02 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/sftp/SftpMessagePreparator.java @@ -26,7 +26,7 @@ protected SftpMessagePreparator(byte packetType) { } @Override - public final void prepareProtocolMessageContents(T object, Chooser chooser) { + protected void prepareProtocolMessageContents(T object, Chooser chooser) { // Always set correct packet type -> Don't use soft set object.setPacketType(packetType); prepareMessageSpecificContents(object, chooser); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java index b604f4ec2..053dc6b9b 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/string/StringDataMessageSerializer.java @@ -26,7 +26,7 @@ private static void serializeData(StringDataMessage object, SerializerStream out } @Override - public final void serializeProtocolMessageContents( + protected void serializeProtocolMessageContents( StringDataMessage object, SerializerStream output) { serializeData(object, output); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java index f25171658..ebd07b288 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/data/unknown/UnknownDataMessageSerializer.java @@ -18,7 +18,7 @@ public class UnknownDataMessageSerializer extends ProtocolMessageSerializer ArrayConverter.bytesToHexString(payload)); diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java index 59a2047b6..589ff9759 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/authentication/preparator/UserAuthRequestMessagePreparator.java @@ -25,7 +25,7 @@ protected UserAuthRequestMessagePreparator(AuthenticationMethod authenticationMe } @Override - public final void prepareMessageSpecificContents(T object, Chooser chooser) { + protected void prepareMessageSpecificContents(T object, Chooser chooser) { object.setUserName(chooser.getConfig().getUsername(), true); object.setServiceName(ServiceType.SSH_CONNECTION, true); // Always set correct authentication method -> Don't use soft set diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java index 5b9fbfa49..4b36bbbf7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/ChannelMessagePreparator.java @@ -30,7 +30,7 @@ protected ChannelMessagePreparator(MessageIdConstant messageId) { } @Override - public final void prepareMessageSpecificContents(T object, Chooser chooser) { + protected void prepareMessageSpecificContents(T object, Chooser chooser) { prepareChannel(object, chooser); prepareChannelMessageSpecificContents(object, chooser); } diff --git a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestMessagePreparator.java b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestMessagePreparator.java index dca2d5822..f74ffa8f7 100644 --- a/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestMessagePreparator.java +++ b/SSH-Core/src/main/java/de/rub/nds/sshattacker/core/protocol/connection/preparator/GlobalRequestMessagePreparator.java @@ -31,7 +31,7 @@ protected GlobalRequestMessagePreparator(String globalRequestType, boolean wantR } @Override - public final void prepareMessageSpecificContents(T object, Chooser chooser) { + protected void prepareMessageSpecificContents(T object, Chooser chooser) { // Always set correct request name -> Don't use soft set object.setRequestName(globalRequestType, true); object.setWantReply(wantReply);