เดเดพเตป เด เดเดฎเตเดชเดจเดฟเดฏเดฟเตฝ เดเตเดฒเดฟ เดเตเดฏเตเดฏเดพเตป เดตเดจเตเดจเดชเตเดชเตเตพ, เดเดจเดฟเดเตเดเต เดเดคเดฟเดจเดเด เดเดชเดฟ เดเดชเดเดฐเดฃเดเตเดเดณเตเดเต เดเตเดฑเดเตเดเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดจเดเตเดทเดคเตเดฐเดเดฟเดนเตเดจเดฎเตเดณเตเดณ เดจเดฟเดฐเดตเดงเดฟ เดธเตเตผเดตเดฑเตเดเตพ, FreeBPX เดฐเตเดชเดคเตเดคเดฟเตฝ เดเดฐเต เดชเดพเดเตเดเต. เดเตเดเดพเดคเต, เดเดฐเต เด
เดจเดฒเตเดเต PBX เดธเดพเดเดธเดเต เดเดกเดฟเดธเดฟเดเดธเต 500 เดธเดฎเดพเดจเตเดคเดฐเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเต, เดชเตเดคเตเดตเต, เดเดฎเตเดชเดจเดฟเดฏเดฟเดฒเต เดชเตเดฐเดงเดพเดจ เดเดถเดฏเดตเดฟเดจเดฟเดฎเดฏ เดธเดเดตเดฟเดงเดพเดจเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต; เดเดชเดฟ เดเตเดฒเดฟเดซเตเดฃเดฟ เดธเตเดฏเดฟเตฝเดธเต เดกเดฟเดชเตเดชเดพเตผเดเตเดเตเดฎเตเดจเตเดฑเดฟเตฝ เดฎเดพเดคเตเดฐเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเต. เดเดฒเตเดฒเดพเด เดเดคเตเดชเตเดฒเต เดชเดพเดเดเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดคเตเดเดฐเตเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เดเดฐเต เดจเดฒเตเดฒ เดฆเดฟเดตเดธเด เดเดฒเตเดฒเดพเดตเดฐเตเดฏเตเด เดเดชเดฟ เดเตเดฒเดฟเดซเตเดฃเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเดพเตป เดเดฐเต เดเดคเตเดคเดฐเดตเต เดจเตฝเดเดฟ, เดธเดฎเดฏเดชเดฐเดฟเดงเดฟ เด
เดเดเตเดเดฐเดฟเดเตเดเต, เดเดชเดเดฐเดฃเดเตเดเตพ เดตเดพเดเตเดเดฟ, เดเดจเตเดฑเตผเดชเตเดฐเตเดธเต 21-เดพเด เดจเตเดฑเตเดฑเดพเดฃเตเดเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเดพเดจเตเดณเตเดณ เดชเดฆเตเดงเดคเดฟ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเตป เดคเตเดเดเตเดเดฟ.
เด
เดคเตเดคเดฐเดฎเตเดฐเต เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดฆเตเดฏเด เดตเดฟเดทเดฎเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเตเดจเตเดจเดคเต เด
เดคเดฟเดตเตเดเด เดตเดณเดฐเตเดจเตเดจ เดเตเดฒเดฟเดซเตเตบ เดธเตเดฑเตเดฑเตเดเดณเตเดเต เดเดฃเตเดฃเดฎเดพเดฃเต, เด
เดคเต เดเดเตเดเดจเตเดฏเตเดเตเดเดฟเดฒเตเด เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเดฃเด, เดฐเดฃเตเดเดพเดฎเดคเตเดคเตเดคเต เดตเดณเดฐเต เดเดถเดเตเดเดพเดเตเดฒเดฎเดพเดฏเดคเต เดซเตเตบ เดฌเตเดเตเดเต เดเดฏเดฟเดฐเตเดจเตเดจเต. เดเตปเดกเตโเดชเตเดฏเดฟเดจเตเดฑเต เดฎเดพเดจเตเดเตผเดเตเดเต เดเดฆเตเดฏเดคเตเดคเตเดคเดฟเตฝ เดเดเตเดเดณเต เดธเดนเดพเดฏเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดฎเตเดเตเดเดฟเตฝ (เดเดคเต เดซเตเดฐเตเดชเดฟเดฌเดฟเดเดเตโเดธเดฟเดจเตเดฑเต เดเดฑเตเดฑเดตเตเด เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดเตเดเดฟเดฎเดพเดฑเตเดฑเดฟเดฏเดคเดพเดฃเต), เด
เดชเตเดชเตเตพ เดชเตเดธเตเดคเดเดตเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเดเต เดเดฟเดฒ เดเตเดฆเตเดฏเดเตเดเตพ เดเดฏเตผเดจเตเดจเต:
- เดเดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเตเดเต เดธเตเดฅเดพเดจเด/เดฆเตเดฐเดตเตเดฏเดค เดจเดฟเดฐเดจเตเดคเดฐเด เดฎเดพเดฑเดฟเดเตเดเตเดฃเตเดเดฟเดฐเดฟเดเตเดเตเดฎเตเดชเตเตพ เด เดคเดฟเดจเตเดฑเต เดเตเดคเตเดฏเดค เดเดเตเดเดจเต เดเดฑเดชเตเดชเดพเดเตเดเดพเด?
- เดฐเดฃเตเดเดพเดฎเดคเดพเดฏเดฟ, เดซเตเดฃเตเดเตพ เดเดเตเดเดจเต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เดตเตเดฏเดเตเดคเดฟเดชเดฐเดฎเดพเดเตเดเดพเด. เดเดฐเต เดคเดตเดฃเดฏเตเด เดเตเตบเดเดพเดเตเดฑเตเดฑเต เดชเตเดฐเต เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒเต?
เดชเตเดฐเดถเตเดจเด เดฐเดธเดเดฐเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดชเดฐเดฟเดนเดพเดฐเด เดตเดฐเดพเตป เด
เดงเดฟเด เดธเดฎเดฏเด เดเดเตเดคเตเดคเดฟเดฒเตเดฒ. เดเดชเตเดชเตเตพ เดเดพเตป เดชเตเตผเดฃเตเดฃเดฎเดพเดฏ เดฒเดฟเดธเตเดฑเตเดฑเดฟเดเดเต เดจเตฝเดเตเด, เดคเตเดเตผเดจเตเดจเต เดเดเตเดเตพ เด
เดคเต เดเตเดฐเดฎเดคเตเดคเดฟเตฝ เดจเตเดเตเดเตเด.
from scapy.all import sniff
from scapy.layers.inet import IP
import mysql.connector
import ldap
import getpass
import tftpy
import requests
import os
import time
from string import replace
def conn_ldap(login):
ad = ldap.initialize('ldap://***.local')
ad.simple_bind_s('voip@***.local', 'password')
basedn = 'OU=IT,DC=***,DC=LOCAL'
basedn_user = 'OU=***,OU=***,DC=***,DC=LOCAL'
scope = ldap.SCOPE_SUBTREE
filterexp = "(&(sAMAccountName=" + login + ")(ObjectClass=person))"
filterexp2 = "(&(ObjectClass=organizationUnit))"
attrlist = ['cn']
attrlist2 = ['OU']
search = ad.search_s(basedn, scope, filterexp, attrlist)
adname = search[0][1]['cn'][0].decode('utf-8')
if adname == ' ':
search = ad.search_s(basedn_user, scope, filterexp2, attrlist2)
for i in range(1, len(search)+1):
group = search[i][1]['ou'][0]
basedn_user2 = 'OU='+group+','+basedn_user
search = ad.search_s(basedn_user2, scope, filterexp, attrlist)
adname = search[0][1]['cn'][0].decode('utf-8')
if adname != ' ':
return adname
adname = search[0][1]['cn'][0].decode('utf-8')
ad.unbind_s()
return adname
def tftp_file_change(config,place,adname,current_account,current_account_password):
client = tftpy.TftpClient("192.168.0.3", 69)
client.download('template.cfg', place)
fileread = open(place, 'r')
line = fileread.readlines()
fileread.close()
line[5] = (('account.1.label = ').encode('utf-8') + adname.encode('utf-8') + 'n')
line[2] = (('account.1.auth_name = ').encode('utf-8') + current_account.encode('utf-8') + 'n')
line[3] = (('account.1.display_name = ').encode('utf-8') + current_account.encode('utf-8') + 'n')
line[6] = (('account.1.password = ').encode('utf-8') + current_account_password[0][0] + 'n')
filewrite = open(place, 'w')
for i in line:
filewrite.write(i)
filewrite.close()
print place
print config
client.upload(config,place)
def get_phone_inform(ipaddr):
fileconf = requests.get('http://admin:admin@'+ipaddr+'/servlet?phonecfg=get[&accounts=1]')
conf = fileconf.text.split('|')
current_account = conf[2]
return current_account
def sniff_frame():
pcapf = sniff(count=1, timeout=70, filter="dst host 192.168.0.3 and port 5060")
if len(pcapf) == 0:
exit()
frame = pcapf[0]
macaddr = frame.src
print macaddr[:8]
if macaddr[:8] != '80:5e:c0':
exit()
ipaddr = frame[0][IP].src
return macaddr, ipaddr
def conn_mysql(query,fquery,macaddr,qwery2):
connect = mysql.connector.connect(host='192.168.0.3', database='voip', user='voip_wr', password='***')
cursor = connect.cursor()
cursor.execute(fquery)
state = cursor.fetchall()
state = bool(state[0][0])
if state == True:
cursor.execute(qwery2)
connect.commit()
connect.close()
else:
cursor.execute(query)
connect.commit()
connect.close()
def check_account(current_account):
connect = mysql.connector.connect(host='192.168.0.3', database='asterisk', user='voip_wr', password='***')
cursor = connect.cursor()
qwery = 'select data from sip where id=' + current_account + ' and keyword="secret";'
cursor.execute(qwery)
password = cursor.fetchall()
if password == ' ':
exit()
else:
return password
if __name__ == '__main__':
macaddr, ipaddr = sniff_frame()
current_account = get_phone_inform(ipaddr)
current_account_password = check_account(current_account)
macaddr = macaddr.replace(':', '')
ipaddr = ipaddr.decode('utf-8')
adname = conn_ldap(getpass.getuser())
query = 'INSERT INTO station (mac, ip, name, number) VALUES (' + '"' + macaddr + '",' + '"' + ipaddr + '",' + '"' + adname + '",' + '"' + get_phone_inform(ipaddr) + '"' + ')'
qwery2 = 'UPDATE station SET ip=' + '"' + ipaddr + '"' + ', name=' + '"' + adname + '"' + ', number=' + '"' + get_phone_inform(ipaddr) + '"' + ' WHERE mac=' + '"' + macaddr + '"'
fquery = 'SELECT EXISTS(SELECT mac FROM voip.station WHERE mac=' + '"' + macaddr + '")'
query = query.encode('utf-8')
fquery = fquery.encode('utf-8')
config = macaddr + '.cfg'
place = os.path.expanduser("~") + "" + "AppDataLocal" + config
conn_mysql(query,fquery,macaddr,qwery2)
tftp_file_change(config,place,adname,current_account,current_account_password)
requests.get('http://admin:admin@'+ipaddr+'/cgi-bin/ConfigManApp.com?key=AutoP')
requests.get('http://admin:admin@'+ipaddr+'/cgi-bin/ConfigManApp.com?key=Reboot')
เดชเตเดฐเตเดเตเดฐเดพเด เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดฑเต เดเดฎเตเดชเตเดฏเตเดเตเดเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดเดฏเตเด เดเดฎเตเดชเตเดฏเตเดเตเดเตผ เดเดฐเต เดซเตเตบ เดตเดดเดฟ เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเดฟเดฒเตเดเตเดเต เดเดฃเดเตโเดฑเตเดฑเต เดเตเดฏเตโเดคเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เดเดพเดฐเดฃเด Yealink T19 เดเดฐเต เดเตเดฑเตเดฑเตโเดตเต เดเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ.
เดเดฆเตเดฏเด, เด เดคเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเต เดเดจเตเดจเต เดจเดฎเตเดฎเตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต? เดเดชเตเดชเด เดจเดฎเตเดฎเตเดเต เดซเตเดฃเดฟเตฝ เดเดจเตเดคเตเดฒเตเดฒเดพเด เดฎเดพเดเตเดเตเด เดเดชเดฟเดฏเตเดฎเดพเดฃเตเดณเตเดณเดคเต.
def sniff_frame():
pcapf = sniff(count=1, timeout=70, filter="dst host 192.168.0.3 and port 5060")
if len(pcapf) == 0:
exit()
frame = pcapf[0]
macaddr = frame.src
print macaddr[:8]
if macaddr[:8] != '80:5e:c0':
exit()
ipaddr = frame[0][IP].src
return macaddr, ipaddr
เดเดตเดฟเดเต เดเดเตเดเตพ เดธเตโเดเดพเดชเตเดชเดฟ เดซเตเดฐเตเดฏเดฟเดเดตเตผเดเตเดเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดธเตโเดจเดฟเดซเต เดซเดเดเตโเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เด เดคเดฟเดจเตเดฑเต เดธเดนเดพเดฏเดคเตเดคเตเดเต เดเดเตเดเตพเดเตเดเต เดฎเตเตปเดเตเดเตเดเดฟ เดจเดฟเดถเตเดเดฏเดฟเดเตเด udp เดชเดพเดเตเดเดฑเตเดฑเต เดฒเดญเดฟเดเตเดเตเด, 70 เดธเตเดเตเดเตปเดกเต เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเด, เดเดเตเดเตพเดเตเดเต เดเดจเตเดจเตเด เดชเดฟเดเดฟเดเตเดเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดเดเตเดเตพ เดชเตเดฑเดคเตเดคเตเดเดเดเตเดเตเดจเตเดจเต.
count=1, timeout=70, filter="dst host 192.168.0.3 and port 5060"
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดเดชเดเดฐเดฃเด เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ Yealink เดเดฃเตเดจเตเดจเต เดเดฑเดชเตเดชเตเดตเดฐเตเดคเตเดคเตเดเดฏเตเด เดเดตเดถเตเดฏเดฎเดพเดฏ เดฎเตเดฒเตเดฏเดเตเดเตพ (ip, mac) เดจเตฝเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เด เดญเตเดฏเตผเดคเตเดฅเดจ เดเดชเดฏเตเดเดฟเดเตเดเต, เดซเตเดฃเดฟเดฒเต เดจเดฟเดฒเดตเดฟเดฒเต เด เดเตเดเตเดฃเตเดเต เดเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเตเดจเตเดจเต. เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเดฒเดตเดฟเดฒเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเตเดฃเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดชเดพเดดเตโเดธเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
def get_phone_inform(ipaddr):
fileconf = requests.get('http://admin:admin@'+ipaddr+'/servlet?phonecfg=get[&accounts=1]')
conf = fileconf.text.split('|')
current_account = conf[2]
return current_account
เด เด เดเตเดเตเดฃเตเดเดฟเดจเตเดฑเต เดชเดพเดธเตโเดตเตเดกเต เดเดฃเตเดเตเดคเตเดคเตเด. เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดเดเตเดเตพ asterisk.sip เดชเดเตเดเดฟเดเดฏเดฟเดฒเตเดเตเดเตเด เด เดคเดฟเดฒเต เดกเดพเดฑเตเดฑเดพ เดซเตเตฝเดกเดฟเดฒเตเดเตเดเตเด เดคเดฟเดฐเดฟเดฏเตเดจเตเดจเต.
def check_account(current_account):
connect = mysql.connector.connect(host='192.168.0.3', database='asterisk', user='voip_wr', password='***')
cursor = connect.cursor()
qwery = 'select data from sip where id=' + current_account + ' and keyword="secret";'
cursor.execute(qwery)
password = cursor.fetchall()
if password == ' ':
exit()
else:
return password
เดถเดฐเดฟ, เด เดตเดธเดพเดจ เดเดเตเดเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ ldap AD-เดฒเตเดเตเดเต เดเดฃเดเตเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดเดฏเตเด เดซเดเดเตเดทเดจเดฟเดฒเตเดเต เดฒเดญเดฟเดเตเด sAMAccountName เดเดชเดฏเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. getpass.getuser() เดจเดฟเดฒเดตเดฟเดฒเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดฑเต cn เดเดเตเดเตเดเตเด (เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด เดคเดฟเตฝ เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดฑเต เดฎเตเดดเตเดตเตป เดชเตเดฐเต เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต).
def conn_ldap(login):
ad = ldap.initialize('ldap://***.local')
ad.simple_bind_s('voip@***.local', 'password')
basedn = 'OU=***,DC=***,DC=LOCAL'
basedn_user = 'OU=***,OU=***,DC=***,DC=LOCAL'
scope = ldap.SCOPE_SUBTREE
filterexp = "(&(sAMAccountName=" + login + ")(ObjectClass=person))"
filterexp2 = "(&(ObjectClass=organizationUnit))"
attrlist = ['cn']
attrlist2 = ['OU']
search = ad.search_s(basedn, scope, filterexp, attrlist)
adname = search[0][1]['cn'][0].decode('utf-8')
if adname == ' ':
search = ad.search_s(basedn_user, scope, filterexp2, attrlist2)
for i in range(1, len(search)+1):
group = search[i][1]['ou'][0]
basedn_user2 = 'OU='+group+','+basedn_user
search = ad.search_s(basedn_user2, scope, filterexp, attrlist)
adname = search[0][1]['cn'][0].decode('utf-8')
if adname != ' ':
return adname
adname = search[0][1]['cn'][0].decode('utf-8')
ad.unbind_s()
return adname
เดเดเตเดเตพ เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดฎเตเตปเดเตเดเตเดเดฟ เดธเตเดทเตเดเดฟเดเตเด เดเดฐเต เดชเดเตเดเดฟเดเดฏเดฟเดฒเตเดเตเดเต เดเดฃเดเตเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดจเตเดจเต (เดเดพเตป เด เดคเต เด เดตเดฟเดเต เดธเตเดทเตเดเดฟเดเตเดเต) เดเตเดเดพเดคเต เดเดเตเดเตพ เดชเด เดฟเดเตเดเดคเตเดฒเตเดฒเดพเด เดจเตฝเดเตเด, เด เดคเดพเดฏเดคเต: ip, mac, เดเดชเดฏเตเดเตเดคเตเดจเดพเดฎเด.
def conn_mysql(query,fquery,macaddr,qwery2):
connect = mysql.connector.connect(host='192.168.0.3', database='voip', user='voip_wr', password='***')
cursor = connect.cursor()
cursor.execute(fquery)
state = cursor.fetchall()
state = bool(state[0][0])
if state == True:
cursor.execute(qwery2)
connect.commit()
connect.close()
else:
cursor.execute(query)
connect.commit()
connect.close()
เดเดเตเดเตพเดเตเดเต เดเดตเดฟเดเต เดจเดฟเตผเดคเตเดคเดพเด, เดเดพเดฐเดฃเด เดเดเตเดเตพ เดเดคเดฟเดจเดเด เดเดฐเต เดกเตเดจเดพเดฎเดฟเดเต เดตเดฟเดฒเดพเดธ เดชเตเดธเตเดคเดเด เดธเตเดทเตเดเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเต, เดจเดฟเดเตเดเตพ เดเตเดฆเดฟเดเตเดเตเดเตเดเดพเด, เดเดจเตเดจเดพเตฝ เดเดพเตป เดเตเดเตเดคเตฝ เดฎเตเดจเตเดจเตเดเตเดเต เดชเตเดฏเดฟ เดเดชเดเดฐเดฃเดเตเดเดณเตเดเต เดธเตเดตเดฏเดฎเตเดตเดฏเตเดณเตเดณ เดชเตเดฐเตเดตเดฟเดทเดจเดฟเดเดเต เดเดตเดฟเดเต เดเตเตผเดคเตเดคเต.
เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดฎเตเตปเดเตเดเตเดเดฟ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเด tftp เดธเตเตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดเตเดเดชเตเดฒเตเดฑเตเดฑเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต, เด เดคเดฟเตฝ เดเดเตเดเตพ เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเตเดเดฏเตเด เด เดคเต mac.cfg เดเดฏเดฟ เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เด เดคเดพเดฏเดคเต, Yealink-เดจเต เดฐเดฃเตเดเต เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเดฃเตเดเต, เดเดจเตเดจเต เดเดเตเดณเดฎเดพเดฃเต, เดฐเดฃเตเดเดพเดฎเดคเตเดคเตเดคเต เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดซเตเดฃเดฟเดจเต เดฌเดพเดงเดเดฎเดพเดฃเต, เด เดคเต mac_phone.cfg เดฐเตเดชเดคเตเดคเดฟเดฒเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด.
เดซเดฏเดฒเดฟเดฒเต เดเดฒเตเดฒเดพ เดฎเดพเดฑเตเดฑเดเตเดเตพเดเตเดเตเด เดถเตเดทเด เด เดคเต เดคเดฟเดฐเดฟเดเต tftp เดธเตเตผเดตเดฑเดฟเดฒเตเดเตเดเต เดธเดเดฐเดเตเดทเดฟเดเตเด เดถเตเดทเด, เดเดชเดเดฐเดฃเด เดชเตเดฐเตเดตเดฟเดทเตป เดเตเดฏเตเดฏเดพเดจเตเด เดฑเตเดฌเตเดเตเดเต เดเตเดฏเตเดฏเดพเดจเตเด เดเดเตเดเตพ เดซเตเดฃเดฟเดจเต เดเดฎเดพเตปเดกเต เดจเตฝเดเตเดจเตเดจเต.
def tftp_file_change(config,place,adname,current_account,current_account_password):
client = tftpy.TftpClient("192.168.0.3", 69)
client.download('template.cfg', place)
fileread = open(place, 'r')
line = fileread.readlines()
fileread.close()
line[5] = (('account.1.label = ').encode('utf-8') + adname.encode('utf-8') + 'n')
line[2] = (('account.1.auth_name = ').encode('utf-8') + current_account.encode('utf-8') + 'n')
line[3] = (('account.1.display_name = ').encode('utf-8') + current_account.encode('utf-8') + 'n')
line[6] = (('account.1.password = ').encode('utf-8') + current_account_password[0][0] + 'n')
filewrite = open(place, 'w')
for i in line:
filewrite.write(i)
filewrite.close()
print place
print config
client.upload(config,place)
requests.get('http://admin:admin@'+ipaddr+'/cgi-bin/ConfigManApp.com?key=AutoP')
requests.get('http://admin:admin@'+ipaddr+'/cgi-bin/ConfigManApp.com?key=Reboot')
เดเดชเดเดฐเดฃเด เดฑเตเดฌเตเดเตเดเต เดเตเดฏเตโเดคเดคเดฟเดจเต เดถเตเดทเด, เดซเตเตบ เดธเตโเดเตเดฐเตเดจเดฟเตฝ เดเดเตเดเดณเตเดเต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏ เดชเตเดฐเต เดฒเดญเดฟเดเตเดเตเด + เดเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดจเตเดฑเต เดฐเตเดชเดคเตเดคเดฟเตฝ เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดถเดฐเดฟเดฏเดพเดฏเดฟ เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเด เดตเดฟเดฒเดพเดธ เดชเตเดธเตเดคเดเด, เดคเตเดเตผเดจเตเดจเต เดเดณเตเดณเดเดเตเดเด เดเดฒเดจเดพเดคเตเดฎเดเดฎเดพเดฏเดฟ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต XML เดเด เดเตเดฑเดเตเดเต PHP เดเด เดเตเตผเดเตเดเตเด เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดถเตเดทเดฟเดเตเดเตเดจเตเดจเดคเต. เด เดคเตเดคเดฐเด เดงเดพเดฐเดพเดณเด เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเตเดฃเตเดเต, YEALINK-เตฝ เดชเตเดฒเตเด เด เดตเดฏเตเดฃเตเดเต.
PS: เดเตเดเตเดคเตฝ เดธเตเดเตเดฒเดฌเดฟเดณเดฟเดฑเตเดฑเดฟเดเตเดเดพเดฏเดฟ, เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดฐเดงเดพเดจ เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ (เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ) เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดซเดฏเดฒเดฟเดฒเตเดเตเดเต เดจเตเดเตเดเดพเตป เดเดดเดฟเดฏเตเด.
เด
เดตเดฒเดเดฌเด: www.habr.com