เจเจฆเฉเจ เจฎเฉเจ เจเจธ เจเฉฐเจชเจจเฉ เจฒเจ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจเจเจ, เจฎเฉเจฐเฉ เจเฉเจฒ เจชเจนเจฟเจฒเจพเจ เจนเฉ IP เจกเจฟเจตเจพเจเจธเจพเจ เจฆเจพ เจเฉเจ เจกเจพเจเจพเจฌเฉเจธ, เจคเจพเจฐเฉ เจตเจพเจฒเฉ เจเจ เจธเจฐเจตเจฐ เจ
เจคเฉ FreeBPX เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจเฉฑเจ เจชเฉเจ เจธเฉเฅค เจเจธเจฆเฉ เจเจฒเจพเจตเจพ, เจเฉฑเจ เจเจจเจพเจฒเจพเจ PBX เจธเฉเจฎเจธเฉฐเจ IDCS500 เจธเจฎเจพเจจเจพเจเจคเจฐ เจตเจฟเฉฑเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจธเฉ เจ
เจคเฉ, เจเจฎ เจคเฉเจฐ 'เจคเฉ, เจเฉฐเจชเจจเฉ เจตเจฟเฉฑเจ เจฎเฉเฉฑเจ เจธเฉฐเจเจพเจฐ เจชเฉเจฐเจฃเจพเจฒเฉ เจธเฉ; IP เจเฉเจฒเฉเจซเฉเจจเฉ เจธเจฟเจฐเจซ เจตเจฟเจเจฐเฉ เจตเจฟเจญเจพเจ เจฒเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจธเฉเฅค เจ
เจคเฉ เจธเจญ เจเฉเจ เจเจธ เจคเจฐเฉเจนเจพเจ เจชเจเจพเจเจฃเจพ เจเจพเจฐเฉ เจฐเฉฑเจเจฃเจพ เจธเฉ, เจชเจฐ เจเฉฑเจ เจตเจงเฉเจ เจฆเจฟเจจ เจธเจพเจฐเจฟเจเจ เจจเฉเฉฐ เจเจเจชเฉ เจเฉเจฒเฉเจซเฉเจจเฉ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจซเจผเจฐเจฎเจพเจจ เจฆเจฟเฉฑเจคเจพ เจเจฟเจ, เจ
เฉฐเจคเจฎ เจคเจพเจฐเฉเจเจพเจ 'เจคเฉ เจธเจนเจฟเจฎเจคเฉ เจฆเจฟเฉฑเจคเฉ เจเจ, เจเจชเจเจฐเจฃ เจเจฐเฉเจฆเฉ เจเจ, เจ
เจคเฉ 21เจตเฉเจ เจธเจฆเฉ เจตเจฟเฉฑเจ เจเฉฑเจฆเจฎ เจจเฉเฉฐ เจคเจฌเจฆเฉเจฒ เจเจฐเจจ เจฆเฉ เจฏเฉเจเจจเจพ เจฒเจพเจเฉ เจเฉเจคเฉ เจเจพเจฃเฉ เจธเจผเฉเจฐเฉ เจนเฉ เจเจเฅค
เจ
เจเจฟเจนเฉ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ เจธเจญ เจคเฉเจ เจชเจนเจฟเจฒเฉ เจเฉฑเจฒ เจเฉ เจเจฟเฉฐเจคเจพ เจเจฐเจจ เจฒเฉฑเจเจฆเฉ เจนเฉ เจเจน เจนเฉ เจเฉเจฒเฉเจซเฉเจจ เจธเฉเฉฑเจเจพเจ เจฆเฉ เจคเฉเจเจผเฉ เจจเจพเจฒ เจตเจง เจฐเจนเฉ เจเจฟเจฃเจคเฉ เจเจฟเจจเฉเจนเจพเจ เจจเฉเฉฐ เจเจฟเจธเฉ เจจเจพ เจเจฟเจธเฉ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจชเฉเจฐเจฌเฉฐเจงเจฟเจค เจเจฐเจจ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจนเฉ, เจฆเฉเจเฉ เจเฉเจเจผ เจเฉ เจฌเจนเฉเจค เจเจฟเฉฐเจคเจพเจเจจเจ เจธเฉ เจเจน เจธเฉ เจซเฉเจจ เจฌเฉเฉฑเจเฅค เจเฉเจเจฐ เจ
เฉฐเจคเจฎ เจฌเจฟเฉฐเจฆเฉ เจชเฉเจฐเจฌเฉฐเจงเจ เจชเจนเจฟเจฒเฉ (เจเฉ เจเจฟ, FreePBX เจฆเฉ เจจเจตเฉเจจเจคเจฎ เจธเฉฐเจธเจเจฐเจฃเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจเจฟเจ เจเจฟเจ เจธเฉ) เจตเจฟเฉฑเจ เจธเจพเจกเฉ เจฎเจฆเจฆ เจเจฐ เจธเจเจฆเจพ เจนเฉ, เจคเจพเจ เจเจฟเจคเจพเจฌ เจจเจพเจฒ เจเฉเจ เจธเจตเจพเจฒ เจชเฉเจฆเจพ เจนเฉเจ:
- เจธเจญ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ, เจเจฆเฉเจ เจเจชเจญเฉเจเจคเจพเจตเจพเจ เจฆเฉ เจธเจฅเจฟเจคเฉ/เจคเจฐเจฒเจคเจพ เจฒเจเจพเจคเจพเจฐ เจฌเจฆเจฒ เจฐเจนเฉ เจนเฉ เจคเจพเจ เจเจธเจฆเฉ เจธเจผเฉเฉฑเจงเจคเจพ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจ เจเจพเจตเฉ?
- เจฆเฉเจเจพ, เจซเจผเฉเจจเจพเจ เจจเฉเฉฐ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจตเจฟเจ เจเจคเจเฉเจเจฐเจจ เจเจฟเจตเฉเจ เจเจฐเจจเจพ เจนเฉเฅค เจ เจคเฉ เจนเจฐ เจตเจพเจฐ เจธเฉฐเจชเจฐเจ เจฆเจพ เจจเจพเจฎ เจจเจนเฉเจ เจญเจฐเจจเจพ?
เจธเจฎเฉฑเจธเจฟเจ เจฆเจฟเจฒเจเจธเจช เจธเฉ, เจนเฉฑเจฒ เจชเจนเฉเฉฐเจเจฃ เจตเจฟเฉฑเจ เจฆเฉเจฐ เจจเจนเฉเจ เจฒเฉฑเจเฉเฅค เจนเฉเจฃ เจฎเฉเจ เจชเฉเจฐเฉ เจธเฉเจเฉ เจฆเฉเจตเจพเจเจเจพ, เจ
เจคเฉ เจซเจฟเจฐ เจ
เจธเฉเจ เจเจธเจจเฉเฉฐ เจเฉเจฐเจฎ เจตเจฟเฉฑเจ เจตเฉเจเจพเจเจเฉ.
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')
เจชเฉเจฐเฉเจเจฐเจพเจฎ เจเจชเจญเฉเจเจคเจพ เจฆเฉ เจเฉฐเจชเจฟเจเจเจฐ 'เจคเฉ เจเฉฑเจฒเจฆเจพ เจนเฉ เจ เจคเฉ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ เจฌเจธเจผเจฐเจคเฉ เจเจฟ เจเฉฐเจชเจฟเจเจเจฐ เจเฉฑเจ เจซเจผเฉเจจ เจฐเจพเจนเฉเจ เจจเฉเฉฑเจเจตเจฐเจ เจจเจพเจฒ เจเฉเฉเจฟเจ เจนเฉเจตเฉ, เจเจฟเจเจเจเจฟ เจฏเฉเจฒเจฟเฉฐเจ 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"
เจ เฉฑเจเฉ, เจ เจธเฉเจ เจเจน เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจเจฆเฉ เจนเจพเจ เจเจฟ เจฏเฉฐเจคเจฐ เจ เจธเจฒ เจตเจฟเฉฑเจ เจฏเฉเจฒเจฟเฉฐเจ เจนเฉ เจ เจคเฉ เจฒเฉเฉเฉเจเจฆเฉ เจฎเฉเฉฑเจฒ (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() เจฎเฉเจเฉเจฆเจพ เจเจชเจญเฉเจเจคเจพ เจฆเจพ เจธเฉเจเจจ เจฒเจ (เจเจฟเจธ เจตเจฟเฉฑเจ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจเจชเจญเฉเจเจคเจพ เจฆเจพ เจชเฉเจฐเจพ เจจเจพเจฎ เจนเฉเฉฐเจฆเจพ เจนเฉ)เฅค
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, username.
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 เจตเจเฉเจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเจฐเจฆเฉ เจนเจพเจเฅค เจฏเจพเจจเฉ, เจฏเฉเจฒเจฟเฉฐเจ เจฒเจ เจฆเฉ เจเจฟเจธเจฎเจพเจ เจฆเฉเจเจ เจธเฉฐเจฐเจเจจเจพเจตเจพเจ เจนเจจ, เจเฉฑเจ เจเจฒเฉเจฌเจฒ เจนเฉ, เจ เจคเฉ เจฆเฉเจเฉ เจเฉฑเจ เจเจพเจธ เจซเจผเฉเจจ 'เจคเฉ เจฒเจพเจเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ เจ เจคเฉ 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