cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
72582
Views
15
Helpful
23
Replies

Deleting CTL File from Cisco IP Phones

Ratheesh Kumar
VIP Alumni
VIP Alumni

HI Team,

Appreciate if you could guide me with the procedure how to delete CTL files from Cisco IP Phone models 7975/7945/7965 series.

regards

Ratheesh

23 Replies 23

Sorry, but I have no idea anymore

No probs Marcel.. thanks a lot . Will update once I have a solution

regards

Ratheesh

Hello again,

one last question, what version of CUCM do you use?

If it is version 8.x you must delete the ITL File. Go to Security Configuration > Trust List > ITL File - "More"  and "erase"

Kind regards,

Marcel

CUCM ver 6.1.5

The CTL file will prevent changing the TFTP server address to something that is not in the CTL file, and also is used to authenticate the TFTP's signed configuration file if you have the phone security profile configured with the signed TFTP file option checked.

The auth fail message you're seeing is due to the firmware that is currently on the phone, if you check the current firmware version I be you're on 8.3.x.  The reason you're seeing auth fail is because each firmware load is signed and the keys used to sign the firmware loads changed around 8.5.2SR1 so that older firmware versions cannot authenticate the signature on the firmware file and then you get the auth fail.  The fix is to do a stepped upgrade of your phone to something like 8.4.4 first which contains both keys for the new firmware and the older one, then after upgrading to 8.4.4 you can go to the actual 8.5.3 or whatever version is default on CUCM 6.1.5.

imzloy
Level 1
Level 1
Found free 30 days software for remote phone control which can delete ITLs, update phone background images etc.: http://www.awnmtech.com/prcut-download/

Vysakh Sundar
Level 1
Level 1

Do you have any solution in deleting the CTL file when we migrate the phones to a different cluster

roshaniftkhar1
Level 1
Level 1

Hey, I actually mistakenly delete CTL file from Cisco IP phone and want to recover get it back.

What is the procedure to recover those deleted file?

Need your supports.

Regard: Springwell vs Pelican

JAVIERGUA
Level 1
Level 1

Hello

you can do  it   with  python for 7XXX ,  I  just do some changes  and  validate the scripts  . They are not my own .

import paramiko
import time

hosts = ["10.0.0.103"]

def delete_CTL(hosts):
    ssh1 = paramiko.SSHClient()
    ssh1.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh1.connect(hostname=hosts, username='<user>',        
       password='<password>', port=22,
       look_for_keys=False,
       allow_agent=False)

    remote1 = ssh1.invoke_shell()
    remote1.recv(1024)

"""
For cisco  phone 7911
    remote1.send('debug\n')
    time.sleep(2)
    print('paso 1')
    remote1.send('debug\n')
    time.sleep(2)
    print('paso 2')
    remote1.send('test open\n')
    time.sleep(2)
    print('paso 3')
    remote1.send('test key set\n')
    time.sleep(2)
    print('paso 4')
    remote1.send('test key **#\n')
    time.sleep(2)
    print('paso 5')
    remote1.send('test key 4\n')
    time.sleep(2)
    print('paso 6')
    remote1.send('test key 5\n')
    time.sleep(2)
    print('paso 7')
    remote1.send('test key 2\n')
    time.sleep(2)
    remote1.send('test key 2\n')
    time.sleep(2)
    print('paso 8')
    remote1.send('test key soft4\n')
    time.sleep(2)
    print('paso 9')
    remote1.send('test key soft2\n')
    time.sleep(2)
    print('paso 10')
    remote1.send('test close\n')
    time.sleep(2)
    print('paso 11')
    remote1.close()
    time.sleep(2)
    print('paso 12')
    output=remote1.recv(1024)
    return output.decode('ascii')
"""

"""
#for  cisco phone 7821

    remote1.send('debug\n')
    time.sleep(2)
    print('paso 1')
    remote1.send('debug\n')
    time.sleep(2)
    print('paso 2')
    remote1.send('test open\n')
    time.sleep(2)
    print('paso 3')
    remote1.send('test key set\n')
    time.sleep(2)
    print('paso 4')
    remote1.send('test key 5\n')
    time.sleep(2)
    print('paso 5')
    remote1.send('test key 5\n')
    time.sleep(2)
    print('paso 6')
    remote1.send('test key 4\n')
    time.sleep(2)
    print('paso 7')
    remote1.send('test key soft2\n')
    time.sleep(2)
    print('paso 11')
    remote1.close()
    time.sleep(2)
    print('paso 12')
    output=remote1.recv(1024)
    return output.decode('ascii')

"""


if __name__ == "__main__":
      for i in hosts:
        delete_CTL(i)

for 8800

import requests
from requests.auth import HTTPBasicAuth
from urllib3 import disable_warnings
from urllib3.exceptions import InsecureRequestWarning

cti_User = '<user>'
cti_Pass = '<password>'

def Keypad(num):
    return "XML=%3CCiscoIPPhoneExecute%3E%3CExecuteItem%20URL%3D%22Key%3AKeyPad" + num + "%22%2F%3E%3C%2FCiscoIPPhoneExecute%3E"

def Softkey(key):
    return "XML=%3CCiscoIPPhoneExecute%3E%3CExecuteItem%20URL%3D%22Key%3ASoft" + key + "%22%2F%3E%3C%2FCiscoIPPhoneExecute%3E"

def Settings():
    return "XML=%3CCiscoIPPhoneExecute%3E%3CExecuteItem%20URL%3D%22Key%3ASettings%22%2F%3E%3C%2FCiscoIPPhoneExecute%3E"

def Applications():
    return "XML=%3CCiscoIPPhoneExecute%3E%3CExecuteItem%20URL%3D%22Key%3AApplications%22%2F%3E%3C%2FCiscoIPPhoneExecute%3E"



def Connect(phone, payload):
    disable_warnings(InsecureRequestWarning)
    url = "http://" + phone + "/CGI/Execute"
    headers = {'Content-Type': "application/x-www-form-urlencoded"}
    try:
        response = requests.request("POST", url, auth=HTTPBasicAuth(cti_User, cti_Pass), data=payload, headers=headers)
    except:
        print("Couldn't execute the code. Please re-run the code")



def reset_ITL(phone):
    Connect(phone, Applications())
    Connect(phone, Keypad('7'))
    Connect(phone, Keypad('5'))
    Connect(phone, Keypad('5'))
    Connect(phone, Softkey('3'))
    Connect(phone, Softkey('1'))


def user_Input():
    ip = input("Enter the IP Address : ")
    reset_ITL(ip)



user_Input()