Пример #1
0
    def test_sapcar_archive_add_file(self):
        """Test some basic construction of a SAP CAR archive adding from an existent file"""

        ar = SAPCARArchive("somefile", "w")
        ar.add_file(self.test_filename)
        ar.add_file(self.test_filename, archive_filename=self.test_filename+"two")

        self.assertEqual("2.01", ar.version)
        self.assertEqual(2, len(ar.files))
        self.assertEqual(2, len(ar.files_names))
        self.assertListEqual([self.test_filename, self.test_filename+"two"], ar.files_names)
        self.assertListEqual([self.test_filename, self.test_filename+"two"], ar.files.keys())

        for filename in [self.test_filename, self.test_filename+"two"]:
            af = ar.open(filename)
            self.assertEqual(self.test_string, af.read())
            af.close()

            ff = ar.files[filename]
            self.assertEqual(len(self.test_string), ff.size)
            self.assertEqual(filename, ff.filename)

            self.assertTrue(ff.check_checksum())
            self.assertEqual(ff.calculate_checksum(self.test_string), ff.checksum)

            af = ff.open()
            self.assertEqual(self.test_string, af.read())
            af.close()
Пример #2
0
    def test_sapcar_archive_add_file(self):
        """Test some basic construction of a SAP CAR archive adding from an existent file"""

        ar = SAPCARArchive(self.test_archive_file, "w")
        ar.add_file(self.test_filename)
        ar.add_file(self.test_filename,
                    archive_filename=self.test_filename + "two")

        self.assertEqual("2.01", ar.version)
        self.assertEqual(2, len(ar.files))
        self.assertEqual(2, len(ar.files_names))
        self.assertListEqual([self.test_filename, self.test_filename + "two"],
                             ar.files_names)
        self.assertListEqual([self.test_filename, self.test_filename + "two"],
                             ar.files.keys())

        for filename in [self.test_filename, self.test_filename + "two"]:
            af = ar.open(filename)
            self.assertEqual(self.test_string, af.read())
            af.close()

            ff = ar.files[filename]
            self.assertEqual(len(self.test_string), ff.size)
            self.assertEqual(filename, ff.filename)

            self.assertTrue(ff.check_checksum())
            self.assertEqual(ff.calculate_checksum(self.test_string),
                             ff.checksum)

            af = ff.open()
            self.assertEqual(self.test_string, af.read())
            af.close()

        ar.write()
        ar.close()
Пример #3
0
def infect_sar_file(sar_filename, inject_files):
    """ Receives a SAR file and infects it by adding new files

    :type sar_filename: string
    :param sar_filename: name of the SAR file to infect

    :type inject_files: list of strings
    :param inject_files: list of files to inject into the SAR file
    """

    sar = SAPCARArchive(sar_filename, "r+")

    # Add each of the files specified as inject files
    for filename, archive_filename in inject_files:
        sar.add_file(filename, archive_filename=archive_filename)

    # Writes the modified file
    sar.write()
Пример #4
0
def infect_sar_file(sar_filename, inject_files):
    """ Receives a SAR file and infects it by adding new files

    :type sar_filename: string
    :param sar_filename: name of the SAR file to infect

    :type inject_files: list of strings
    :param inject_files: list of files to inject into the SAR file
    """

    sar = SAPCARArchive(sar_filename, "r+")

    # Add each of the files specified as inject files
    for filename, archive_filename in inject_files:
        sar.add_file(filename, archive_filename=archive_filename)

    # Writes the modified file
    sar.write()