Karthik Nandakumar

178 papers A* 16A 3B 9C 2Misc 2Journal 91Unranked 46
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Joseph Geo Benjamin, Anil K. Jain, Karthik Nandakumar
2026 J jnl
Expert Syst. Appl.
Khawar Islam, Muhammad Zaigham Zaheer, Arif Mahmood, Karthik Nandakumar, Naveed Akhtar
2026 J jnl
CoRR
Nurbek Tastan, Stefanos Laskaridis, Karthik Nandakumar, Samuel Horvath
2026 J jnl
CoRR
Fahad Shamshad, Nils Lukas, Karthik Nandakumar
2026 J jnl
CoRR
Ashshak Sharifdeen, Fahad Shamshad, Muhammad Akhtar Munir, Abhishek Basu, Mohamed Insaf Ismithdeen, Jeyapriyan Jeyamohan, Chathurika Sewwandi Silva, Karthik Nandakumar, Muhammad Haris Khan
2026 J jnl
CoRR
Sanoojan Baliah, Yohan Abeysinghe, Rusiru Thushara, Khan Muhammad, Abhinav Dhall, Karthik Nandakumar, Muhammad Haris Khan
2025 J jnl
CoRR
Nurbek Tastan, Karthik Nandakumar
2025 A* conf
ICML
Nurbek Tastan, Samuel Horváth, Karthik Nandakumar
2025 J jnl
CoRR
Nurbek Tastan, Samuel Horváth, Karthik Nandakumar
2025 J jnl
CoRR
Nurbek Tastan, Samuel Horváth, Karthik Nandakumar
2025 J jnl
Trans. Mach. Learn. Res.
Nurbek Tastan, Samuel Horváth, Karthik Nandakumar
2025 J jnl
CoRR
Abhishek Basu, Fahad Shamshad, Ashshak Sharifdeen, Karthik Nandakumar, Muhammad Haris Khan
2025 J jnl
Int. J. Multim. Inf. Retr.
Muhammad Irzam Liaqat, Shah Nawaz, Muhammad Zaigham Zaheer, Muhammad Saad Saeed, Hassan Sajjad, Tom De Schepper, Karthik Nandakumar, Muhammad Haris Khan, Ignazio Gallo, Markus Schedl
2025 J jnl
CoRR
Numan Saeed, Shahad Hardan, Muhammad Ridzuan, Nada Saadi, Karthik Nandakumar, Mohammad Yaqub
2025 conf
MLHC
Asim Ukaye, Numan Saeed, Karthik Nandakumar
2025 J jnl
CoRR
Asim Ukaye, Numan Saeed, Karthik Nandakumar
2025 B conf
IJCB
Mohammed Talha Alam, Fahad Shamshad, Fakhri Karray, Karthik Nandakumar
2025 J jnl
CoRR
Mohammed Talha Alam, Fahad Shamshad, Fakhri Karray, Karthik Nandakumar
2025 conf
CPAL
Nurbek Tastan, Samuel Horváth, Martin Takác, Karthik Nandakumar
2025 conf
CVPR Workshops
Joseph Geo Benjamin, Mothilal Asokan, Mohammad Yaqub, Karthik Nandakumar
2025 J jnl
CoRR
Fahad Shamshad, Tameem Bakr, Yahia Shaaban, Noor Hussein, Karthik Nandakumar, Nils Lukas
2025 conf
MICCAI (3)
Shahad Hardan, Darya Taratynova, Abdelmajid Essofi, Karthik Nandakumar, Mohammad Yaqub
2025 J jnl
CoRR
Shahad Hardan, Darya Taratynova, Abdelmajid Essofi, Karthik Nandakumar, Mohammad Yaqub
2025 conf
CVPR Workshops
Khaled Waleed Dawoud, Zaigham Zaheer, Mustaqeem Khan, Karthik Nandakumar, Abdulmotaleb Elsaddik, Muhammad Haris Khan
2025 J jnl
CoRR
Nurbek Tastan, Stefanos Laskaridis, Martin Takác, Karthik Nandakumar, Samuel Horváth
2025 J jnl
CoRR
Samar Fares, Nurbek Tastan, Noor Hussein, Karthik Nandakumar
2025 J jnl
CoRR
Toluwani Aremu, Noor Hussein, Munachiso Nwadike, Samuele Poppi, Jie Zhang, Karthik Nandakumar, Neil Gong, Nils Lukas
2025 conf
MIUA (1)
Fahad Shamshad, Noor Hussein, Karthik Nandakumar
2025 J jnl
CoRR
Hashmat Shadab Malik, Fahad Shamshad, Muzammal Naseer, Karthik Nandakumar, Fahad Khan, Salman Khan
2025 J jnl
CoRR
Salem AlMarri, Muhammad Irzam Liaqat, Muhammad Zaigham Zaheer, Shah Nawaz, Karthik Nandakumar, Markus Schedl
2025 J jnl
CoRR
Samar Fares, Nurbek Tastan, Karthik Nandakumar
2025 J jnl
CoRR
Mohammed Talha Alam, Nada Saadi, Fahad Shamshad, Nils Lukas, Karthik Nandakumar, Fahkri Karray, Samuele Poppi
2025 A* conf
CVPR
Koushik Srivatsan, Fahad Shamshad, Muzammal Naseer, Vishal M. Patel, Karthik Nandakumar
2025 J jnl
CoRR
Nurbek Tastan, Samuel Horvath, Karthik Nandakumar
2025 A conf
WACV
Raza Imam, Hanan Gani, Muhammad Huzaifa, Karthik Nandakumar
2025 conf
CVPR Workshops
Hashmat Shadab Malik, Fahad Shamshad, Muzammal Naseer, Karthik Nandakumar, Fahad Shahbaz Khan, Salman Khan
2025 A* conf
EMNLP
Asif Hanif, Maha Tufail Agro, Fahad Shamshad, Karthik Nandakumar
2024 A conf
WACV
Anas Al-lahham, Nurbek Tastan, Muhammad Zaigham Zaheer, Karthik Nandakumar
2024 conf
ISIC/iMIMIC/EARTH/DeCaF@MICCAI
Mothilal Asokan, Joseph Geo Benjamin, Mohammad Yaqub, Karthik Nandakumar
2024 J jnl
CoRR
Mothilal Asokan, Joseph Geo Benjamin, Mohammad Yaqub, Karthik Nandakumar
2024 conf
WACV (Workshops)
Salem AlMarri, Muhammad Zaigham Zaheer, Karthik Nandakumar
2024 A* conf
ACM Multimedia
Muhammad Saad Saeed, Shah Nawaz, Marta Moscati, Rohan Kumar Das, Muhammad Salman Tahir, Muhammad Zaigham Zaheer, Muhammad Irzam Liaqat, Muhammad Haris Khan, Karthik Nandakumar, Muhammad Haroon Yousaf, Markus Schedl
2024 A* conf
CVPR
Samar Fares, Karthik Nandakumar
2024 conf
MICCAI (12)
Asif Hanif, Fahad Shamshad, Muhammad Awais, Muzammal Naseer, Fahad Shahbaz Khan, Karthik Nandakumar, Salman H. Khan, Rao Muhammad Anwer
2024 J jnl
CoRR
Asif Hanif, Fahad Shamshad, Muhammad Awais, Muzammal Naseer, Fahad Shahbaz Khan, Karthik Nandakumar, Salman H. Khan, Rao Muhammad Anwer
2024 J jnl
CoRR
Muhammad Irzam Liaqat, Shah Nawaz, Muhammad Zaigham Zaheer, Muhammad Saad Saeed, Hassan Sajjad, Tom De Schepper, Karthik Nandakumar, Muhammad Haris Khan, Markus Schedl
2024 A* conf
CVPR
Anas Al-lahham, Muhammad Zaigham Zaheer, Nurbek Tastan, Karthik Nandakumar
2024 J jnl
CoRR
Anas Al-lahham, Muhammad Zaigham Zaheer, Nurbek Tastan, Karthik Nandakumar
2024 J jnl
CoRR
Khawar Islam, Muhammad Zaigham Zaheer, Arif Mahmood, Karthik Nandakumar
2024 A* conf
CVPR
Khawar Islam, Muhammad Zaigham Zaheer, Arif Mahmood, Karthik Nandakumar
2024 A* conf
IJCAI
Nikita Kotelevskii, Samuel Horváth, Karthik Nandakumar, Martin Takác, Maxim Panov
2024 J jnl
CoRR
Muhammad Saad Saeed, Shah Nawaz, Muhammad Salman Tahir, Rohan Kumar Das, Muhammad Zaigham Zaheer, Marta Moscati, Markus Schedl, Muhammad Haris Khan, Karthik Nandakumar, Muhammad Haroon Yousaf
2024 A* conf
ICDM
Mubarak G. Abdu-Aguye, Muhammad Zaigham Zaheer, Karthik Nandakumar
2024 J jnl
CoRR
Nurbek Tastan, Samuel Horváth, Martin Takác, Karthik Nandakumar
2024 J jnl
CoRR
Joseph Geo Benjamin, Mothilal Asokan, Mohammad Yaqub, Karthik Nandakumar
2024 J jnl
CoRR
Khawar Islam, Muhammad Zaigham Zaheer, Arif Mahmood, Karthik Nandakumar, Naveed Akhtar
2024 conf
BMVC Workshops
Mohammed Talha Alam, Raza Imam, Mohammad Areeb Qazi, Asim Ukaye, Karthik Nandakumar
2024 J jnl
CoRR
Mohammed Talha Alam, Raza Imam, Mohammad Areeb Qazi, Asim Ukaye, Karthik Nandakumar
2024 J jnl
CoRR
Joseph Geo Benjamin, Mothilal Asokan, Amna Alhosani, Hussain Alasmawi, Werner Gerhard Diehl, Leanne Bricker, Karthik Nandakumar, Mohammad Yaqub
2024 conf
ECCV Workshops (22)
Fahad Shamshad, Muzammal Naseer, Karthik Nandakumar
2024 J jnl
CoRR
Fahad Shamshad, Muzammal Naseer, Karthik Nandakumar
2024 J jnl
CoRR
Samar Fares, Klea Ziu, Toluwani Aremu, Nikita Durasov, Martin Takác, Pascal Fua, Karthik Nandakumar, Ivan Laptev
2024 J jnl
CoRR
Muhammad Saad Saeed, Shah Nawaz, Muhammad Zaigham Zaheer, Muhammad Haris Khan, Karthik Nandakumar, Muhammad Haroon Yousaf, Hassan Sajjad, Tom De Schepper, Markus Schedl
2024 B conf
ICIP
Hanan Gani, Nada Saadi, Noor Hussein, Karthik Nandakumar
2024 J jnl
CoRR
Hanan Gani, Nada Saadi, Noor Hussein, Karthik Nandakumar
2024 conf
MICCAI (12)
Nada Saadi, Numan Saeed, Mohammad Yaqub, Karthik Nandakumar
2024 J jnl
CoRR
Nada Saadi, Numan Saeed, Mohammad Yaqub, Karthik Nandakumar
2024 conf
ISIC/iMIMIC/EARTH/DeCaF@MICCAI
Naif Alkhunaizi, Faris Almalik, Rouqaiah Al-Refai, Muzammal Naseer, Karthik Nandakumar
2024 J jnl
CoRR
Naif Alkhunaizi, Faris Almalik, Rouqaiah Al-Refai, Muzammal Naseer, Karthik Nandakumar
2024 conf
MICCAI (12)
Noor Hussein, Fahad Shamshad, Muzammal Naseer, Karthik Nandakumar
2024 J jnl
CoRR
Noor Hussein, Fahad Shamshad, Muzammal Naseer, Karthik Nandakumar
2024 A* conf
IJCAI
Nurbek Tastan, Samar Fares, Toluwani Aremu, Samuel Horváth, Karthik Nandakumar
2024 J jnl
CoRR
Nurbek Tastan, Samar Fares, Toluwani Aremu, Samuel Horváth, Karthik Nandakumar
2024 J jnl
CoRR
Koushik Srivatsan, Fahad Shamshad, Muzammal Naseer, Karthik Nandakumar
2024 conf
CaPTion@MICCAI
Muhammad Ridzuan, Numan Saeed, Fadillah Adamsyah Maani, Karthik Nandakumar, Mohammad Yaqub
2024 J jnl
CoRR
Muhammad Ridzuan, Numan Saeed, Fadillah Adamsyah Maani, Karthik Nandakumar, Mohammad Yaqub
2024 conf
MICCAI (5)
Numan Saeed, Muhammad Ridzuan, Fadillah Adamsyah Maani, Hussain Alasmawi, Karthik Nandakumar, Mohammad Yaqub
2024 J jnl
CoRR
Numan Saeed, Muhammad Ridzuan, Fadillah Adamsyah Maani, Hussain Alasmawi, Karthik Nandakumar, Mohammad Yaqub
2024 J jnl
CoRR
Raza Imam, Hanan Gani, Muhammad Huzaifa, Karthik Nandakumar
2024 J jnl
CoRR
Hashmat Shadab Malik, Fahad Shamshad, Muzammal Naseer, Karthik Nandakumar, Fahad Shahbaz Khan, Salman H. Khan
2023 J jnl
CoRR
Anas Al-lahham, Nurbek Tastan, Muhammad Zaigham Zaheer, Karthik Nandakumar
2023 conf
WACV (Workshops)
Rouqaiah Al-Refai, Karthik Nandakumar
2023 A* conf
NeurIPS
Nazarii Tupitsa, Abdulla Jasem Almansoori, Yanlin Wu, Martin Takác, Karthik Nandakumar, Samuel Horváth, Eduard Gorbunov
2023 J jnl
CoRR
Nazarii Tupitsa, Abdulla Jasem Almansoori, Yanlin Wu, Martin Takác, Karthik Nandakumar, Samuel Horváth, Eduard Gorbunov
2023 A* conf
CVPR
Fahad Shamshad, Muzammal Naseer, Karthik Nandakumar
2023 J jnl
CoRR
Fahad Shamshad, Muzammal Naseer, Karthik Nandakumar
2023 A* conf
CVPR
Nurbek Tastan, Karthik Nandakumar
2023 A* conf
ACM Multimedia
Vu Ngoc Tu, Van Thong Huynh, Hyung-Jeong Yang, Soo-Hyung Kim, Shah Nawaz, Karthik Nandakumar, Muhammad Zaigham Zaheer
2023 J jnl
CoRR
Vu Ngoc Tu, Van Thong Huynh, Hyung-Jeong Yang, Muhammad Zaigham Zaheer, Shah Nawaz, Karthik Nandakumar, Soo-Hyung Kim
2023 J jnl
CoRR
Nikita Kotelevskii, Samuel Horváth, Karthik Nandakumar, Martin Takác, Maxim Panov
2023 A* conf
CVPR
Fahad Shamshad, Koushik Srivatsan, Karthik Nandakumar
2023 J jnl
CoRR
Fahad Shamshad, Koushik Srivatsan, Karthik Nandakumar
2023 A* conf
ICCV
Koushik Srivatsan, Muzammal Naseer, Karthik Nandakumar
2023 J jnl
CoRR
Koushik Srivatsan, Muzammal Naseer, Karthik Nandakumar
2023 conf
MICCAI (2)
Faris Almalik, Naif Alkhunaizi, Ibrahim Almakky, Karthik Nandakumar
2023 J jnl
CoRR
Faris Almalik, Naif Alkhunaizi, Ibrahim Almakky, Karthik Nandakumar
2023 B conf
IJCB
Naif Alkhunaizi, Koushik Srivatsan, Faris Almalik, Ibrahim Almakky, Karthik Nandakumar
2023 J jnl
CoRR
Naif Alkhunaizi, Koushik Srivatsan, Faris Almalik, Ibrahim Almakky, Karthik Nandakumar
2023 conf
ASMUS@MICCAI
Joseph Geo Benjamin, Mothilal Asokan, Amna Alhosani, Hussain Alasmawi, Werner Gerhard Diehl, Leanne Bricker, Karthik Nandakumar, Mohammad Yaqub
2023 conf
CVPR Workshops
Shikhar Srivastava, Mohammad Yaqub, Karthik Nandakumar
2023 B conf
IJCB
Maryam Nadeem, Karthik Nandakumar
2023 conf
GeoPrivacy@SIGSPATIAL
Mubarak G. Abdu-Aguye, Karthik Nandakumar
2023 conf
SaTML
Toluwani Aremu, Karthik Nandakumar
2023 conf
EUSIPCO
Mubarak G. Abdu-Aguye, Karthik Nandakumar
2023 Misc conf
ICASSP
Muhammad Saad Saeed, Shah Nawaz, Muhammad Haris Khan, Muhammad Zaigham Zaheer, Karthik Nandakumar, Muhammad Haroon Yousaf, Arif Mahmood
2023 J jnl
CoRR
Muhammad Saad Saeed, Shah Nawaz, Muhammad Haris Khan, Muhammad Zaigham Zaheer, Karthik Nandakumar, Muhammad Haroon Yousaf, Arif Mahmood
2023 Misc conf
ICASSP
Gokul Karthik Kumar, Praveen S. V, Pratyush Kumar, Mitesh M. Khapra, Karthik Nandakumar
2022 J jnl
CoRR
Gokul Karthik Kumar, Karthik Nandakumar
2022 J jnl
IEEE Trans. Dependable Secur. Comput.
Lingjuan Lyu, Yitong Li, Karthik Nandakumar, Jiangshan Yu, Xingjun Ma
2022 J jnl
CoRR
Akash Godbole, Karthik Nandakumar, Anil K. Jain
2022 J jnl
CoRR
Gokul Karthik Kumar, Abhishek Singh Gehlot, Sahal Shaji Mullappilly, Karthik Nandakumar
2022 B conf
IJCB
Akash Godbole, Steven A. Grosz, Karthik Nandakumar, Anil K. Jain
2022 J jnl
CoRR
Akash Godbole, Steven A. Grosz, Karthik Nandakumar, Anil K. Jain
2022 A conf
BMVC
Otabek Nazarov, Mohammad Yaqub, Karthik Nandakumar
2022 J jnl
CoRR
Otabek Nazarov, Mohammad Yaqub, Karthik Nandakumar
2022 conf
COMAD/CODS
Nayna Jain, Karthik Nandakumar, Nalini K. Ratha, Sharath Pankanti, Uttam Kumar
2022 conf
MICCAI (3)
Faris Almalik, Mohammad Yaqub, Karthik Nandakumar
2022 J jnl
CoRR
Faris Almalik, Mohammad Yaqub, Karthik Nandakumar
2022 J jnl
CoRR
Sayed Hashim, Karthik Nandakumar, Mohammad Yaqub
2022 J jnl
CoRR
Sayed Hashim, Muhammad Ali, Karthik Nandakumar, Mohammad Yaqub
2022 conf
MICCAI (8)
Naif Alkhunaizi, Dmitry Kamzolov, Martin Takác, Karthik Nandakumar
2022 J jnl
CoRR
Naif Alkhunaizi, Dmitry Kamzolov, Martin Takác, Karthik Nandakumar
2022 J jnl
CoRR
Gokul Karthik Kumar, Praveen S. V, Pratyush Kumar, Mitesh M. Khapra, Karthik Nandakumar
2021 conf
DART/FAIR@MICCAI
Shikhar Srivastava, Mohammad Yaqub, Karthik Nandakumar, Zongyuan Ge, Dwarikanath Mahapatra
2021 conf
AIMLSystems
Nayna Jain, Karthik Nandakumar, Nalini K. Ratha, Sharath Pankanti, Uttam Kumar
2021 J jnl
CoRR
Cuicui Kang, Karthik Nandakumar
2021 J jnl
CoRR
Cuicui Kang, Karthik Nandakumar
2021 J jnl
CoRR
Nayna Jain, Karthik Nandakumar, Nalini K. Ratha, Sharath Pankanti, Uttam Kumar
2021 J jnl
CoRR
Kanthi K. Sarpatwar, Karthik Nandakumar, Nalini K. Ratha, James T. Rayfield, Karthikeyan Shanmugam, Sharath Pankanti, Roman Vaculín
2021 C conf
MMSP
Nayna Jain, Karthik Nandakumar, Nalini K. Ratha, Sharath Pankanti, Uttam Kumar
2020 J jnl
Computer
Karthik Nandakumar, Nalini K. Ratha, Sharath Pankanti, Alex Pentland, Maurice Herlihy
2020 B conf
ICPR
Osama Ouda, Karthik Nandakumar, Arun Ross
2020 conf
Financial Cryptography
Shengjiao Cao, Yuan Yuan, Angelo De Caro, Karthik Nandakumar, Kaoutar Elkhiyaoui, Yanyan Hu
2020 J jnl
CoRR
Lingjuan Lyu, Yitong Li, Karthik Nandakumar, Jiangshan Yu, Xingjun Ma
2020 conf
CVPR Workshops
Kanthi K. Sarpatwar, Nalini K. Ratha, Karthik Nandakumar, Karthikeyan Shanmugam, James T. Rayfield, Sharath Pankanti, Roman Vaculín
2020 J jnl
IEEE Trans. Parallel Distributed Syst.
Lingjuan Lyu, Jiangshan Yu, Karthik Nandakumar, Yitong Li, Xingjun Ma, Jiong Jin, Han Yu, Kee Siong Ng
2019 J jnl
CoRR
Karthik Nandakumar, Sebastien Blandin, Laura Wynter
2019 C conf
IH&MMSec
Karthik Nandakumar, Nalini K. Ratha, Sharathchandra Pankanti
2019 conf
CVPR Workshops
Karthik Nandakumar, Nalini K. Ratha, Sharath Pankanti, Shai Halevi
2019 J jnl
CoRR
Lingjuan Lyu, Jiangshan Yu, Karthik Nandakumar, Yitong Li, Xingjun Ma, Jiong Jin
2018 B conf
IC2E
Kumar Bhaskaran, Peter Ilfrich, Dain Liffman, Christian Vecchiola, Praveen Jayachandran, Apurva Kumar, Fabian Lim, Karthik Nandakumar, Zhengquan Qin, Venkatraman Ramakrishna, Ernie G. S. Teo, Chun Hui Suen
2018 J jnl
IEEE Trans. Ind. Informatics
Lingjuan Lyu, Karthik Nandakumar, Benjamin I. P. Rubinstein, Jiong Jin, Justin Bedo, Marimuthu Palaniswami
2017 conf
WIFS
Karthik Nandakumar, Nalini K. Ratha, Sharath Pankanti, Shelby Darnell
2016 J jnl
Pattern Recognit. Lett.
Anil K. Jain, Karthik Nandakumar, Arun Ross
2015 ch.
Encyclopedia of Biometrics
Anil K. Jain, Karthik Nandakumar
2015 J jnl
IEEE Signal Process. Mag.
Karthik Nandakumar, Anil K. Jain
2015 ch.
Encyclopedia of Biometrics
Arun Ross, Karthik Nandakumar
2015 J jnl
IEEE Trans. Image Process.
Seyedehsamaneh Shojaeilangari, Wei-Yun Yau, Karthik Nandakumar, Jun Li, Eam Khwang Teoh
2015 ch.
Encyclopedia of Biometrics
Karthik Nandakumar
2015 ch.
Encyclopedia of Biometrics
Karthik Nandakumar, Anil K. Jain
2013 B conf
ICMI
Karthik Nandakumar, Kong-Wah Wan, Siu Man Alice Chan, Wen Zheng Terence Ng, Jian-Gang Wang, Wei-Yun Yau
2013 conf
ICB
Karthik Nandakumar
2013 conf
CIBIM
Seyed Mohammad Hassan Anvar, Wei-Yun Yau, Karthik Nandakumar, Eam Khwang Teoh
2013 ch.
Security and Privacy in Biometrics
Anil K. Jain, Karthik Nandakumar, Abhishek Nagar
2012 J jnl
Computer
Anil K. Jain, Karthik Nandakumar
2012 conf
ICB
Karthik Nandakumar
2012 J jnl
IEEE Trans. Inf. Forensics Secur.
Abhishek Nagar, Karthik Nandakumar, Anil K. Jain
2010 conf
WIFS
Karthik Nandakumar
2010 J jnl
Pattern Recognit. Lett.
Abhishek Nagar, Karthik Nandakumar, Anil K. Jain
2010 conf
Media Forensics and Security
Abhishek Nagar, Karthik Nandakumar, Anil K. Jain
2010 J jnl
Computer
Anil K. Jain, Jianjiang Feng, Karthik Nandakumar
2009 conf
ICB
Karthik Nandakumar, Anil K. Jain, Arun Ross
2009 ch.
Encyclopedia of Biometrics
Arun Ross, Karthik Nandakumar
2009 ch.
Encyclopedia of Biometrics
Karthik Nandakumar
2009 ch.
Encyclopedia of Biometrics
Karthik Nandakumar, Anil K. Jain
2008 J jnl
EURASIP J. Adv. Signal Process.
Anil K. Jain, Karthik Nandakumar, Abhishek Nagar
2008 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Karthik Nandakumar, Yi Chen, Sarat C. Dass, Anil K. Jain
2008 conf
CVPR Workshops
Anil K. Jain, Jianjiang Feng, Abhishek Nagar, Karthik Nandakumar
2008 B conf
ICPR
Abhishek Nagar, Karthik Nandakumar, Anil K. Jain
2007 J jnl
IEEE Trans. Inf. Forensics Secur.
Karthik Nandakumar, Anil K. Jain, Sharath Pankanti
2007 conf
ICB
Karthik Nandakumar, Abhishek Nagar, Anil K. Jain
2006 book
Handbook of Multibiometrics.
Arun Ross, Karthik Nandakumar, Anil K. Jain
2006 conf
ICPR (4)
Karthik Nandakumar, Yi Chen, Anil K. Jain, Sarat C. Dass
2005 conf
AVBPA
Sarat C. Dass, Karthik Nandakumar, Anil K. Jain
2005 J jnl
Pattern Recognit.
Anil K. Jain, Karthik Nandakumar, Arun Ross
2004 conf
ECCV Workshop BioAW
Anil K. Jain, Karthik Nandakumar, Xiaoguang Lu, Unsang Park
2004 conf
ICVGIP
Karthik Nandakumar, Anil K. Jain
2004 conf
ICBA
Anil K. Jain, Sarat C. Dass, Karthik Nandakumar
redb/extractors/js_extractors/js_xray.py
← Index redb/extractors/js_extractors/js_xray.py python
"""Subprocess wrapper for the bundled js-x-ray Node bridge.

Mirrors `js_deobfuscator.py`: shell out to a Node script with a per-sample
timeout, kill the process group on hang, demote `FileNotFoundError` to debug
(missing tool is routine — the host either has Node + the bundled package
installed or it doesn't), and return a structured result on success.

The bridge lives at `redb/extractors/js_extractors/scripts/js-xray-runner.js`.
Operators install the JS dependency once with `npm install` in that directory
(or override the path with `JS_XRAY_RUNNER_PATH`).

Configuration (env vars):
    JS_XRAY_RUNNER_PATH   Path to the Node bridge script (default: bundled).
    JS_XRAY_TIMEOUT       Seconds before the subprocess is killed. Default: 30.

`run(source, log)` returns `XRayResult(obfuscator, warnings)` on a successful
analysis, or `XRayResult(None, [])` for any non-success path (binary missing,
timeout, parse failure, etc.). The two unsuccessful states are
indistinguishable to the caller on purpose — they all collapse to "no
js-x-ray verdict, fall back to heuristic".
"""

from __future__ import annotations

import json
import os
import signal
import subprocess
import tempfile
from dataclasses import dataclass, field
from typing import List, Optional

# Bundled bridge: redb/extractors/js_extractors/scripts/js-xray-runner.js
_DEFAULT_RUNNER = os.path.join(
    os.path.dirname(__file__), "scripts", "js-xray-runner.js"
)
_DEFAULT_NODE = "node"
_DEFAULT_TIMEOUT_SECS = 30


@dataclass
class XRayResult:
    """Parsed js-x-ray output. `obfuscator` is the recognised family name
    (e.g. "jsfuck", "obfuscator.io") or None when js-x-ray did not flag the
    code. `warnings` carries every {kind, value} pair the analyser produced;
    the heuristic uses it as a corroborating signal. `avg_identifier_length`
    is js-x-ray's own AST-derived figure — used as a fallback for the
    heuristic's `avg_identifier_length<2` strong signal when pyjsparser
    can't parse the source (anything ES2015+ trips it)."""

    obfuscator: Optional[str] = None
    warnings: List[dict] = field(default_factory=list)
    avg_identifier_length: Optional[float] = None

    @property
    def flagged(self) -> bool:
        return self.obfuscator is not None


def _empty() -> XRayResult:
    return XRayResult(obfuscator=None, warnings=[])


def run(source: str, log) -> XRayResult:
    if not source:
        return _empty()

    runner = os.getenv("JS_XRAY_RUNNER_PATH", _DEFAULT_RUNNER)
    node_bin = os.getenv("JS_XRAY_NODE_BIN", _DEFAULT_NODE)
    timeout = int(os.getenv("JS_XRAY_TIMEOUT", str(_DEFAULT_TIMEOUT_SECS)))

    if not os.path.exists(runner):
        log.debug(f"js-x-ray runner not found at {runner}")
        return _empty()

    # Skip the subprocess entirely when the JS dependency isn't installed.
    # Without this, every call to a host that has `node` but never ran
    # `npm install` next to the runner would still fork node, get a require
    # error, and exit nonzero — wasted ~50–200ms per JS sample (and per test).
    runner_dir = os.path.dirname(runner)
    if not os.path.isdir(os.path.join(runner_dir, "node_modules", "@nodesecure", "js-x-ray")):
        log.debug(f"@nodesecure/js-x-ray not installed in {runner_dir}")
        return _empty()

    tmp_path = None
    try:
        with tempfile.NamedTemporaryFile(
            suffix=".js", mode="w", delete=False, encoding="utf-8"
        ) as tmp:
            tmp.write(source)
            tmp_path = tmp.name

        try:
            process = subprocess.Popen(
                [node_bin, runner, tmp_path],
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
                preexec_fn=os.setsid,
            )
            try:
                stdout, stderr = process.communicate(timeout=timeout)
            except subprocess.TimeoutExpired:
                # Kill the whole process group so any node helpers die too.
                try:
                    os.killpg(os.getpgid(process.pid), signal.SIGTERM)
                    process.wait(timeout=5)
                except Exception:
                    try:
                        os.killpg(os.getpgid(process.pid), signal.SIGKILL)
                    except Exception:
                        pass
                log.warning(f"js-x-ray timed out after {timeout}s")
                return _empty()

            if process.returncode != 0:
                err = stderr.decode("utf-8", errors="replace").strip()
                log.debug(f"js-x-ray exited {process.returncode}: {err}")
                return _empty()

            text = stdout.decode("utf-8", errors="replace").strip()
            if not text:
                return _empty()

            try:
                payload = json.loads(text)
            except json.JSONDecodeError as e:
                log.warning(f"js-x-ray emitted non-JSON output: {e}")
                return _empty()

            obfuscator = payload.get("obfuscator")
            warnings = payload.get("warnings") or []
            if not isinstance(warnings, list):
                warnings = []

            ids_avg = payload.get("idsLengthAvg")
            if not isinstance(ids_avg, (int, float)):
                ids_avg = None

            return XRayResult(
                obfuscator=obfuscator,
                warnings=warnings,
                avg_identifier_length=ids_avg,
            )
        finally:
            if tmp_path:
                try:
                    os.unlink(tmp_path)
                except Exception:
                    pass
    except FileNotFoundError:
        log.debug(f"node binary not found at {node_bin}")
        return _empty()
    except Exception as e:
        log.error(f"js-x-ray subprocess error: {e}")
        return _empty()