Apply AT commands on Android smartphones
import serial
import serial.tools.list_ports
import time
ser = serial.Serial()
def getNumberOfUsbModemsConnected():
ports = list(serial.tools.list_ports.comports())
modemsConnected = 0
for comPort, description, address in ports:
if 'USB' in description:
modemsConnected += 1
return modemsConnected
def getComPortsAvailable():
comPortsAvailable = []
for port in range(400):
try:
ser = serial.Serial(port)
comPortsAvailable.append((port))
ser.close()
except serial.SerialException:
pass
return comPortsAvailable
def getConnectedComPort():
for port in range(len(getComPortsAvailable())):
connectedComPort = getComPortsAvailable()[port]
try:
ser = serial.Serial(connectedComPort, timeout=1)
ser.write("AT\r")
time.sleep(0.5)
result = ser.read()
ser.close()
if result != "":
return connectedComPort
except:
pass
def sendAtCommand(cmd):
ser.port = getConnectedComPort()
if not ser.isOpen(): ser.open()
ser.write("AT%" +cmd+ "\r")
time.sleep(0.5)
result = ser.read(ser.inWaiting()).replace("", "").replace("", "")
ser.close()
return result
import modem
import random
def sendAtCommand(cmd):
return modem.sendAtCommand(cmd)
def getCurrentValue(param):
return sendAtCommand(param).replace("AT%%%s" % param, "").replace("OK", "").strip()
def setNewValue(param, newValue):
return sendAtCommand(param + "=%s" % newValue)
def luhnResidue(digits):
return sum(sum(divmod(int(d) * (1 + i % 2), 10)) for i, d in enumerate(digits[::-1])) % 10
def getValidImei():
part = ''.join(str(random.randrange(0, 9)) for _ in range(14))
res = luhnResidue('{}{}'.format(part, 0))
return '{}{}'.format(part, -res % 10)
def getValidMacAddress():
mac = [0xC4, random.randint(0x00, 0xff), random.randint(0x00, 0xff), random.randint(0x00, 0xff), random.randint(0x00, 0xff), random.randint(0x00, 0xff)]
return ','.join(''.join(map(lambda x: "%02X" % x, mac)))
def applyUlcw():
return setNewValue("ULCW", "1,1234567812345678,2,1234567812345678,4,1234567812345678,8,1234567812345678,16,1234567812345678")
def applySlType():
currentSlType = getCurrentValue("SLTYPE")
if currentSlType == "0":
slType = setNewValue("SLTYPE", "1")
else:
slType = setNewValue("SLTYPE", "0")
return slType