Carmela Troncoso

168 papers A* 37A 14C 2Misc 2Journal 85Unranked 27
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Bogdan Kulynych, Theresa Stadler, Jean Louis Raisaro, Carmela Troncoso
2025 A* conf
SP
Eva Luvison, Sylvain Chatel, Justinas Sukaitis, Vincent Graf Narbel, Carmela Troncoso, Wouter Lueks
2025 J jnl
CoRR
Klim Kireev, Ana-Maria Cretu, Raphael Meier, Sarah Adel Bargal, Elissa M. Redmiles, Carmela Troncoso
2025 A conf
ICWSM
Klim Kireev, Yevhen Mykhno, Carmela Troncoso, Rebekah Overdorf
2025 A* conf
USENIX Security Symposium
Klim Kireev, Yevhen Mykhno, Carmela Troncoso, Rebekah Overdorf
2025 A* conf
USENIX Security Symposium
Saiid El Hajj Chehade, Ben Stock, Carmela Troncoso
2025 J jnl
CoRR
Ana-Maria Cretu, Klim Kireev, Amro Abdalla, Wisdom Obinna, Raphael Meier, Sarah Adel Bargal, Elissa M. Redmiles, Carmela Troncoso
2025 A* conf
SP
Mathilde Raynal, Carmela Troncoso
2025 J jnl
Dagstuhl Reports
Emiliano De Cristofaro, Kris Shrishak, Thorsten Strufe, Carmela Troncoso, Felix Morsbach
2025 A* conf
CHI
Kavous Salehzadeh Niksirat, Collins W. Munyendo, Onicio Batista Leal Neto, Muswagha Katya, Cyrille Kouassi, Kevin Ochieng, Angoa Georgina, Bernard Olayo, Jean-Philippe Barras, Ciro Cattuto, Adam J. Aviv, Carmela Troncoso
2024 J jnl
CoRR
Eva Luvison, Sylvain Chatel, Justinas Sukaitis, Vincent Graf Narbel, Carmela Troncoso, Wouter Lueks
2024 A* conf
NeurIPS
Bogdan Kulynych, Juan Felipe Gómez, Georgios Kaissis, Flávio P. Calmon, Carmela Troncoso
2024 J jnl
CoRR
Bogdan Kulynych, Juan Felipe Gómez, Georgios Kaissis, Flávio du Pin Calmon, Carmela Troncoso
2024 J jnl
J. Cybersecur.
Harold Abelson, Ross J. Anderson, Steven M. Bellovin, Josh Benaloh, Matt Blaze, Jon Callas, Whitfield Diffie, Susan Landau, Peter G. Neumann, Ronald L. Rivest, Jeffrey I. Schiller, Bruce Schneier, Vanessa Teague, Carmela Troncoso
2024 J jnl
CoRR
Klim Kireev, Yevhen Mykhno, Carmela Troncoso, Rebekah Overdorf
2024 A* conf
CCS
Christian Mouchet, Sylvain Chatel, Apostolos Pyrgelis, Carmela Troncoso
2024 J jnl
IACR Cryptol. ePrint Arch.
Christian Mouchet, Sylvain Chatel, Apostolos Pyrgelis, Carmela Troncoso
2024 A* conf
SP
Kasra Edalatnejad, Wouter Lueks, Justinas Sukaitis, Vincent Graf Narbel, Massimo Marelli, Carmela Troncoso
2024 conf
AISec@CCS
Dario Pasquini, Martin Strohmeier, Carmela Troncoso
2024 J jnl
CoRR
Dario Pasquini, Martin Strohmeier, Carmela Troncoso
2024 J jnl
CoRR
Mathilde Raynal, Carmela Troncoso
2024 A* conf
SP
Saiid El Hajj Chehade, Sandra Deepthy Siby, Carmela Troncoso
2024 J jnl
CoRR
Saiid El Hajj Chehade, Sandra Deepthy Siby, Carmela Troncoso
2024 A* conf
ICML
Theresa Stadler, Bogdan Kulynych, Michael Gastpar, Nicolas Papernot, Carmela Troncoso
2024 J jnl
CoRR
Theresa Stadler, Bogdan Kulynych, Nicolas Papernot, Michael Gastpar, Carmela Troncoso
2024 A* conf
SP
Dario Pasquini, Giuseppe Ateniese, Carmela Troncoso
2024 A* conf
CCS
Sylvain Chatel, Christian Knabenhans, Apostolos Pyrgelis, Carmela Troncoso, Jean-Pierre Hubaux
2023 A* ed.
USENIX Security Symposium
Joseph A. Calandrino, Carmela Troncoso
2023 A* conf
NDSS
Klim Kireev, Bogdan Kulynych, Carmela Troncoso
2023 conf
EWAF
Bogdan Kulynych, Hsiang Hsu, Carmela Troncoso, Flávio P. Calmon
2023 conf
FAccT
Bogdan Kulynych, Hsiang Hsu, Carmela Troncoso, Flávio P. Calmon
2023 J jnl
CoRR
Bogdan Kulynych, Hsiang Hsu, Carmela Troncoso, Flávio P. Calmon
2023 A conf
CSF
Konstantinos Chatzikokolakis, Giovanni Cherubin, Catuscia Palamidessi, Carmela Troncoso
2023 J jnl
CoRR
Mathilde Raynal, Dario Pasquini, Carmela Troncoso
2023 A* conf
CCS
Shaoor Munir, Sandra Deepthy Siby, Umar Iqbal, Steven Englehardt, Zubair Shafiq, Carmela Troncoso
2023 J jnl
Proc. Priv. Enhancing Technol.
Sandra Deepthy Siby, Ludovic Barman, Christopher A. Wood, Marwan Fayed, Nick Sullivan, Carmela Troncoso
2023 J jnl
CoRR
Kasra Edalatnejad, Wouter Lueks, Justinas Sukaitis, Vincent Graf Narbel, Massimo Marelli, Carmela Troncoso
2023 A* conf
SP
Boya Wang, Wouter Lueks, Justinas Sukaitis, Vincent Graf Narbel, Carmela Troncoso
2023 J jnl
CoRR
Boya Wang, Wouter Lueks, Justinas Sukaitis, Vincent Graf Narbel, Carmela Troncoso
2023 A* conf
SP
Dario Pasquini, Mathilde Raynal, Carmela Troncoso
2023 A* conf
CCS
Sylvain Chatel, Christian Mouchet, Ali Utkan Sahin, Apostolos Pyrgelis, Carmela Troncoso, Jean-Pierre Hubaux
2023 J jnl
IACR Cryptol. ePrint Arch.
Sylvain Chatel, Christian Mouchet, Ali Utkan Sahin, Apostolos Pyrgelis, Carmela Troncoso, Jean-Pierre Hubaux
2023 A* conf
CCS
Sylvain Chatel, Christian Knabenhans, Apostolos Pyrgelis, Carmela Troncoso, Jean-Pierre Hubaux
2023 J jnl
Proc. Priv. Enhancing Technol.
Kasra Edalatnejad, Mathilde Raynal, Wouter Lueks, Carmela Troncoso
2023 A* conf
NeurIPS
Klim Kireev, Maksym Andriushchenko, Carmela Troncoso, Nicolas Flammarion
2023 J jnl
CoRR
Klim Kireev, Maksym Andriushchenko, Carmela Troncoso, Nicolas Flammarion
2023 J jnl
CoRR
Dario Pasquini, Giuseppe Ateniese, Carmela Troncoso
2022 J jnl
CoRR
Klim Kireev, Bogdan Kulynych, Carmela Troncoso
2022 J jnl
CoRR
Shaoor Munir, Sandra Deepthy Siby, Umar Iqbal, Steven Englehardt, Zubair Shafiq, Carmela Troncoso
2022 J jnl
Commun. ACM
Carmela Troncoso, Dan Bogdanov, Edouard Bugnion, Sylvain Chatel, Cas Cremers, Seda F. Gürses, Jean-Pierre Hubaux, Dennis Jackson, James R. Larus, Wouter Lueks, Rui Oliveira, Mathias Payer, Bart Preneel, Apostolos Pyrgelis, Marcel Salathé, Theresa Stadler, Michael Veale
2022 J jnl
Proc. Priv. Enhancing Technol.
Bogdan Kulynych, Mohammad Yaghini, Giovanni Cherubin, Michael Veale, Carmela Troncoso
2022 J jnl
CoRR
Dario Pasquini, Mathilde Raynal, Carmela Troncoso
2022 A* conf
USENIX Security Symposium
Giovanni Cherubin, Rob Jansen, Carmela Troncoso
2022 J jnl
CoRR
Kasra Edalatnejad, Mathilde Raynal, Wouter Lueks, Carmela Troncoso
2022 A* conf
USENIX Security Symposium
Theresa Stadler, Bristena Oprisanu, Carmela Troncoso
2022 J jnl
CoRR
Ludovic Barman, Sandra Deepthy Siby, Christopher A. Wood, Marwan Fayed, Nick Sullivan, Carmela Troncoso
2022 A* conf
USENIX Security Symposium
Sandra Deepthy Siby, Umar Iqbal, Steven Englehardt, Zubair Shafiq, Carmela Troncoso
2022 J jnl
Nat. Comput. Sci.
Theresa Stadler, Carmela Troncoso
2021 J jnl
CoRR
Hal Abelson, Ross J. Anderson, Steven M. Bellovin, Josh Benaloh, Matt Blaze, Jon Callas, Whitfield Diffie, Susan Landau, Peter G. Neumann, Ronald L. Rivest, Jeffrey I. Schiller, Bruce Schneier, Vanessa Teague, Carmela Troncoso
2021 J jnl
Proc. Priv. Enhancing Technol.
Wouter Lueks, Seda F. Gürses, Michael Veale, Edouard Bugnion, Marcel Salathé, Kenneth G. Paterson, Carmela Troncoso
2021 J jnl
CoRR
Theresa Stadler, Wouter Lueks, Katharina Kohls, Carmela Troncoso
2021 J jnl
Frontiers Digit. Health
Wouter Lueks, Justus Benzler, Dan Bogdanov, Göran Kirchner, Raquel Lucas, Rui Oliveira, Bart Preneel, Marcel Salathé, Carmela Troncoso, Viktor von Wyl
2021 J jnl
CoRR
Sandra Deepthy Siby, Umar Iqbal, Steven Englehardt, Zubair Shafiq, Carmela Troncoso
2020 J jnl
Proc. Priv. Enhancing Technol.
Álvaro Feal, Paolo Calciati, Narseo Vallina-Rodriguez, Carmela Troncoso, Alessandra Gorla
2020 J jnl
CoRR
Kasra Edalatnejad, Wouter Lueks, Julien Pierre Martin, Soline Ledésert, Anne L'Hôte, Bruno Thomas, Laurent Girod, Carmela Troncoso
2020 A* conf
USENIX Security Symposium
Kasra Edalatnejad, Wouter Lueks, Julien Pierre Martin, Soline Ledésert, Anne L'Hôte, Bruno Thomas, Laurent Girod, Carmela Troncoso
2020 J jnl
CoRR
Carmela Troncoso, Mathias Payer, Jean-Pierre Hubaux, Marcel Salathé, James R. Larus, Edouard Bugnion, Wouter Lueks, Theresa Stadler, Apostolos Pyrgelis, Daniele Antonioli, Ludovic Barman, Sylvain Chatel, Kenneth G. Paterson, Srdjan Capkun, David A. Basin, Jan Beutel, Dennis Jackson, Marc Roeschlin, Patrick Leu, Bart Preneel, Nigel P. Smart, Aysajan Abidin, Seda F. Gürses, Michael Veale, Cas Cremers, Michael Backes, Nils Ole Tippenhauer, Reuben Binns, Ciro Cattuto, Alain Barrat, Dario Fiore, Manuel Barbosa, Rui Oliveira, José Pereira
2020 J jnl
IEEE Data Eng. Bull.
Carmela Troncoso, Mathias Payer, Jean-Pierre Hubaux, Marcel Salathé, James R. Larus, Wouter Lueks, Theresa Stadler, Apostolos Pyrgelis, Daniele Antonioli, Ludovic Barman, Sylvain Chatel, Kenneth G. Paterson, Srdjan Capkun, David A. Basin, Jan Beutel, Dennis Jackson, Marc Roeschlin, Patrick Leu, Bart Preneel, Nigel P. Smart, Aysajan Abidin, Seda Gurses, Michael Veale, Cas Cremers, Michael Backes, Nils Ole Tippenhauer, Reuben Binns, Ciro Cattuto, Alain Barrat, Dario Fiore, Manuel Barbosa, Rui Oliveira, José Pereira
2020 A* conf
NDSS
Sandra Deepthy Siby, Marc Juarez, Claudia Díaz, Narseo Vallina-Rodriguez, Carmela Troncoso
2020 Misc conf
AMIA
Jean Louis Raisaro, Juan Ramón Troncoso-Pastoriza, Yamane El-Zein, Mathias Humbert, Jacques Fellay, Carmela Troncoso, Jean-Pierre Hubaux
2020 conf
MIE
Jean Louis Raisaro, Juan Ramón Troncoso-Pastoriza, Yamane El-Zein, Mathias Humbert, Carmela Troncoso, Jacques Fellay, Jean-Pierre Hubaux
2020 conf
SIGMETRICS (Abstracts)
Apostolos Pyrgelis, Carmela Troncoso, Emiliano De Cristofaro
2020 J jnl
Proc. ACM Meas. Anal. Comput. Syst.
Apostolos Pyrgelis, Carmela Troncoso, Emiliano De Cristofaro
2020 conf
FAT*
Bogdan Kulynych, Rebekah Overdorf, Carmela Troncoso, Seda F. Gürses
2020 J jnl
CoRR
Blagovesta Kostova, Seda F. Gürses, Carmela Troncoso
2020 J jnl
CoRR
Theresa Stadler, Bristena Oprisanu, Carmela Troncoso
2020 J jnl
Proc. Priv. Enhancing Technol.
Wouter Lueks, Brinda Hampiholi, Greg Alpár, Carmela Troncoso
2020 J jnl
CoRR
Konstantinos Chatzikokolakis, Giovanni Cherubin, Catuscia Palamidessi, Carmela Troncoso
2020 J jnl
CoRR
Justus Benzler, Dan Bogdanov, Göran Kirchner, Wouter Lueks, Raquel Lucas, Rui Oliveira, Bart Preneel, Marcel Salathé, Carmela Troncoso, Viktor von Wyl
2020 A* conf
USENIX Security Symposium
Wouter Lueks, Iñigo Querejeta-Azurmendi, Carmela Troncoso
2020 J jnl
CoRR
Wouter Lueks, Iñigo Querejeta-Azurmendi, Carmela Troncoso
2019 J jnl
CoRR
Fernando Pérez-González, Carmela Troncoso, Simon Oya
2019 J jnl
CoRR
Mohammad Yaghini, Bogdan Kulynych, Carmela Troncoso
2019 J jnl
Proc. Priv. Enhancing Technol.
Konstantinos Chatzikokolakis, Carmela Troncoso
2019 J jnl
Proc. Priv. Enhancing Technol.
Kostas Chatzikokolakis, Carmela Troncoso
2019 J jnl
Proc. Priv. Enhancing Technol.
Kostas Chatzikokolakis, Carmela Troncoso
2019 J jnl
Proc. Priv. Enhancing Technol.
Kostas Chatzikokolakis, Carmela Troncoso
2019 J jnl
CoRR
Sandra Deepthy Siby, Marc Juarez, Claudia Díaz, Narseo Vallina-Rodriguez, Carmela Troncoso
2019 J jnl
CoRR
Simon Oya, Fernando Pérez-González, Carmela Troncoso
2019 J jnl
CoRR
Simon Oya, Carmela Troncoso, Fernando Pérez-González
2019 A* conf
USENIX Security Symposium
Spyros Boukoros, Mathias Humbert, Stefan Katzenbeisser, Carmela Troncoso
2019 A* conf
CCS
Borja Balle, Adrià Gascón, Olya Ohrimenko, Mariana Raykova, Phillipp Schoppmann, Carmela Troncoso
2019 A conf
EuroS&P
Simon Oya, Carmela Troncoso, Fernando Pérez-González
2019 conf
CSLAW
Stefan Savage, Ian Levy, Kobbi Nissim, Paul Ohm, Carmela Troncoso, Nicole Wong
2019 J jnl
CoRR
Apostolos Pyrgelis, Carmela Troncoso, Emiliano De Cristofaro
2019 J jnl
CoRR
Simon Oya, Carmela Troncoso, Fernando Pérez-González
2019 J jnl
CoRR
Spyros Boukoros, Mathias Humbert, Stefan Katzenbeisser, Carmela Troncoso
2019 conf
WPES@CCS
Wouter Lueks, Bogdan Kulynych, Jules Fasquelle, Simon Le Bail-Collet, Carmela Troncoso
2019 J jnl
CoRR
Wouter Lueks, Bogdan Kulynych, Jules Fasquelle, Simon Le Bail-Collet, Carmela Troncoso
2018 J jnl
CoRR
Simon Oya, Carmela Troncoso, Fernando Pérez-González
2018 conf
WPES@CCS
Bogdan Kulynych, Wouter Lueks, Marios Isaakidis, George Danezis, Carmela Troncoso
2018 J jnl
Proc. Priv. Enhancing Technol.
Rachel Greenstadt, Damon McCoy, Carmela Troncoso
2018 J jnl
Proc. Priv. Enhancing Technol.
Rachel Greenstadt, Damon McCoy, Carmela Troncoso
2018 J jnl
Proc. Priv. Enhancing Technol.
Rachel Greenstadt, Damon McCoy, Carmela Troncoso
2018 J jnl
Proc. Priv. Enhancing Technol.
Rachel Greenstadt, Damon McCoy, Carmela Troncoso
2018 J jnl
CoRR
Bogdan Kulynych, Jamie Hayes, Nikita Samarin, Carmela Troncoso
2018 A* conf
NDSS
Apostolos Pyrgelis, Carmela Troncoso, Emiliano De Cristofaro
2018 J jnl
CoRR
Rebekah Overdorf, Bogdan Kulynych, Ero Balsa, Carmela Troncoso, Seda F. Gürses
2018 J jnl
CoRR
Chen Chen, Daniele Enrico Asoni, Adrian Perrig, David Barrera, George Danezis, Carmela Troncoso
2018 A conf
EuroS&P
Chen Chen, Daniele Enrico Asoni, Adrian Perrig, David Barrera, George Danezis, Carmela Troncoso
2018 J jnl
CoRR
Wouter Lueks, Brinda Hampiholi, Greg Alpár, Carmela Troncoso
2018 J jnl
CoRR
Rebekah Overdorf, Carmela Troncoso, Rachel Greenstadt, Damon McCoy
2017 A* conf
CCS
Simon Oya, Carmela Troncoso, Fernando Pérez-González
2017 J jnl
CoRR
Bogdan Kulynych, Marios Isaakidis, Carmela Troncoso, George Danezis
2017 A* conf
NDSS
Srdjan Matic, Carmela Troncoso, Juan Caballero
2017 J jnl
CoRR
Bogdan Kulynych, Carmela Troncoso
2017 Misc conf
ICASSP
Simon Oya, Fernando Pérez-González, Carmela Troncoso
2017 conf
WPES@CCS
Simon Oya, Carmela Troncoso, Fernando Pérez-González
2017 J jnl
CoRR
Simon Oya, Carmela Troncoso, Fernando Pérez-González
2017 J jnl
CoRR
Apostolos Pyrgelis, Carmela Troncoso, Emiliano De Cristofaro
2017 J jnl
CoRR
Simon Oya, Carmela Troncoso, Fernando Pérez-González
2017 J jnl
ACM Trans. Priv. Secur.
Reza Shokri, George Theodorakopoulos, Carmela Troncoso
2017 A* conf
ICDE
Oliver Kennedy, D. Richard Hipp, Stratos Idreos, Amélie Marian, Arnab Nandi, Carmela Troncoso, Eugene Wu
2017 J jnl
Proc. Priv. Enhancing Technol.
Carmela Troncoso, Marios Isaakidis, George Danezis, Harry Halpin
2017 J jnl
CoRR
Carmela Troncoso, George Danezis, Marios Isaakidis, Harry Halpin
2017 J jnl
CoRR
Apostolos Pyrgelis, Carmela Troncoso, Emiliano De Cristofaro
2017 J jnl
Proc. Priv. Enhancing Technol.
Apostolos Pyrgelis, Carmela Troncoso, Emiliano De Cristofaro
2016 J jnl
IEEE/ACM Trans. Netw.
Simon Oya, Fernando Pérez-González, Carmela Troncoso
2016 conf
WPES@CCS
Jamie Hayes, Carmela Troncoso, George Danezis
2014 J jnl
IEEE Trans. Inf. Forensics Secur.
Fernando Pérez-González, Carmela Troncoso, Simon Oya
2014 A conf
Privacy Enhancing Technologies
Simon Oya, Carmela Troncoso, Fernando Pérez-González
2014 conf
CSP Forum
Nicolás Notario, Alberto Crespo, Antonio Kung, Inga Kroener, Daniel Le Métayer, Carmela Troncoso, José M. del Álamo, Yod Samuel Martín
2014 conf
WPES
George Theodorakopoulos, Reza Shokri, Carmela Troncoso, Jean-Pierre Hubaux, Jean-Yves Le Boudec
2014 J jnl
CoRR
George Theodorakopoulos, Reza Shokri, Carmela Troncoso, Jean-Pierre Hubaux, Jean-Yves Le Boudec
2014 conf
WIFS
Simon Oya, Carmela Troncoso, Fernando Pérez-González
2013 C conf
IH&MMSec
Carmela Troncoso
2013 conf
GlobalSIP
Simon Oya, Carmela Troncoso, Fernando Pérez-González
2013 conf
WPES
Michael Herrmann, Carmela Troncoso, Claudia Díaz, Bart Preneel
2013 conf
WIFS
Marco Fontani, Enrique Argones-Rúa, Carmela Troncoso, Mauro Barni
2013 conf
WPES
George Danezis, Carmela Troncoso
2012 conf
WIFS
Fernando Pérez-González, Carmela Troncoso
2012 J jnl
Int. J. Uncertain. Fuzziness Knowl. Based Syst.
Ero Balsa, Carmela Troncoso, Claudia Díaz
2012 A* conf
IEEE Symposium on Security and Privacy
Ero Balsa, Carmela Troncoso, Claudia Díaz
2012 A* conf
CCS
Reza Shokri, George Theodorakopoulos, Carmela Troncoso, Jean-Pierre Hubaux, Jean-Yves Le Boudec
2012 A conf
Privacy Enhancing Technologies
Fernando Pérez-González, Carmela Troncoso
2011
Carmela Troncoso
2011 conf
WIFS
Juan A. Elices, Fernando Pérez-González, Carmela Troncoso
2011 J jnl
Comput. Networks
Carmela Troncoso, Enrique Costa-Montenegro, Claudia Díaz, Stefan Schiffner
2011 A* conf
USENIX Security Symposium
Prateek Mittal, Femi G. Olumofin, Carmela Troncoso, Nikita Borisov, Ian Goldberg
2011 J jnl
IEEE Trans. Dependable Secur. Comput.
Carmela Troncoso, George Danezis, Eleni Kosta, Josep Balasch, Bart Preneel
2010 A conf
Privacy Enhancing Technologies
George Danezis, Claudia Díaz, Carmela Troncoso, Ben Laurie
2010 A conf
Privacy Enhancing Technologies
Claudia Díaz, Steven J. Murdoch, Carmela Troncoso
2010 A* conf
USENIX Security Symposium
Josep Balasch, Alfredo Rial, Carmela Troncoso, Bart Preneel, Ingrid Verbauwhede, Christophe Geuens
2010 conf
HotSec
Prateek Mittal, Nikita Borisov, Carmela Troncoso, Alfredo Rial
2010 conf
WPES
Reza Shokri, Carmela Troncoso, Claudia Díaz, Julien Freudiger, Jean-Pierre Hubaux
2009 A conf
ESORICS
George Danezis, Claudia Díaz, Emilia Käsper, Carmela Troncoso
2009 A* conf
CCS
Carmela Troncoso, George Danezis
2009 A conf
Privacy Enhancing Technologies
George Danezis, Carmela Troncoso
2008 A conf
ESORICS
Claudia Díaz, Carmela Troncoso, Bart Preneel
2008 conf
StorageSS
Carmela Troncoso, Danny De Cock, Bart Preneel
2008 A conf
Privacy Enhancing Technologies
Claudia Díaz, Carmela Troncoso, Andrei Serjantov
2008 A conf
Privacy Enhancing Technologies
Carmela Troncoso, Benedikt Gierlichs, Bart Preneel, Ingrid Verbauwhede
2008 conf
WPES
Benedikt Gierlichs, Carmela Troncoso, Claudia Díaz, Bart Preneel, Ingrid Verbauwhede
2007 conf
WPES
Claudia Díaz, Carmela Troncoso, George Danezis
2007 C conf
ISC
George Danezis, Claudia Díaz, Sebastian Faust, Emilia Käsper, Carmela Troncoso, Bart Preneel
2007 conf
WPES
Carmela Troncoso, George Danezis, Eleni Kosta, Bart Preneel
2007 conf
Information Hiding
Carmela Troncoso, Claudia Díaz, Orr Dunkelman, Bart Preneel
2007 A conf
Privacy Enhancing Technologies
George Danezis, Claudia Díaz, Carmela Troncoso
redb/extractors/macho_extractors/macho_imports.py
← Index redb/extractors/macho_extractors/macho_imports.py python
import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.macho_extractor import MachOExtractor
from redb.models.dataclasses import MachOImport


class MachOImportExtractor(MachOExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        macho=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            macho,
        )
        self.elastic_index = self.index_prefix + "-macho_imports"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def tag(self):
        return Tag.MACHO_IMPORT.value

    def _extract_imports(self, arch_name=None):
        """Extract import information from the MachO binary for a specific architecture.

        Handles machofile v2026.2.4+ API where get_imported_functions() returns:
        Dict[str, List[Dict]] where each dict has {'name': str, 'sources': [str, ...]}
        """
        self.log.debug(inspect.currentframe().f_code.co_name)

        if not self.macho:
            return None

        try:
            # Get imported functions using API for specific architecture
            imported_functions = self.macho.get_imported_functions(arch=arch_name)
            if not imported_functions:
                return None

            # Keep the library→functions mapping (like PE does)
            library_names = []
            imports_with_mapping = []  # List of {library: [(name, source), ...]}

            for dylib_name, functions in imported_functions.items():
                # v2026.2.4+: dylib_name is already str, but handle bytes for compatibility
                if isinstance(dylib_name, bytes):
                    dylib_name = dylib_name.decode('utf-8', errors='replace')
                library_names.append(dylib_name)

                # Process function entries
                func_list = []
                for func_entry in functions:
                    # v2026.2.4+: func_entry is {'name': str, 'sources': [str, ...]}
                    if isinstance(func_entry, dict):
                        func_name = func_entry.get('name', '')
                        # Join sources if multiple, take first if single
                        sources = func_entry.get('sources', [])
                        import_source = sources[0] if sources else None
                        func_list.append((func_name, import_source))
                    else:
                        # Legacy format: func_entry is str or bytes
                        if isinstance(func_entry, bytes):
                            func_entry = func_entry.decode('utf-8', errors='replace')
                        func_list.append((func_entry, None))

                imports_with_mapping.append({dylib_name: func_list})

            # Count total functions
            total_functions = sum(len(list(d.values())[0]) for d in imports_with_mapping)

            # Create import dataclass with mapping preserved
            macho_import = MachOImport(
                macho_imports_total=total_functions,
                macho_import_libraryName=library_names if library_names else None,
                macho_import_functions=imports_with_mapping if imports_with_mapping else None
            )

            return macho_import

        except Exception as e:
            self.log.error(f"Error extracting MachO imports for arch {arch_name}: {e}")
            return None

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            # Get architectures (macho is already parsed in base class)
            architectures = self.macho.get_architectures()
            if len(architectures) > 1:
                # FAT binary - return list of imports for each architecture
                results = []
                for arch_name in architectures:
                    imports = self._extract_imports(arch_name)
                    if imports:
                        imports.arch_identifier = arch_name
                        results.append(imports)
                return results
            else:
                # Single architecture - return single result
                return self._extract_imports(architectures[0] if architectures else None)
        except Exception as e:
            self.log.error(f"Error extracting MachO imports: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            if not self.macho:
                return None

            # Get architectures (macho is already parsed in base class)
            try:
                architectures = self.macho.get_architectures()
                is_fat = len(architectures) > 1
            except Exception as e:
                self.log.error(f"Could not get architectures: {e}")
                return None

            # Flatten the data - one row per function import (like PE imports)
            data = []
            current_time = datetime.now(timezone.utc)

            # Loop through each architecture (1 for single, multiple for FAT)
            for arch_name in architectures:
                # Get architecture-specific sha256
                try:
                    arch_general_info = self.macho.get_general_info(arch=arch_name)
                    arch_header_raw = self.macho.get_macho_header(arch=arch_name)
                    arch_sha256 = arch_general_info.get('SHA256', self.sha256)
                    arch_cputype_raw = arch_header_raw.get('cputype', 0) if arch_header_raw else 0
                except Exception as e:
                    self.log.warning(f"Could not get arch-specific data for {arch_name}: {e}")
                    arch_sha256 = self.sha256
                    arch_cputype_raw = 0

                # Get imports for this architecture
                macho_import = self._extract_imports(arch_name)
                if not macho_import or not macho_import.macho_import_functions:
                    continue

                # Flatten to one row per (library, function) pair
                for lib_funcs in macho_import.macho_import_functions:
                    for lib, funcs in lib_funcs.items():
                        for func_name, import_source in funcs:
                            data.append([
                                arch_sha256,        # sha256 (arch-specific)
                                lib,                # library_name
                                func_name,          # function_name
                                import_source,      # import_source (chained_fixups, bind_opcodes, symtab)
                                current_time,       # analysis_date
                            ])

            column_names = [
                'sha256',
                'library_name', 'function_name', 'import_source',
                'analysis_date'
            ]

            if not data:
                return None

            column_type_names = [
                'FixedString(64)',
                'LowCardinality(String)', 'LowCardinality(String)', 'LowCardinality(Nullable(String))',
                'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

        return None

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