{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/llmmap-fingerprinting-for-large-language","title":"LLMmap: Fingerprinting For Large Language Models","arxiv_id":"2407.15847","date":"2024-07-22","proceeding":null,"authors":["Dario Pasquini","Evgenios M. Kornaropoulos","Giuseppe Ateniese"],"abstract":"We introduce LLMmap, a first-generation fingerprinting technique targeted at LLM-integrated applications. LLMmap employs an active fingerprinting approach, sending carefully crafted queries to the application and analyzing the responses to identify the specific LLM version in use. Our query selection is informed by domain expertise on how LLMs generate uniquely identifiable responses to thematically varied prompts. With as few as 8 interactions, LLMmap can accurately identify 42 different LLM versions with over 95% accuracy. More importantly, LLMmap is designed to be robust across different application layers, allowing it to identify LLM versions--whether open-source or proprietary--from various vendors, operating under various unknown system prompts, stochastic sampling hyperparameters, and even complex generation frameworks such as RAG or Chain-of-Thought. We discuss potential mitigations and demonstrate that, against resourceful adversaries, effective countermeasures may be challenging or even unrealizable.","url_abs":"https://arxiv.org/abs/2407.15847v4","url_pdf":"https://arxiv.org/pdf/2407.15847v4.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"llmmap-fingerprinting-for-large-language","repo_url":"https://github.com/pasquini-dario/LLMmap","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"rag","task_name":"RAG"}],"methods":[{"method_slug":"adam","method_name":"Adam"},{"method_slug":"attention","method_name":"Attention"},{"method_slug":"attention-dropout","method_name":"Attention Dropout"},{"method_slug":"bart","method_name":"BART"},{"method_slug":"bert","method_name":"BERT"},{"method_slug":"bpe","method_name":"BPE"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"linear-warmup-with-linear-decay","method_name":"Linear Warmup With Linear Decay"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"rag","method_name":"RAG"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"weight-decay","method_name":"Weight Decay"},{"method_slug":"wordpiece","method_name":"WordPiece"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2407.15847","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2407.15847"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/pasquini-dario/LLMmap","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":9,"unverified":7},"by_repo_kind":{"official":{"samples":16,"ran":9,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"4d3e058045786b53","entry":"build_templates","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/templates.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/templates.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4d3e058045786b53"}},{"code_sha256_prefix":"47203ac597d1cdaa","entry":"euclidean_distance","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/inference_model_archs.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/inference_model_archs.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"47203ac597d1cdaa"}},{"code_sha256_prefix":"82f8654112f827f6","entry":"get_activation","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/inference_model_archs.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/inference_model_archs.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"82f8654112f827f6"}},{"code_sha256_prefix":"63abcdbc162b0dc0","entry":"predict_by_templates","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/templates.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/templates.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"63abcdbc162b0dc0"}},{"code_sha256_prefix":"145223e448267f7f","entry":"read_conf_file","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/utility.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/utility.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"145223e448267f7f"}},{"code_sha256_prefix":"6e7bb2069a548786","entry":"read_dataset","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/input_pipeline.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/input_pipeline.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6e7bb2069a548786"}},{"code_sha256_prefix":"c7497cceeb28ffef","entry":"read_pickle","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/utility.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/utility.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c7497cceeb28ffef"}},{"code_sha256_prefix":"adc09759f8d65697","entry":"read_templates","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/inference.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/inference.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"adc09759f8d65697"}},{"code_sha256_prefix":"b448e7d58494a339","entry":"sample_from_multi_universe","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/prompt_configuration.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/prompt_configuration.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b448e7d58494a339"}},{"code_sha256_prefix":"a5c7254402cb328d","entry":"infer_features","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/templates.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/templates.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a5c7254402cb328d"}},{"code_sha256_prefix":"a0c4036c783edf32","entry":"load_LLMmap","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/inference.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/inference.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a0c4036c783edf32"}},{"code_sha256_prefix":"fe509b80ffd62e01","entry":"load_datasets","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/dataset.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/dataset.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fe509b80ffd62e01"}},{"code_sha256_prefix":"9ee90e0c985481bb","entry":"load_model","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/embedding_model.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/embedding_model.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9ee90e0c985481bb"}},{"code_sha256_prefix":"9cb6cf3f23bddfa5","entry":"make_norm","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/inference_model_archs.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/inference_model_archs.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9cb6cf3f23bddfa5"}},{"code_sha256_prefix":"5c38d3eecf731383","entry":"read_dataset","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/dataset_maker.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/dataset_maker.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5c38d3eecf731383"}},{"code_sha256_prefix":"3ce9e1b27efcd170","entry":"train_model","repo":"pasquini-dario/LLMmap","repo_kind":"official","path":"LLMmap/trainer.py","file_url":"https://github.com/pasquini-dario/LLMmap/blob/HEAD/LLMmap/trainer.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3ce9e1b27efcd170"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}