Source Code

Multimedia Forensics

Continual-SNI repository

This repository includes a Python implementation of a method of continual social network identification. The tool is described in Simone Magistri, Daniele Baracchi, Dasara Shullani, Andrew D. Bagdanov, and Alessandro Piva. “Towards Continual Social Network Identification”, 2023 11th International Workshop on Biometrics and Forensics (IWBF).

GVPF repository

This repository includes a Matlab implementation of the Generalized Variation of Prediction Footprint. The tool is described in D. Vázquez-Padín, M. Fontani, D. Shullani, F. Pérez-González, A. Piva, M. Barni. “Video Integrity Verification and GOP Size Estimation via Generalized Variation of Prediction Footprint” to appear in IEEE Transactions on Information Forensics and Security, 10.1109/TIFS.2019.2951313.

This archive includes a Matlab implementation of the Sensor Pattern Noise analysis for digital videos using images as reference. The tool is described in M. Iuliani, M. Fontani, D. Shullani, A. Piva “Hybrid reference-based Video Source Identification”. Sensors 2019, 19, 649. Last update on February 11, 2019.

This archive includes a Matlab implementation of the feature extraction routine employed by our tool for contrast-enhancement detection in digital images using second order statistics. The tool is described in A. De Rosa, M. Fontani, M. Massai, A. Piva and M. Barni “Second-Order Statistics Analysis to Cope With Contrast Enhancement Counter-Forensics” IEEE Signal Processing Letters, vol.22, no.8, pp.1132,1136, Aug. 2015. Notice that the code does not include the machine learning part.

This archive includes a Matlab implementation of a tool allowing to detect whether an MP3 file has been previously encoded with a lower quality and, if this is the case, also estimates the previous bitrate. As such, this tool is a candidate solution for the fake quality detection problem. The tool is described in T. Bianchi, A. De Rosa, M. Fontani, G. Rocciolo, and A. Piva, “Detection and classication of double compressed MP3 audio tracks”, Proceedings of 1st ACM Intl. Workshop on Information Hiding and Multimedia Security,Montpellier, France June 2013. A demo program and a sample dataset are included.

This archive includes a Matlab implementation of algorithms used to detect doubly compressed JPEG images that have been resized before the second compression, as described in T.Bianchi, A.Piva, “Reverse Engineering of Double JPEG Compression in the Presence of Image Resizing”, Proceedings of WIFS 2012,Tenerife, Spain, Dec. 2012. A demo program and a sample dataset are included.

This archive includes a Matlab implementation of an algorithm used to localize tampered regions in color images acquired with a Color Filter Array, as decribed in P.Ferrara, T.Bianchi, A.De Rosa, A.Piva, “Image Forgery Localization via Fine-Grained Analysis of CFA Artifacts”, IEEE Transactions on Information Forensics & Security,vol. 7, no. 5, Oct. 2012 (published online June 2012), pp. 1566-1577. A demo program and a sample dataset are included.

This archive includes a Matlab implementation of an algorithm used to localize doubly compressed regions in JPEG images, as decribed in T.Bianchi, A.Piva, “Image Forgery Localization via Block-Grained Analysis of JPEG Artifacts”, IEEE Transactions on Information Forensics & Security, vol. 7, no. 3, June 2012 (published online Feb. 2012), pp. 1003-1017. A demo program and a sample dataset are included.

This archive includes a Matlab implementation of an algorithm used to detect the presence of non-aligned double JPEG compression, as decribed in T.Bianchi, A.Piva, “Detection of Nonaligned Double JPEG Compression Based on Integer Periodicity Maps”, IEEE Transactions on Information Forensics &; Security, vol. 7, no. 2, April 2012, pp. 842-848. A demo program and a sample dataset are included.

This archive includes a Matlab implementation of an algorithm used to detect and localize aligned double JPEG compression, as decribed in T.Bianchi, A.De Rosa, A.Piva, “Improved DCT Coefficient Analysis for Forgery Localization in JPEG Images”, Proceedings of ICASSP 2011, Prague, Czech Republic, May 2011, pp. 2444-2447.

This archive includes a Matlab implementation of an algorithm used to detect and localize non-aligned double JPEG compression, as decribed in T.Bianchi, A.Piva, “Analysis of Non-Aligned Double JPEG Artifacts for the Localization of Image Forgeries”, Proceedings of WIFS 2011, Foz do Iguaçu, Brazil, Nov.-Dec. 2011.

This archive includes Matlab JPEG Toolbox v1.4. Compiled .mex files for Windows and Linux x64 architectures are also included.

Secure Signal Processing

This archive includes a C++ prototype implementation of encrypted domain fast Fourier transform (e-FFT) based on Paillier homomorphic cryptosystem [1]. Both radix-2 and radix-4 decimation in time versions are provided. If you find the code useful, please cite the following reference:

  • T.Bianchi, A.Piva, M.Barni, “On the Implementation of the Discrete Fourier Transform in the Encrypted Domain”, IEEE Transactions on Information Forensics and Security, vol. 4, no. 1, Mar. 2009, pp. 86-97.

This archive includes a C++ prototype implementation of encrypted domain discrete cosine transform (e-DCT) based on Paillier homomorphic cryptosystem [1]. It provides both standard and fast (based on Hou’s algorithm) DCT-II and DCT-III. The archive also includes routines for composite representation [2] and a demo applying encrypted domain 8x8 block DCT/fast DCT using both standard and composite representations. If you find the code useful, please cite the following references:

  • T.Bianchi, A.Piva, M.Barni, “Encrypted Domain DCT based on Homomorphic Cryptosystems”, EURASIP Journal on Information Security, vol. 2009, no. Article ID 716357, 2009, pp. 12 pages.
  • T.Bianchi, A.Piva, M.Barni, “Composite Signal Representation for Fast and Storage-Efficient Processing of Encrypted Signals”, IEEE Transactions on Information Forensics and Security, vol. 5, no. 1, March 2010, pp. 180-187.

This archive includes a C++ demo implementation of encrypted domain watermark embedding based on Paillier homomorphic cryptosystem and composite representation [1]. Different watermarking schemes (QIM, DC-QIM, RDM) and different encrypted domain embedding strategies are considered. If you find the code useful, please cite the following reference:

  • M.Deng, T.Bianchi, A.Piva, B.Preneel, “Efficient implementation of a buyer-seller watermarking protocol using a composite signal representation”, Proceedings of the First International Workshop on Signal Processing in the EncryptEd Domain (SPEED 2009), Lausanne, Switzerland, Sept. 2009.

This archive includes a prototype implementation of client-side spread transform dither modulation (ST-DM) based on look-up tables [1]. It provides three java applications implementing the three entities required by the client-side watermarking protocol: the Server, the Client, and the Trusted Third Party. A simple demo script show how to run the three entities to perform system setup, encryption, client-side joint decryption and watermarking, watermark detection. If you find the code useful, please cite the following reference:

  • A. Piva, T. Bianchi, A. De Rosa, “Secure Client-Side ST-DM Watermark Embedding”, IEEE Transactions on Information Forensics and Security, vol. 5, no. 1, March 2010, pp. 13-26.