Jan Blumenthal

18 papers B 2C 3Journal 3Unranked 5
YearRankTypeTitle / Venue / Authors
2015 J jnl
J. Parallel Distributed Comput.
Mark G. Aartsen, Rasha U. Abbasi, Markus Ackermann, Jenni Adams, Juan Antonio Aguilar Sánchez, Markus Ahlers, David Altmann, Carlos A. Argüelles Delgado, Jan Auffenberg, Xinhua Bai, Michael F. Baker, Steven W. Barwick, Volker Baum, Ryan Bay, James J. Beatty, Julia K. Becker Tjus, Karl-Heinz Becker, Segev BenZvi, Patrick Berghaus, David Berley, Elisa Bernardini, Anna Bernhard, David Z. Besson, G. Binder, Daniel Bindig, Martin Bissok, Erik Blaufuss, Jan Blumenthal, David J. Boersma, Christian Bohm, Debanjan Bose, Sebastian Böser, Olga Botner, Lionel Brayeur, Hans-Peter Bretz, Anthony M. Brown, Ronald Bruijn, James Casey, Martin Casier, Dmitry Chirkin, Asen Christov, Brian John Christy, Ken Clark, Lew Classen, Fabian Clevermann, Stefan Coenders, Shirit Cohen, Doug F. Cowen, Angel H. Cruz Silva, Matthias Danninger, Jacob Daughhetee, James C. Davis, Melanie Day, Catherine De Clercq, Sam De Ridder, Paolo Desiati, Krijn D. de Vries, Meike de With, Tyce DeYoung, Juan Carlos Díaz-Vélez, Matthew Dunkman, Ryan Eagan, Benjamin Eberhardt, Björn Eichmann, Jonathan Eisch, Sebastian Euler, Paul A. Evenson, Oladipo O. Fadiran, Ali R. Fazely, Anatoli Fedynitch, Jacob Feintzeig, Tom Feusels, Kirill Filimonov, Chad Finley, Tobias Fischer-Wasels, Samuel Flis, Anna Franckowiak, Katharina Frantzen, Tomasz Fuchs, Thomas K. Gaisser, Joseph S. Gallagher, Lisa Marie Gerhardt, Laura E. Gladstone, Thorsten Glüsenkamp, Azriel Goldschmidt, Geraldina Golup, Javier G. González, Jordan A. Goodman, Dariusz Góra, Dylan T. Grandmont, Darren Grant, Pavel Gretskov, John C. Groh, Andreas Groß, Chang Hyon Ha, Abd Al Karim Haj Ismail, Patrick Hallen, Allan Hallgren, Francis Halzen, Kael D. Hanson, Dustin Hebecker, David Heereman, Dirk Heinen, Klaus Helbing, Robert Eugene Hellauer III, Stephanie Virginia Hickford, Gary C. Hill, Kara D. Hoffman, Ruth Hoffmann, Andreas Homeier, Kotoyo Hoshina, Feifei Huang, Warren Huelsnitz, Per Olof Hulth, Klas Hultqvist, Shahid Hussain, Aya Ishihara, Emanuel Jacobi, John E. Jacobsen, Kai Jagielski, George S. Japaridze, Kyle Jero, Ola Jlelati, Basho Kaminsky, Alexander Kappes, Timo Karg, Albrecht Karle, Matthew Kauer, John Lawrence Kelley, Joanna Kiryluk, J. Kläs, Spencer R. Klein, Jan-Hendrik Köhne, Georges Kohnen, Hermann Kolanoski, Lutz Köpke, Claudio Kopper, Sandro Kopper, D. Jason Koskinen, Marek Kowalski, Mark Krasberg, Anna Kriesten, Kai Michael Krings, Gösta Kroll, Jan Kunnen, Naoko Kurahashi, Takao Kuwabara, Mathieu L. M. Labare, Hagar Landsman, Michael James Larson, Mariola Lesiak-Bzdak, Martin Leuermann, Julia Leute, Jan Lünemann, Oscar A. Macías-Ramírez, James Madsen, Giuliano Maggi, Reina Maruyama, Keiichi Mase, Howard S. Matis, Frank McNally, Kevin James Meagher, Martin Merck, Gonzalo Merino Arévalo, Thomas Meures, Sandra Miarecki, Eike Middell, Natalie Milke, John Lester Miller, Lars Mohrmann, Teresa Montaruli, Robert M. Morse, Rolf Nahnhauer, Uwe Naumann, Hans Niederhausen, Sarah C. Nowicki, David R. Nygren, Anna Obertacke, Sirin Odrowski, Alex Olivas, Ahmad Omairat, Aongus Starbuck Ó Murchadha, Larissa Paul, Joshua A. Pepper, Carlos Pérez de los Heros, Carl Pfendner, Damian Pieloth, Elisa Pinat, Jonas Posselt, P. Buford Price, Gerald T. Przybylski, Melissa Quinnan, Leif Rädel, Ian Rae, Mohamed Rameez, Katherine Rawlins, Peter Christian Redl, René Reimann, Elisa Resconi, Wolfgang Rhode, Mathieu Ribordy, Michael Richman, Benedikt Riedel, J. P. Rodrigues, Carsten Rott, Tim Ruhe, Bakhtiyar Ruzybayev, Dirk Ryckbosch, Sabine M. Saba, Heinz-Georg Sander, Juan Marcos Santander, Subir Sarkar, Kai Schatto, Florian Scheriau, Torsten Schmidt, Martin Schmitz, Sebastian Schoenen, Sebastian Schöneberg, Arne Schönwald, Anne Schukraft, Lukas Schulte, David Schultz, Olaf Schulz, David Seckel, Yolanda Sestayo de la Cerra, Surujhdeo Seunarine, Rezo Shanidze, Chris Sheremata, Miles W. E. Smith, Dennis Soldin, Glenn M. Spiczak, Christian Spiering, Michael Stamatikos, Todor Stanev, Nick A. Stanisha, Alexander Stasik, Thorsten Stezelberger, Robert G. Stokstad, Achim Stößl, Erik A. Strahler, Rickard Ström, Nora Linn Strotjohann, Gregory W. Sullivan, Henric Taavola, Ignacio J. Taboada, Alessio Tamburro, Andreas Tepe, Samvel Ter-Antonyan, Gordana Tesic, Serap Tilav, Patrick A. Toale, Moriah Natasha Tobin, Simona Toscano, Maria Tselengidou, Elisabeth Unger, Marcel Usner, Sofia Vallecorsa, Nick van Eijndhoven, Arne Van Overloop, Jakob van Santen, Markus Vehring, Markus Voge, Matthias Vraeghe, Christian Walck, Tilo Waldenmaier, Marius Wallraff, Christopher N. Weaver, Mark T. Wellons, Christopher H. Wendt, Stefan Westerhoff, Nathan Whitehorn, Klaus Wiebe, Christopher H. Wiebusch, Dawn R. Williams, Henrike Wissing, Martin Wolf, Terri R. Wood, Kurt Woschnagg, Donglian Xu, Xianwu Xu, Juan Pablo Yáñez, Gaurang B. Yodh, Shigeru Yoshida, Pavel Zarzhitsky, Jan Ziemann, Simon Zierke, Marcel Zoll
2013 J jnl
CoRR
Mark G. Aartsen, Rasha U. Abbasi, Markus Ackermann, Jenni Adams, Juan Antonio Aguilar Sánchez, Markus Ahlers, David Altmann, Carlos A. Argüelles Delgado, Jan Auffenberg, Xinhua Bai, Michael F. Baker, Steven W. Barwick, Volker Baum, Ryan Bay, James J. Beatty, Julia K. Becker Tjus, Karl-Heinz Becker, Segev BenZvi, Patrick Berghaus, David Berley, Elisa Bernardini, Anna Bernhard, David Z. Besson, G. Binder, Daniel Bindig, Martin Bissok, Erik Blaufuss, Jan Blumenthal, David J. Boersma, Christian Bohm, Debanjan Bose, Sebastian Böser, Olga Botner, Lionel Brayeur, Hans-Peter Bretz, Anthony M. Brown, Ronald Bruijn, James Casey, Martin Casier, Dmitry Chirkin, Asen Christov, Brian John Christy, Ken Clark, Lew Classen, Fabian Clevermann, Stefan Coenders, Shirit Cohen, Doug F. Cowen, Angel H. Cruz Silva, Matthias Danninger, Jacob Daughhetee, James C. Davis, Melanie Day, Catherine De Clercq, Sam De Ridder, Paolo Desiati, Krijn D. de Vries, Meike de With, Tyce DeYoung, Juan Carlos Díaz-Vélez, Matthew Dunkman, Ryan Eagan, Benjamin Eberhardt, Björn Eichmann, Jonathan Eisch, Sebastian Euler, Paul A. Evenson, Oladipo O. Fadiran, Ali R. Fazely, Anatoli Fedynitch, Jacob Feintzeig, Tom Feusels, Kirill Filimonov, Chad Finley, Tobias Fischer-Wasels, Samuel Flis, Anna Franckowiak, Katharina Frantzen, Tomasz Fuchs, Thomas K. Gaisser, Joseph S. Gallagher, Lisa Marie Gerhardt, Laura E. Gladstone, Thorsten Glüsenkamp, Azriel Goldschmidt, Geraldina Golup, Javier G. González, Jordan A. Goodman, Dariusz Góra, Dylan T. Grandmont, Darren Grant, Pavel Gretskov, John C. Groh, Andreas Groß, Chang Hyon Ha, Abd Al Karim Haj Ismail, Patrick Hallen, Allan Hallgren, Francis Halzen, Kael D. Hanson, Dustin Hebecker, David Heereman, Dirk Heinen, Klaus Helbing, Robert Eugene Hellauer III, Stephanie Virginia Hickford, Gary C. Hill, Kara D. Hoffman, Ruth Hoffmann, Andreas Homeier, Kotoyo Hoshina, Feifei Huang, Warren Huelsnitz, Per Olof Hulth, Klas Hultqvist, Shahid Hussain, Aya Ishihara, Emanuel Jacobi, John E. Jacobsen, Kai Jagielski, George S. Japaridze, Kyle Jero, Ola Jlelati, Basho Kaminsky, Alexander Kappes, Timo Karg, Albrecht Karle, Matthew Kauer, John Lawrence Kelley, Joanna Kiryluk, J. Kläs, Spencer R. Klein, Jan-Hendrik Köhne, Georges Kohnen, Hermann Kolanoski, Lutz Köpke, Claudio Kopper, Sandro Kopper, D. Jason Koskinen, Marek Kowalski, Mark Krasberg, Anna Kriesten, Kai Michael Krings, Gösta Kroll, Jan Kunnen, Naoko Kurahashi, Takao Kuwabara, Mathieu L. M. Labare, Hagar Landsman, Michael James Larson, Mariola Lesiak-Bzdak, Martin Leuermann, Julia Leute, Jan Lünemann, Oscar A. Macías-Ramírez, James Madsen, Giuliano Maggi, Reina Maruyama, Keiichi Mase, Howard S. Matis, Frank McNally, Kevin James Meagher, Martin Merck, Gonzalo Merino Arévalo, Thomas Meures, Sandra Miarecki, Eike Middell, Natalie Milke, John Lester Miller, Lars Mohrmann, Teresa Montaruli, Robert M. Morse, Rolf Nahnhauer, Uwe Naumann, Hans Niederhausen, Sarah C. Nowicki, David R. Nygren, Anna Obertacke, Sirin Odrowski, Alex Olivas, Ahmad Omairat, Aongus Starbuck Ó Murchadha, Larissa Paul, Joshua A. Pepper, Carlos Pérez de los Heros, Carl Pfendner, Damian Pieloth, Elisa Pinat, Jonas Posselt, P. Buford Price, Gerald T. Przybylski, Melissa Quinnan, Leif Rädel, Ian Rae, Mohamed Rameez, Katherine Rawlins, Peter Christian Redl, René Reimann, Elisa Resconi, Wolfgang Rhode, Mathieu Ribordy, Michael Richman, Benedikt Riedel, J. P. Rodrigues, Carsten Rott, Tim Ruhe, Bakhtiyar Ruzybayev, Dirk Ryckbosch, Sabine M. Saba, Heinz-Georg Sander, Juan Marcos Santander, Subir Sarkar, Kai Schatto, Florian Scheriau, Torsten Schmidt, Martin Schmitz, Sebastian Schoenen, Sebastian Schöneberg, Arne Schönwald, Anne Schukraft, Lukas Schulte, David Schultz, Olaf Schulz, David Seckel, Yolanda Sestayo de la Cerra, Surujhdeo Seunarine, Rezo Shanidze, Chris Sheremata, Miles W. E. Smith, Dennis Soldin, Glenn M. Spiczak, Christian Spiering, Michael Stamatikos, Todor Stanev, Nick A. Stanisha, Alexander Stasik, Thorsten Stezelberger, Robert G. Stokstad, Achim Stößl, Erik A. Strahler, Rickard Ström, Nora Linn Strotjohann, Gregory W. Sullivan, Henric Taavola, Ignacio J. Taboada, Alessio Tamburro, Andreas Tepe, Samvel Ter-Antonyan, Gordana Tesic, Serap Tilav, Patrick A. Toale, Moriah Natasha Tobin, Simona Toscano, Maria Tselengidou, Elisabeth Unger, Marcel Usner, Sofia Vallecorsa, Nick van Eijndhoven, Arne Van Overloop, Jakob van Santen, Markus Vehring, Markus Voge, Matthias Vraeghe, Christian Walck, Tilo Waldenmaier, Marius Wallraff, Christopher N. Weaver, Mark T. Wellons, Christopher H. Wendt, Stefan Westerhoff, Nathan Whitehorn, Klaus Wiebe, Christopher H. Wiebusch, Dawn R. Williams, Henrike Wissing, Martin Wolf, Terri R. Wood, Kurt Woschnagg, Donglian Xu, Xianwu Xu, Juan Pablo Yáñez, Gaurang B. Yodh, Shigeru Yoshida, Pavel Zarzhitsky, Jan Ziemann, Simon Zierke, Marcel Zoll
2009 ch.
Networked Embedded Systems
Jan Blumenthal, Frank Golatowski, Ralf Behnke, Steffen Prüter, Dirk Timmermann
2009 ch.
Networked Embedded Systems
Frank Reichenbach, Jan Blumenthal, Dirk Timmermann
2008 conf
ICDCS Workshops
Frank Reichenbach, Jan Blumenthal, Dirk Timmermann
2008 C conf
UIC
Stephan Schuhmann, Klaus Herrmann, Kurt Rothermel, Jan Blumenthal, Dirk Timmermann
2008 conf
REALWSN@EuroSys
Jens Schulz, Frank Reichenbach, Jan Blumenthal, Dirk Timmermann
2008
Jan Blumenthal
2006 C conf
DSD
Frank Reichenbach, Jan Blumenthal, Dirk Timmermann
2006 B conf
SECON
Jan Blumenthal, Frank Reichenbach, Dirk Timmermann
2006 B conf
IWCMC
Jan Blumenthal, Dirk Timmermann, Carsten Buschmann, Stefan Fischer, Jochen Koberstein, Norbert Luttenberger
2006 conf
ICWMC
Jan Blumenthal, Dirk Timmermann
2005 J jnl
Prax. Inf.verarb. Kommun.
Jan Blumenthal, Frank Reichenbach, Dirk Timmermann
2005 ch.
Embedded Systems Handbook
Jan Blumenthal, Frank Golatowski, Marc Haase, Matthias Handy
2005 ch.
The Industrial Information Technology Handbook
Jan Blumenthal, Frank Golatowski, Marc Haase, Matthias Handy
2004 conf
GI Jahrestagung (2)
Jan Blumenthal, Matthias Handy, Dirk Timmermann
2003 conf
ETFA (1)
Jan Blumenthal, Matthias Handy, Frank Golatowski, Marc Haase, Dirk Timmermann
2002 C conf
IEEE International Workshop on Rapid System Prototyping
Frank Golatowski, Jens Hildebrandt, Jan Blumenthal, Dirk Timmermann
redb/extractors/pe_extractors/pe_inconsistency_tests.py
← Index redb/extractors/pe_extractors/pe_inconsistency_tests.py python
import inspect
from redb.ext.spoof_check import (
    Result,
    checksum_test,
    duplicate_test,
    import_count_test,
    linker_test,
)
from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import (
    DotNetInconsistencyTests,
    PEInconsistencyTests,
)
from datetime import datetime, timezone
from typing import Any


class PEInconstistencyTestsExtractor(PEExtractor):
    """Collection of functions to perform features inconsistency tests

    A Test where the result is True means that there is an inconsistency.
    At the moments it runs a series of inconsistency tests on PE metadata from
    - spoof_check
    - pescanner
    - dotnetfile
    """

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        pe=None,
        dotnet=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            pe,
        )
        self.dotnet = dotnet if dotnet else None
        self.pe_inconsistency_tests = None
        self.dotnet_inconsistency_tests = None
        self.elastic_index = self.index_prefix + "-pe_inconsistency_tests"

    def tag(self):
        return [Tag.PE_INCONSISTENCY_TESTS.value, Tag.DOTNET_INCONSISTENCY_TESTS.value]

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        tests_performed = False

        # Handle PE rich header tests
        try:
            rich_header = self.pe.parse_rich_header()
            if rich_header:
                self.pe_inconsistency_tests = PEInconsistencyTests(
                    test_rich_header_checksum=checksum_test(self.pe, rich_header) == Result.INVALID,
                    test_rich_header_duplicate=duplicate_test(self.pe, rich_header) == Result.INVALID,
                    test_rich_header_linker=linker_test(self.pe, rich_header) == Result.INVALID,
                    test_rich_header_import_count=import_count_test(self.pe, rich_header) == Result.INVALID,
                )
                tests_performed = True
            else:
                self.pe_inconsistency_tests = PEInconsistencyTests(
                    test_rich_header_checksum=None,
                    test_rich_header_duplicate=None,
                    test_rich_header_linker=None,
                    test_rich_header_import_count=None,
                )
        except Exception as e:
            self.log.error(f"Error processing rich header tests for {self.hash.sha256}: {e}")
            self.pe_inconsistency_tests = None

            # self.export_to_elastic([self.pe_inconsistency_tests])

        # Handle .NET tests
        try:
            if self._check_dotnet():
                if not self.dotnet:
                    self.dotnet, self.error = self._generate_dotnetfile_object()
                if self.error:
                    self.log.error(f"Error generating .NET object {self.hash.sha256}: {self.error}")
                self.dotnet_inconsistency_tests = DotNetInconsistencyTests(
                    test_dotnet_data_dir_hidden=self.dotnet.AntiMetadataAnalysis.is_dotnet_data_directory_hidden,
                    test_dotnet_extra_data=self.dotnet.AntiMetadataAnalysis.has_metadata_table_extra_data,
                    test_dotnet_fake_types=self.dotnet.AntiMetadataAnalysis.has_self_referenced_typeref_entries,
                    test_dotnet_invalid_type_ref=self.dotnet.AntiMetadataAnalysis.has_invalid_typeref_entries,
                    test_dotnet_fake_datastreams=self.dotnet.AntiMetadataAnalysis.has_fake_data_streams,
                    test_dotnet_extra_module_table=self.dotnet.AntiMetadataAnalysis.module_table_has_multiple_rows,
                    test_dotnet_extra_assembly_table=self.dotnet.AntiMetadataAnalysis.assembly_table_has_multiple_rows,
                    test_dotnet_invalid_strings_stream=self.dotnet.AntiMetadataAnalysis.has_invalid_strings_stream_entries,
                    test_dotnet_streams_mixed_case=self.dotnet.AntiMetadataAnalysis.has_mixed_case_stream_names,
                    test_dotnet_method_def_invalid_table=self.dotnet.AntiMetadataAnalysis.has_invalid_methoddef_entries,
                    test_dotnet_max_len_exceeding_strings=self.dotnet.AntiMetadataAnalysis.has_max_len_exceeding_strings,
                )
                tests_performed = True
        except Exception as e:
            self.log.error(f"Error processing .NET tests for {self.hash.sha256}: {e}")
            self.dotnet_inconsistency_tests = None

        # self.export_to_elastic([self.dotnet_inconsistency_tests])

        # If no tests were performed, return False to skip database insertion
        if not tests_performed:
            self.log.info("No inconsistency tests were performed.")
            return False

        return True

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return [self.pe_inconsistency_tests, self.dotnet_inconsistency_tests]
        elif exporter_type == "ClickHouseExporter":
            current_time = datetime.now(timezone.utc)

            # For PE tests: if no rich header (all True), store NULL instead
            has_rich_header = any([
                hasattr(self.pe_inconsistency_tests, 'test_rich_header_checksum'),
                hasattr(self.pe_inconsistency_tests, 'test_rich_header_duplicate'),
                hasattr(self.pe_inconsistency_tests, 'test_rich_header_linker'),
                hasattr(self.pe_inconsistency_tests, 'test_rich_header_import_count')
            ])
            
            pe_tests = [
                None if not has_rich_header else self.pe_inconsistency_tests.test_rich_header_checksum,
                None if not has_rich_header else self.pe_inconsistency_tests.test_rich_header_duplicate,
                None if not has_rich_header else self.pe_inconsistency_tests.test_rich_header_linker,
                None if not has_rich_header else self.pe_inconsistency_tests.test_rich_header_import_count,
            ]
            
            # For .NET tests: if not a .NET file, store NULL instead of False
            dotnet_tests = [
                self.dotnet_inconsistency_tests.test_dotnet_data_dir_hidden if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_extra_data if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_fake_types if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_invalid_type_ref if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_fake_datastreams if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_extra_module_table if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_extra_assembly_table if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_invalid_strings_stream if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_streams_mixed_case if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_method_def_invalid_table if self.dotnet_inconsistency_tests else None,
                self.dotnet_inconsistency_tests.test_dotnet_max_len_exceeding_strings if self.dotnet_inconsistency_tests else None,
            ]
            
            data = [[
                self.sha256,
                self.md5,
                self.sha1,
                *pe_tests,
                *dotnet_tests,
                current_time
            ]]

            column_names = [
                'sha256', 'md5', 'sha1',
                'test_rich_header_checksum', 'test_rich_header_duplicate', 'test_rich_header_linker', 'test_rich_header_import_count',
                'test_dotnet_data_dir_hidden', 'test_dotnet_extra_data',
                'test_dotnet_fake_types', 'test_dotnet_invalid_type_ref',
                'test_dotnet_fake_datastreams', 'test_dotnet_extra_module_table',
                'test_dotnet_extra_assembly_table', 'test_dotnet_invalid_strings_stream',
                'test_dotnet_streams_mixed_case', 'test_dotnet_method_def_invalid_table',
                'test_dotnet_max_len_exceeding_strings', 'analysis_date'
            ]
            
            column_type_names = [
                'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                'Nullable(Boolean)', 'Nullable(Boolean)', 'Nullable(Boolean)', 'Nullable(Boolean)',
                'Nullable(Boolean)', 'Nullable(Boolean)', 'Nullable(Boolean)', 'Nullable(Boolean)',
                'Nullable(Boolean)', 'Nullable(Boolean)', 'Nullable(Boolean)', 'Nullable(Boolean)',
                'Nullable(Boolean)', 'Nullable(Boolean)', 'Nullable(Boolean)',
                'DateTime64(3, \'UTC\')'
            ]

            if not data:
                return None

            return (data, column_names, column_type_names)

    def get_clickhouse_table(self) -> str:
        return "redb_pe_inconsistency_tests"