Login to Cisco IP Phone remotely without knowing user’s PIN
In this article, we will learn how to login to Cisco IP Phone remotely without knowing user’s PIN. I have created a python script to do this activity. The script comes very handy and easy to use. This is very helpful when you have cluster migration or site migration or a new site build. You can remotely get the users logged into their IP Phone which will save a huge amount of time.
To perform the login, there are three files associated.
- EMLoginWithoutPIN.py – The EMLoginWithoutPIN.py file is actually the heart which contains all the program. All you need to do is modify the appEmProxyUser in the script. This
- Data.csv – This file contains all the data related to the users. You need to feed in the IP Address of the CUCM, Mac-Address of the user’s device and user’s CUCM user id.
- result.csv – This file will contain results once you execute the script, the results file will tell you whether the user was logged in or not.
Creating a Application User in CUCM
- Login to CUCM
- Navigate to User Management > Application User > Add New
- Add the Application user name as “emlogin“
- Create a Password
- Permission Information > Click on Add to access control group
- Add “Standard EM Authentication Proxy Rights” rights to the group
- Click on Save
Modifying the data.csv
- Make sure that the headers are not modified in the data.csv file
- Enter the IP Address of the Call Manager in Column A starting from 2nd Row in A Column.
- Enter the Mac Address of the IP Phone in Column C starting from 2nd Row in B Column. Make sure you prefix SEP in the mac-address.
- Enter the User ID of the user whom you want to get logged into the IP Phone starting from 2nd Row in C Column
- Keep entering the details row wise without keeping any blank rows.
- Save the file
Here is the Python script
################################################### ################################################### ## This python script is created by UC Collabing ## ################################################### ################################################### from pydoc import resolve from urllib import response import requests import pandas as pd import re import getpass import xml.etree.ElementTree as ET df = pd.read_csv('data.csv') ipAddress = df['IP_Address'] deviceName = df['Device_Name'] userID = df['UserID'] f = open("result.csv", "w+") f.write("IP_Address, Device_Name, UserID, Status") f.write("\n") f.close() ############################## appEmProxyUser = "emlogin" ############################## appPw = getpass.getpass(prompt="Enter the EM Proxy User password: ") for ipAddress, deviceName, userID, in zip(ipAddress, deviceName, userID): result = [] uri = "http://" + ipAddress + ":8080/emservice/EMServiceServlet" headers = {"Content-Type": "application/x-www-form-urlencoded"} param = """<request> <appInfo> <appID>"""+appEmProxyUser+"""</appID> <appCertificate>"""+appPw+"""</appCertificate> </appInfo> <login> <deviceName>"""+deviceName+"""</deviceName> <userID>"""+str(userID)+"""</userID> </login> </request>""" r = requests.post(uri, data={"xml":param},headers=headers) XMLDoc=ET.fromstring(r.content) try: resPattern=XMLDoc.find(".//error").text #resPattern = resPattern.splitlines() resPattern = resPattern.rstrip("\n") #print(ET.tostring(XMLDoc, encoding='utf8').decode('utf8')) print(resPattern) except: resPattern=XMLDoc.find(".//success").text #resPattern = resPattern.splitlines() #resPattern = resPattern.rstrip("\n") #print(ET.tostring(XMLDoc, encoding='utf8').decode('utf8')) resPattern = "Success" print(resPattern) result.append([ipAddress, deviceName, userID, resPattern]) for i in result: i = ", ".join('%s' %id for id in i) f = open("result.csv", "a") f.write(i) f.write("\n") f.close()
Reading the results.csv
- Open the results.csv file
- This will give you the results of the execution you made.
- The results will appear in column D.
Here is the YouTube demo video.
I am working in an IT company and having 10+ years of experience into Cisco IP Telephony and Contact Center. I have worked on products like CUCM, CUC, UCCX, CME/CUE, IM&P, Voice Gateways, VG224, Gatekeepers, Attendant Console, Expressway, Mediasense, Asterisk, Microsoft Teams, Zoom etc. I am not an expert but i keep exploring whenever and wherever i can and share whatever i know. You can visit my LinkedIn profile by clicking on the icon below.
“Everyone you will ever meet knows something you don’t.” ― Bill Nye