<?xml version="1.0" encoding="UTF-8" ?><feed xmlns="http://www.w3.org/2005/Atom">
    <title>Babgond</title>
    <subtitle>Babgond</subtitle>
    <id>https://babgond.com/moonmoonIT_v9/</id>
    <link rel="self" type="application/atom+xml" href="https://babgond.com/moonmoonIT_v9/atom.php" />
    <link rel="alternate" type="text/html" href="https://babgond.com/moonmoonIT_v9/" />
    <updated>2026-08-24T00:57:51Z</updated>
    <author><name>Babgond</name></author>


    <entry>
        <title type="html">DerFlounder : Using the Jamf Pro API to retrieve Recovery Lock passwords</title>
        <id>https://derflounder.wordpress.com/2026/08/23/using-the-jamf-pro-api-to-retrieve-recovery-lock-passwords/</id>
        <link rel="alternate" href="https://derflounder.wordpress.com/2026/08/23/using-the-jamf-pro-api-to-retrieve-recovery-lock-passwords/"/>
        <published>2026-08-23T22:14:54+00:00</published>
        <updated>2026-08-23T22:14:54+00:00</updated>
        <author><name>rtrouton</name></author>

        <content type="html"><![CDATA[<div><p>A while back, <a href="https://derflounder.wordpress.com/2023/01/25/using-the-jamf-pro-api-to-retrieve-filevault-personal-recovery-keys/">I wrote a script which uses Jamf Pro’s Classic and Jamf Pro API to retrieve FileVault recovery keys</a>. As part of assisting with a recent issue, I decided to develop a similar one for retrieving <a href="https://support.apple.com/guide/deployment/startup-security-dep5810e849c/web">Recovery Lock passwords</a> (these are alternatively referred to in Apple’s documentation as <strong>recoveryOS passwords</strong>.) The resulting script uses the Jamf Pro API to take a list of Jamf Pro computer IDs from a plaintext file, retrieve the associated Macs’ Recovery Lock passwords (if one is set) and generate a report in <a href="https://en.wikipedia.org/wiki/Tab-separated_values">TSV format</a>.</p>
<p>For more details, please see below the jump.</p>
<p><span id="more-13479"></span></p>
<p><span style="text-decoration: underline"><strong>Pre-requisites:</strong></span></p>
<p>If setting up an API client for this purpose with limited rights, here are the required API Role privileges for the API client on the Jamf Pro server:</p>
<ul>
<li><strong>Read Computers</strong></li>
<li><strong>View Recovery Lock</strong></li>
</ul>
<p>For authentication, the script can accept manual input or values stored in a <strong>~/Library/Preferences/com.github.jamfpro-info.plist</strong> file.</p>
<p>The plist file can be created by running the following commands and substituting your own values where appropriate:</p>
<p>To store the Jamf Pro URL in the plist file:</p>
<style>.gist table { margin-bottom: 0; }</style>
<div style="tab-size: 8" id="gist120496125" class="gist">
<div class="gist-file" translate="no" data-color-mode="light" data-light-theme="light">
<div class="gist-data">
<div class="js-gist-file-update-container js-task-list-container">
<div id="file-gistfile1-txt" class="file my-2">
<div itemprop="text" class="Box-body p-0 blob-wrapper data type-text  " style="overflow: auto" tabindex="0" role="region" aria-label="gistfile1.txt content, created by rtrouton on 09:06PM on January 25, 2023.">
<div class="js-check-hidden-unicode js-blob-code-container blob-code-content">
<p>  <template class="js-file-alert-template"></template></p>
<div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center">
  <svg aria-hidden="true" data-component="Octicon" height="16" viewbox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg><br>
    <span><br>
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br>
      <a class="Link--inTextBlock" href="https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a><br>
    </span>
<div data-view-component="true" class="flash-action">        <a href="https://derflounder.wordpress.com/2026/08/23/using-the-jamf-pro-api-to-retrieve-recovery-lock-passwords/%7B%7B%20revealButtonHref%20%7D%7D" data-view-component="true" class="btn-sm btn">    Show hidden characters<br>
</a>
</div>
</div>
<p><br>
<template class="js-line-alert-template"><br>
  <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"><br>
    <svg aria-hidden="true" data-component="Octicon" height="16" viewbox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg><br>
</span></template></p>
<table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="gistfile1.txt">
<tr>
<td id="file-gistfile1-txt-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td>
<td id="file-gistfile1-txt-LC1" class="blob-code blob-code-inner js-file-line">defaults write com.github.jamfpro-info jamfpro_url <a href="https://jamf.pro.server.goes.here/">https://jamf.pro.server.goes.here:port_number_goes_here</a></td>
</tr>
</table>
</div></div>
</div>
</div></div>
<div class="gist-meta">
        <a href="https://gist.github.com/rtrouton/aef7088969297b4c788caa2b009c4a4d/raw/6e7f9d3c0f766a41e9d9b6eade016291a498c7b2/gistfile1.txt" style="float:right" class="Link--inTextBlock">view raw</a><br>
        <a href="https://gist.github.com/rtrouton/aef7088969297b4c788caa2b009c4a4d#file-gistfile1-txt" class="Link--inTextBlock"><br>
          gistfile1.txt<br>
        </a><br>
        hosted with ❤ by <a class="Link--inTextBlock" href="https://github.com/">GitHub</a>
      </div>
</div>
</div>
<p>To store the API Client ID in the plist file:</p>
<style>.gist table { margin-bottom: 0; }</style>
<div style="tab-size: 8" id="gist152880042" class="gist">
<div class="gist-file" translate="no" data-color-mode="light" data-light-theme="light">
<div class="gist-data">
<div class="js-gist-file-update-container js-task-list-container">
<div id="file-gistfile1-txt" class="file my-2">
<div itemprop="text" class="Box-body p-0 blob-wrapper data type-text  " style="overflow: auto" tabindex="0" role="region" aria-label="gistfile1.txt content, created by rtrouton on 08:01PM today.">
<div class="js-check-hidden-unicode js-blob-code-container blob-code-content">
<p>  <template class="js-file-alert-template"></template></p>
<div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center">
  <svg aria-hidden="true" data-component="Octicon" height="16" viewbox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg><br>
    <span><br>
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br>
      <a class="Link--inTextBlock" href="https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a><br>
    </span>
<div data-view-component="true" class="flash-action">        <a href="https://derflounder.wordpress.com/2026/08/23/using-the-jamf-pro-api-to-retrieve-recovery-lock-passwords/%7B%7B%20revealButtonHref%20%7D%7D" data-view-component="true" class="btn-sm btn">    Show hidden characters<br>
</a>
</div>
</div>
<p><br>
<template class="js-line-alert-template"><br>
  <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"><br>
    <svg aria-hidden="true" data-component="Octicon" height="16" viewbox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg><br>
</span></template></p>
<table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="gistfile1.txt">
<tr>
<td id="file-gistfile1-txt-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td>
<td id="file-gistfile1-txt-LC1" class="blob-code blob-code-inner js-file-line">defaults write com.github.jamfpro-info jamfpro_api_client_id api_client_id_information_goes_here</td>
</tr>
</table>
</div></div>
</div>
</div></div>
<div class="gist-meta">
        <a href="https://gist.github.com/rtrouton/77a8e5d6ad182d7395a4e44f49b41459/raw/351f942cac39582eb3db541c7932abd860fe336f/gistfile1.txt" style="float:right" class="Link--inTextBlock">view raw</a><br>
        <a href="https://gist.github.com/rtrouton/77a8e5d6ad182d7395a4e44f49b41459#file-gistfile1-txt" class="Link--inTextBlock"><br>
          gistfile1.txt<br>
        </a><br>
        hosted with ❤ by <a class="Link--inTextBlock" href="https://github.com/">GitHub</a>
      </div>
</div>
</div>
<p>To store the API Client Secret in the plist file:</p>
<style>.gist table { margin-bottom: 0; }</style>
<div style="tab-size: 8" id="gist152880050" class="gist">
<div class="gist-file" translate="no" data-color-mode="light" data-light-theme="light">
<div class="gist-data">
<div class="js-gist-file-update-container js-task-list-container">
<div id="file-gistfile1-txt" class="file my-2">
<div itemprop="text" class="Box-body p-0 blob-wrapper data type-text  " style="overflow: auto" tabindex="0" role="region" aria-label="gistfile1.txt content, created by rtrouton on 08:01PM today.">
<div class="js-check-hidden-unicode js-blob-code-container blob-code-content">
<p>  <template class="js-file-alert-template"></template></p>
<div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center">
  <svg aria-hidden="true" data-component="Octicon" height="16" viewbox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg><br>
    <span><br>
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br>
      <a class="Link--inTextBlock" href="https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a><br>
    </span>
<div data-view-component="true" class="flash-action">        <a href="https://derflounder.wordpress.com/2026/08/23/using-the-jamf-pro-api-to-retrieve-recovery-lock-passwords/%7B%7B%20revealButtonHref%20%7D%7D" data-view-component="true" class="btn-sm btn">    Show hidden characters<br>
</a>
</div>
</div>
<p><br>
<template class="js-line-alert-template"><br>
  <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"><br>
    <svg aria-hidden="true" data-component="Octicon" height="16" viewbox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg><br>
</span></template></p>
<table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="gistfile1.txt">
<tr>
<td id="file-gistfile1-txt-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td>
<td id="file-gistfile1-txt-LC1" class="blob-code blob-code-inner js-file-line">defaults write com.github.jamfpro-info jamfpro_api_client_secret api_client_secret_information_goes_here</td>
</tr>
</table>
</div></div>
</div>
</div></div>
<div class="gist-meta">
        <a href="https://gist.github.com/rtrouton/29c97e6c736513fb0a6669d1fc7549a1/raw/971858ee6e055c169aeab4d063b95af1bd143c57/gistfile1.txt" style="float:right" class="Link--inTextBlock">view raw</a><br>
        <a href="https://gist.github.com/rtrouton/29c97e6c736513fb0a6669d1fc7549a1#file-gistfile1-txt" class="Link--inTextBlock"><br>
          gistfile1.txt<br>
        </a><br>
        hosted with ❤ by <a class="Link--inTextBlock" href="https://github.com/">GitHub</a>
      </div>
</div>
</div>
<p>This script imports a list of Jamf Pro computer ID numbers from a plaintext file and uses that information to generate a report about the Recovery Lock passwords associated with those computers. The plaintext file format should look like this:</p>
<style>.gist table { margin-bottom: 0; }</style>
<div style="tab-size: 8" id="gist152879625" class="gist">
<div class="gist-file" translate="no" data-color-mode="light" data-light-theme="light">
<div class="gist-data">
<div class="js-gist-file-update-container js-task-list-container">
<div id="file-jamf_pro_id_numbers-txt" class="file my-2">
<div itemprop="text" class="Box-body p-0 blob-wrapper data type-text  " style="overflow: auto" tabindex="0" role="region" aria-label="jamf_pro_id_numbers.txt content, created by rtrouton on 07:35PM today.">
<div class="js-check-hidden-unicode js-blob-code-container blob-code-content">
<p>  <template class="js-file-alert-template"></template></p>
<div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center">
  <svg aria-hidden="true" data-component="Octicon" height="16" viewbox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg><br>
    <span><br>
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br>
      <a class="Link--inTextBlock" href="https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a><br>
    </span>
<div data-view-component="true" class="flash-action">        <a href="https://derflounder.wordpress.com/2026/08/23/using-the-jamf-pro-api-to-retrieve-recovery-lock-passwords/%7B%7B%20revealButtonHref%20%7D%7D" data-view-component="true" class="btn-sm btn">    Show hidden characters<br>
</a>
</div>
</div>
<p><br>
<template class="js-line-alert-template"><br>
  <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"><br>
    <svg aria-hidden="true" data-component="Octicon" height="16" viewbox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg><br>
</span></template></p>
<table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="jamf_pro_id_numbers.txt">
<tr>
<td id="file-jamf_pro_id_numbers-txt-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td>
<td id="file-jamf_pro_id_numbers-txt-LC1" class="blob-code blob-code-inner js-file-line">19</td>
</tr>
<tr>
<td id="file-jamf_pro_id_numbers-txt-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td>
<td id="file-jamf_pro_id_numbers-txt-LC2" class="blob-code blob-code-inner js-file-line">55</td>
</tr>
<tr>
<td id="file-jamf_pro_id_numbers-txt-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td>
<td id="file-jamf_pro_id_numbers-txt-LC3" class="blob-code blob-code-inner js-file-line">72</td>
</tr>
<tr>
<td id="file-jamf_pro_id_numbers-txt-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td>
<td id="file-jamf_pro_id_numbers-txt-LC4" class="blob-code blob-code-inner js-file-line">93</td>
</tr>
</table>
</div></div>
</div>
</div></div>
<div class="gist-meta">
        <a href="https://gist.github.com/rtrouton/b06733deb944207e7ca924058f55bb69/raw/4f06ed4b6d26ea9f7fcd8163c168ccf70ff0f410/jamf_pro_id_numbers.txt" style="float:right" class="Link--inTextBlock">view raw</a><br>
        <a href="https://gist.github.com/rtrouton/b06733deb944207e7ca924058f55bb69#file-jamf_pro_id_numbers-txt" class="Link--inTextBlock"><br>
          jamf_pro_id_numbers.txt<br>
        </a><br>
        hosted with ❤ by <a class="Link--inTextBlock" href="https://github.com/">GitHub</a>
      </div>
</div>
</div>
<p><span style="text-decoration: underline"><strong>Usage:</strong></span></p>
<p><strong>/path/to/generate_filevault_recovery_key_report_from_jamf_pro_id_numbers /path/to/jamf_pro_id_numbers.txt</strong></p>
<p>Once the Jamf Pro computer ID numbers are read from in from the plaintext file, the script takes the following actions:</p>
<p>1. Uses the Jamf Pro API to download all information about the matching computer inventory record.<br>
2. Pulls the following information out of the inventory entry:</p>
<ul>
<li>Jamf Pro ID</li>
<li>Manufacturer</li>
<li>Model</li>
<li>Serial Number</li>
<li>Hardware UDID</li>
</ul>
<p>3. Runs a separate API call to retrieve the following:</p>
<ul>
<li>Recovery Lock Password</li>
</ul>
<p>4. Create a report in tab-separated value (.tsv) format which contains the following information about the deleted Macs</p>
<ul>
<li>Jamf Pro ID</li>
<li>Manufacturer</li>
<li>Model</li>
<li>Serial Number</li>
<li>Hardware UDID</li>
<li>Recovery Lock Password Available</li>
<li>Recovery Lock Password (if no password is set, <strong>NA</strong> is reported for the <strong>Recovery Lock Password</strong> column.)</li>
<li>Jamf Pro URL for the computer inventory record</li>
</ul>
<p>The script should display output similar to this:</p>
<style>.gist table { margin-bottom: 0; }</style>
<div style="tab-size: 8" id="gist152880200" class="gist">
<div class="gist-file" translate="no" data-color-mode="light" data-light-theme="light">
<div class="gist-data">
<div class="js-gist-file-update-container js-task-list-container">
<div id="file-gistfile1-txt" class="file my-2">
<div itemprop="text" class="Box-body p-0 blob-wrapper data type-text  " style="overflow: auto" tabindex="0" role="region" aria-label="gistfile1.txt content, created by rtrouton on 08:12PM today.">
<div class="js-check-hidden-unicode js-blob-code-container blob-code-content">
<p>  <template class="js-file-alert-template"></template></p>
<div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center">
  <svg aria-hidden="true" data-component="Octicon" height="16" viewbox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg><br>
    <span><br>
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br>
      <a class="Link--inTextBlock" href="https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a><br>
    </span>
<div data-view-component="true" class="flash-action">        <a href="https://derflounder.wordpress.com/2026/08/23/using-the-jamf-pro-api-to-retrieve-recovery-lock-passwords/%7B%7B%20revealButtonHref%20%7D%7D" data-view-component="true" class="btn-sm btn">    Show hidden characters<br>
</a>
</div>
</div>
<p><br>
<template class="js-line-alert-template"><br>
  <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"><br>
    <svg aria-hidden="true" data-component="Octicon" height="16" viewbox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg><br>
</span></template></p>
<table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="gistfile1.txt">
<tr>
<td id="file-gistfile1-txt-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td>
<td id="file-gistfile1-txt-LC1" class="blob-code blob-code-inner js-file-line">username@computername ~ % /Users/Shared/Generate_Recovery_Lock_Password_Report_From_Jamf_Pro_ID_Numbers.sh jamf_pro_id_numbers.txt</td>
</tr>
<tr>
<td id="file-gistfile1-txt-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td>
<td id="file-gistfile1-txt-LC2" class="blob-code blob-code-inner js-file-line">Please enter your Jamf Pro server URL : <a href="https://jamf.pro.server.here/" rel="nofollow">https://jamf.pro.server.here</a></td>
</tr>
<tr>
<td id="file-gistfile1-txt-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td>
<td id="file-gistfile1-txt-LC3" class="blob-code blob-code-inner js-file-line">Please enter your Jamf Pro API client ID : 52d62208-4eb8-45f9-af54-5aa2e4273029</td>
</tr>
<tr>
<td id="file-gistfile1-txt-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td>
<td id="file-gistfile1-txt-LC4" class="blob-code blob-code-inner js-file-line">Please enter the API client secret for the 52d62208-4eb8-45f9-af54-5aa2e4273029 API ID client: </td>
</tr>
<tr>
<td id="file-gistfile1-txt-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td>
<td id="file-gistfile1-txt-LC5" class="blob-code blob-code-inner js-file-line">Report being generated. File location will appear below once ready.</td>
</tr>
<tr>
<td id="file-gistfile1-txt-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td>
<td id="file-gistfile1-txt-LC6" class="blob-code blob-code-inner js-file-line">Report on Recovery Lock passwords available here: /var/folders/ps/2_yw29gj711c9d7c5w5jhyv80000gp/T/tmp.6YgzNdcgqV.tsv</td>
</tr>
<tr>
<td id="file-gistfile1-txt-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td>
<td id="file-gistfile1-txt-LC7" class="blob-code blob-code-inner js-file-line">username@computername ~ % </td>
</tr>
</table>
</div></div>
</div>
</div></div>
<div class="gist-meta">
        <a href="https://gist.github.com/rtrouton/31f533cff4316dd6da96173fc5d57509/raw/47c223647ef7f6f2214a7b3e9a5a4cccac755068/gistfile1.txt" style="float:right" class="Link--inTextBlock">view raw</a><br>
        <a href="https://gist.github.com/rtrouton/31f533cff4316dd6da96173fc5d57509#file-gistfile1-txt" class="Link--inTextBlock"><br>
          gistfile1.txt<br>
        </a><br>
        hosted with ❤ by <a class="Link--inTextBlock" href="https://github.com/">GitHub</a>
      </div>
</div>
</div>
<p>The resulting report in <a href="https://en.wikipedia.org/wiki/Tab-separated_values">TSV format</a> will contain information similar to what’s shown below:</p>
<style>.gist table { margin-bottom: 0; }</style>
<div style="tab-size: 8" id="gist152879634" class="gist">
<div class="gist-file" translate="no" data-color-mode="light" data-light-theme="light">
<div class="gist-data">
<div class="js-gist-file-update-container js-task-list-container">
<div id="file-tmp-6ygzndcgqv-tsv" class="file my-2">
<div itemprop="text" class="Box-body p-0 blob-wrapper data type-tsv  " style="overflow: auto" tabindex="0" role="region" aria-label="tmp.6YgzNdcgqV.tsv content, created by rtrouton on 07:36PM today.">
<div class="blob-interaction-bar">
  <svg aria-hidden="true" data-component="Octicon" height="16" viewbox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search">
    <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path>
</svg><br>
  <input type="text" name="filter" class="form-control js-csv-filter-field blob-filter" autocapitalize="off" placeholder="Search this file…" aria-label="Search this file…">
</div>
<div class="markdown-body js-check-hidden-unicode" data-line-alert="before" data-hpc>
    <template class="js-file-alert-template">
<div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center">
  <svg aria-hidden="true" data-component="Octicon" height="16" viewbox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg><br>
    <span><br>
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br>
      <a class="Link--inTextBlock" href="https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a><br>
    </span>
<div data-view-component="true" class="flash-action">        <a href="https://derflounder.wordpress.com/2026/08/23/using-the-jamf-pro-api-to-retrieve-recovery-lock-passwords/%7B%7B%20revealButtonHref%20%7D%7D" data-view-component="true" class="btn-sm btn">    Show hidden characters<br>
</a>
</div>
</div>
<p></p></template><br>
<template class="js-line-alert-template"><br>
  <span aria-label="This line has hidden Unicode characters" data-view-component="true" class="line-alert tooltipped tooltipped-e"><br>
    <svg aria-hidden="true" data-component="Octicon" height="16" viewbox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg><br>
</span></template>
<table class="js-csv-data csv-data js-file-line-container">
<thead>
<tr id="file-tmp-6ygzndcgqv-tsv-LC1" class="js-file-line">
<td id="file-tmp-6ygzndcgqv-tsv-L1" class="blob-num js-line-number" data-line-number="1"></td>
<th>Jamf Pro ID Number</th>
<th>Manufacturer</th>
<th>Model</th>
<th>Serial Number</th>
<th>UDID</th>
<th>Recovery Lock Password Available</th>
<th>Recovery Lock Password</th>
<th>Jamf Pro URL</th>
</tr>
</thead>
<tbody>
<tr id="file-tmp-6ygzndcgqv-tsv-LC2" class="js-file-line">
<td id="file-tmp-6ygzndcgqv-tsv-L2" class="blob-num js-line-number" data-line-number="2"></td>
<td>19</td>
<td>Apple</td>
<td>MacBook Pro (13-inch, M1, 2020)</td>
<td>C02X25CTPSYN</td>
<td>1B71C903-3BD7-441F-B063-4B49F232123A</td>
<td>No</td>
<td>NA</td>
<td><a href="https://jamf.pro.server.here/computers.html?id=19" rel="nofollow">https://jamf.pro.server.here/computers.html?id=19</a></td>
</tr>
<tr id="file-tmp-6ygzndcgqv-tsv-LC3" class="js-file-line">
<td id="file-tmp-6ygzndcgqv-tsv-L3" class="blob-num js-line-number" data-line-number="3"></td>
<td>55</td>
<td>Apple</td>
<td>MacBook Pro (14-inch, 2021)</td>
<td>INU1GX7R3Y</td>
<td>F5F3E415-7A82-4A10-BF78-EAB6561670DA</td>
<td>No</td>
<td>NA</td>
<td><a href="https://jamf.pro.server.here/computers.html?id=55" rel="nofollow">https://jamf.pro.server.here/computers.html?id=55</a></td>
</tr>
<tr id="file-tmp-6ygzndcgqv-tsv-LC4" class="js-file-line">
<td id="file-tmp-6ygzndcgqv-tsv-L4" class="blob-num js-line-number" data-line-number="4"></td>
<td>72</td>
<td>Apple</td>
<td>Mac mini (2024)</td>
<td>S8M1HLP3VW</td>
<td>7D262319-3403-425E-AAF7-A5D6B62C31E0</td>
<td>Yes</td>
<td>u+K0nrZVOvknZszakL9Rzg==</td>
<td><a href="https://jamf.pro.server.here/computers.html?id=72" rel="nofollow">https://jamf.pro.server.here/computers.html?id=72</a></td>
</tr>
<tr id="file-tmp-6ygzndcgqv-tsv-LC5" class="js-file-line">
<td id="file-tmp-6ygzndcgqv-tsv-L5" class="blob-num js-line-number" data-line-number="5"></td>
<td>93</td>
<td>Apple</td>
<td>MacBook Pro (14-inch, Nov 2023)</td>
<td>WZ3B1JOPTT</td>
<td>FC3F10BA-ED5E-4F50-AD34-B70D04276984</td>
<td>Yes</td>
<td>Qf7b5gXDBDjwyn0QLRQymA==</td>
<td><a href="https://jamf.pro.server.here/computers.html?id=93" rel="nofollow">https://jamf.pro.server.here/computers.html?id=93</a></td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div></div>
<div class="gist-meta">
        <a href="https://gist.github.com/rtrouton/a0ce98a6f5772377f3f7630ed5c9ddd1/raw/7312776e1c594da00fb5af84b7e5d3f12d49e2c1/tmp.6YgzNdcgqV.tsv" style="float:right" class="Link--inTextBlock">view raw</a><br>
        <a href="https://gist.github.com/rtrouton/a0ce98a6f5772377f3f7630ed5c9ddd1#file-tmp-6ygzndcgqv-tsv" class="Link--inTextBlock"><br>
          tmp.6YgzNdcgqV.tsv<br>
        </a><br>
        hosted with ❤ by <a class="Link--inTextBlock" href="https://github.com/">GitHub</a>
      </div>
</div>
</div>
<p>This script is available from GitHub at the following location:</p>
<p><a href="https://github.com/rtrouton/rtrouton_scripts/tree/main/rtrouton_scripts/Casper_Scripts/Generate_Recovery_Lock_Password_Report_From_Jamf_Pro_ID_Numbers">https://github.com/rtrouton/rtrouton_scripts/tree/main/rtrouton_scripts/Casper_Scripts/Generate_Recovery_Lock_Password_Report_From_Jamf_Pro_ID_Numbers</a></p>
<p>In addition to the script described above which use API client authentication, there is also a matching script which uses user accounts for authentication available on GitHub via the link above. If setting up a user account with limited rights, here are the required API privileges for the user account on the Jamf Pro server:</p>
<p><span style="text-decoration: underline"><strong>Jamf Pro Server Objects:</strong></span></p>
<ul>
<li>Computers: <strong>Read</strong></li>
</ul>
<p><span style="text-decoration: underline"><strong>Jamf Pro Server Actions:</strong></span></p>
<ul>
<li><strong>View Recovery Lock</strong></li>
</ul></div>]]></content>
    </entry>


    <entry>
        <title type="html">IT-Connect : Citrix NetScaler (CVE-2026-19490) : cette faille critique permet de contourner l’authentification</title>
        <id>https://www.it-connect.fr/citrix-netscaler-cve-2026-19490-contournement-authentification/</id>
        <link rel="alternate" href="https://www.it-connect.fr/citrix-netscaler-cve-2026-19490-contournement-authentification/"/>
        <published>2026-08-21T17:47:18+00:00</published>
        <updated>2026-08-21T17:47:18+00:00</updated>
        <author><name>Florian BURNEL</name></author>

        <content type="html"><![CDATA[<div><p>Citrix a corrigé deux vulnérabilités dans NetScaler ADC et Gateway. La CVE-2026-19490 ouvre la porte à un contournement de l'authentification à distance.</p>
<p>Le post <a href="https://www.it-connect.fr/citrix-netscaler-cve-2026-19490-contournement-authentification/">Citrix NetScaler (CVE-2026-19490) : cette faille critique permet de contourner l’authentification</a> a été publié sur <a href="https://www.it-connect.fr/">IT-Connect</a>.</p></div>]]></content>
    </entry>


    <entry>
        <title type="html">IT-Connect : Keycloak : cette faille critique permet de pirater un compte via la fonction de mot de passe oublié</title>
        <id>https://www.it-connect.fr/keycloak-cve-2026-18963-faille-critique-mot-de-passe-oublie/</id>
        <link rel="alternate" href="https://www.it-connect.fr/keycloak-cve-2026-18963-faille-critique-mot-de-passe-oublie/"/>
        <published>2026-08-21T17:10:40+00:00</published>
        <updated>2026-08-21T17:10:40+00:00</updated>
        <author><name>Florian BURNEL</name></author>

        <content type="html"><![CDATA[<div><p>La faille CVE-2026-18963 permet de réinitialiser le mot de passe de n'importe quel compte Keycloak sans authentification. Un patch est disponible.</p>
<p>Le post <a href="https://www.it-connect.fr/keycloak-cve-2026-18963-faille-critique-mot-de-passe-oublie/">Keycloak : cette faille critique permet de pirater un compte via la fonction de mot de passe oublié</a> a été publié sur <a href="https://www.it-connect.fr/">IT-Connect</a>.</p></div>]]></content>
    </entry>


    <entry>
        <title type="html">IT-Connect : Endstate : sauvegarder et restaurer ses applications Windows (et leurs configs) sur un nouveau PC</title>
        <id>https://www.it-connect.fr/endstate-sauvegarder-restaurer-applications-windows/</id>
        <link rel="alternate" href="https://www.it-connect.fr/endstate-sauvegarder-restaurer-applications-windows/"/>
        <published>2026-08-21T16:17:46+00:00</published>
        <updated>2026-08-21T16:17:46+00:00</updated>
        <author><name>Florian BURNEL</name></author>

        <content type="html"><![CDATA[<div><p>Découvrez Endstate, un outil open source qui sauvegarde les applications et les réglages d'un PC Windows dans un fichier, puis les restaure sur un nouveau PC.</p>
<p>Le post <a href="https://www.it-connect.fr/endstate-sauvegarder-restaurer-applications-windows/">Endstate : sauvegarder et restaurer ses applications Windows (et leurs configs) sur un nouveau PC</a> a été publié sur <a href="https://www.it-connect.fr/">IT-Connect</a>.</p></div>]]></content>
    </entry>


    <entry>
        <title type="html">IT-Connect : Entra ID : une faille critique a été patchée, mais vous n’avez rien à faire</title>
        <id>https://www.it-connect.fr/entra-id-cve-2026-69836-faille-cvss-10-exploitee/</id>
        <link rel="alternate" href="https://www.it-connect.fr/entra-id-cve-2026-69836-faille-cvss-10-exploitee/"/>
        <published>2026-08-21T15:55:06+00:00</published>
        <updated>2026-08-21T15:55:06+00:00</updated>
        <author><name>Florian BURNEL</name></author>

        <content type="html"><![CDATA[<div><p>Microsoft a corrigé la CVE-2026-69836, une faille critique dans Entra ID déjà exploitée dans la nature. La bonne nouvelle : vous n'avez rien à faire.</p>
<p>Le post <a href="https://www.it-connect.fr/entra-id-cve-2026-69836-faille-cvss-10-exploitee/">Entra ID : une faille critique a été patchée, mais vous n’avez rien à faire</a> a été publié sur <a href="https://www.it-connect.fr/">IT-Connect</a>.</p></div>]]></content>
    </entry>


    <entry>
        <title type="html">IT-Connect : Graft, l’outil open source qui cartographie votre code pour les agents IA</title>
        <id>https://www.it-connect.fr/graft-contexte-open-source-agents-ia-codage/</id>
        <link rel="alternate" href="https://www.it-connect.fr/graft-contexte-open-source-agents-ia-codage/"/>
        <published>2026-08-21T11:25:00+00:00</published>
        <updated>2026-08-21T11:25:00+00:00</updated>
        <author><name>Florian BURNEL</name></author>

        <content type="html"><![CDATA[<div><p>Graft, outil open source signé Nanonets, transforme votre dépôt en graphe Markdown lisible par Claude Code, Cursor ou Codex. De quoi brûler moins de tokens.</p>
<p>Le post <a href="https://www.it-connect.fr/graft-contexte-open-source-agents-ia-codage/">Graft, l’outil open source qui cartographie votre code pour les agents IA</a> a été publié sur <a href="https://www.it-connect.fr/">IT-Connect</a>.</p></div>]]></content>
    </entry>


    <entry>
        <title type="html">IT-Connect : GitLab : la faille critique CVE-2026-19478 est déjà exploitée, deux jours après le correctif</title>
        <id>https://www.it-connect.fr/gitlab-cve-2026-19478-faille-critique-exploitee/</id>
        <link rel="alternate" href="https://www.it-connect.fr/gitlab-cve-2026-19478-faille-critique-exploitee/"/>
        <published>2026-08-21T11:20:00+00:00</published>
        <updated>2026-08-21T11:20:00+00:00</updated>
        <author><name>Florian BURNEL</name></author>

        <content type="html"><![CDATA[<div><p>Deux jours après le correctif publié par GitLab, la faille critique CVE-2026-19478 fait l'objet de tentatives d'exploitation par les pirates.</p>
<p>Le post <a href="https://www.it-connect.fr/gitlab-cve-2026-19478-faille-critique-exploitee/">GitLab : la faille critique CVE-2026-19478 est déjà exploitée, deux jours après le correctif</a> a été publié sur <a href="https://www.it-connect.fr/">IT-Connect</a>.</p></div>]]></content>
    </entry>


    <entry>
        <title type="html">IT-Connect : Windows 11 : la mise à jour KB5121003 fait planter des jeux, Microsoft cherche une solution</title>
        <id>https://www.it-connect.fr/windows-11-kb5121003-plantages-jeux-microsoft-enquete/</id>
        <link rel="alternate" href="https://www.it-connect.fr/windows-11-kb5121003-plantages-jeux-microsoft-enquete/"/>
        <published>2026-08-21T11:15:00+00:00</published>
        <updated>2026-08-21T11:15:00+00:00</updated>
        <author><name>Florian BURNEL</name></author>

        <content type="html"><![CDATA[<div><p>Microsoft enquête sur les plantages de jeux provoqués par la mise à jour KB5121003 de Windows 11. Le studio Embark pointe le pilote tiers inpoutx64.sys.</p>
<p>Le post <a href="https://www.it-connect.fr/windows-11-kb5121003-plantages-jeux-microsoft-enquete/">Windows 11 : la mise à jour KB5121003 fait planter des jeux, Microsoft cherche une solution</a> a été publié sur <a href="https://www.it-connect.fr/">IT-Connect</a>.</p></div>]]></content>
    </entry>


    <entry>
        <title type="html">IT-Connect : Proton Mail trie enfin vos e-mails automatiquement, et sans lire leur contenu</title>
        <id>https://www.it-connect.fr/proton-mail-categories-boite-de-reception/</id>
        <link rel="alternate" href="https://www.it-connect.fr/proton-mail-categories-boite-de-reception/"/>
        <published>2026-08-21T11:12:00+00:00</published>
        <updated>2026-08-21T11:12:00+00:00</updated>
        <author><name>Florian BURNEL</name></author>

        <content type="html"><![CDATA[<div><p>Proton déploie les catégories dans Proton Mail : six onglets pour trier vos e-mails entrants, avec un classement basé sur les métadonnées et non sur le contenu.</p>
<p>Le post <a href="https://www.it-connect.fr/proton-mail-categories-boite-de-reception/">Proton Mail trie enfin vos e-mails automatiquement, et sans lire leur contenu</a> a été publié sur <a href="https://www.it-connect.fr/">IT-Connect</a>.</p></div>]]></content>
    </entry>


    <entry>
        <title type="html">IT-Connect : Elementor Pro : une faille critique permet de prendre le contrôle d’un site WordPress</title>
        <id>https://www.it-connect.fr/elementor-pro-cve-2026-32475-rce-non-authentifiee/</id>
        <link rel="alternate" href="https://www.it-connect.fr/elementor-pro-cve-2026-32475-rce-non-authentifiee/"/>
        <published>2026-08-21T11:08:00+00:00</published>
        <updated>2026-08-21T11:08:00+00:00</updated>
        <author><name>Florian BURNEL</name></author>

        <content type="html"><![CDATA[<div><p>CVE-2026-32475 : un visiteur anonyme peut déposer et exécuter un fichier PHP via un formulaire Elementor Pro. Voici comment protéger votre site WordPress.</p>
<p>Le post <a href="https://www.it-connect.fr/elementor-pro-cve-2026-32475-rce-non-authentifiee/">Elementor Pro : une faille critique permet de prendre le contrôle d’un site WordPress</a> a été publié sur <a href="https://www.it-connect.fr/">IT-Connect</a>.</p></div>]]></content>
    </entry>


</feed>
