Source code for bbarchivist.carrierchecker
#!/usr/bin/env python3
try:
from . import bbconstants # @UnusedImport
except SystemError:
import bbconstants # @UnresolvedImport @Reimport
try:
from . import networkutils # @UnusedImport
except SystemError:
import networkutils # @UnresolvedImport @Reimport
try:
from . import utilities # @UnusedImport
except SystemError:
import utilities # @UnresolvedImport @Reimport
try:
from . import barutils # @UnusedImport
except SystemError:
import barutils # @UnresolvedImport @Reimport
import os
import hashlib
import shutil
[docs]def doMagic(mcc, mnc, device,
download=False, upgrade=False,
directory=os.getcwd(),
export=False,
blitz=False):
"""
Wrap around :mod:`bbarchivist.networkutils` carrier checking.
:param mcc: Country code.
:type mcc: int
:param mnc: Network code.
:type mnc: int
:param device: Device ID (SXX100-#)
:type device: str
:param download: Whether or not to download. Default is false.
:type download: bool
:param upgrade: Whether or not to use upgrade files. Default is false.
:type upgrade: bool
:param directory: Where to store files. Default is local directory.
:type directory: str
:param export: Whether or not to write URLs to a file. Default is false.
:type export: bool
:param blitz: Whether or not to create a blitz package. Default is false.
:type blitz: bool
"""
try:
devindex = bbconstants._devicelist.index(device.upper())
except ValueError as e:
print(str(e).upper())
print("INVALID DEVICE!")
raise SystemExit
model = bbconstants._modellist[utilities.return_model(devindex)]
family = bbconstants._familylist[utilities.return_family(devindex)]
hwid = bbconstants._hwidlist[devindex]
version = bbconstants._version
print("~~~CARRIERCHECKER VERSION", version + "~~~")
country, carrier = networkutils.carrier_checker(mcc, mnc)
print("COUNTRY:", country.upper())
print("CARRIER:", carrier.upper())
print("DEVICE:", model.upper())
print("VARIANT:", device.upper())
print("HARDWARE ID:", hwid)
print("\nCHECKING CARRIER...")
swv, osv, radv, files = networkutils.carrier_update_request(mcc, mnc, hwid,
download,
upgrade,
blitz)
swv = "10.3.1.1877"
osv = "10.3.1.2726"
radv = "10.3.1.2727"
print("SOFTWARE RELEASE:", swv)
print("OS VERSION:", osv)
print("RADIO VERSION:", radv)
if export:
print("\nEXPORTING...")
with open(swv + "-" + family + ".txt", "w") as target:
target.write("OS: " + osv + "\n")
target.write("RADIO: " + swv + "\n")
target.write("SOFTWARE: " + radv + "\n")
target.write("DEVICE TYPE: " + family.upper() + "\n")
target.write("\nFILES\n")
for i in files:
target.write(i + "\n")
print("\nFINISHED!!!")
if download:
if blitz:
bardir = os.path.join(directory, swv + "-BLITZ")
else:
bardir = os.path.join(directory, swv + "-" + family)
if not os.path.exists(bardir):
os.makedirs(bardir)
filedict = {}
for i in files:
filedict[str(i)] = i
if blitz:
# Hash software version
swhash = hashlib.sha1(swv.encode('utf-8'))
hashedsoftwareversion = swhash.hexdigest()
# Root of all urls
baseurl = "http://cdn.fs.sl.blackberry.com/fs/qnx/production/"
baseurl += hashedsoftwareversion
# List of debrick urls
coreurls = [baseurl + "/winchester.factory_sfi-" +
osv + "-nto+armle-v7+signed.bar",
baseurl + "/qc8960.factory_sfi-" +
osv + "-nto+armle-v7+signed.bar",
baseurl + "/qc8960.factory_sfi_hybrid_qc8x30-" +
osv + "-nto+armle-v7+signed.bar",
baseurl + "/qc8960.factory_sfi_hybrid_qc8974-" +
osv + "-nto+armle-v7+signed.bar"]
for i in coreurls:
filedict[str(i)] = i
# List of radio urls
radiourls = [baseurl + "/m5730-" + radv +
"-nto+armle-v7+signed.bar",
baseurl + "/qc8960-" + radv +
"-nto+armle-v7+signed.bar",
baseurl + "/qc8960.wtr-" + radv +
"-nto+armle-v7+signed.bar",
baseurl + "/qc8960.wtr5-" +
radv + "-nto+armle-v7+signed.bar",
baseurl + "/qc8930.wtr5-" + radv +
"-nto+armle-v7+signed.bar",
baseurl + "/qc8974.wtr2-" + radv +
"-nto+armle-v7+signed.bar"]
for i in radiourls:
filedict[str(i)] = i
print("\nDOWNLOADING...")
download_manager = networkutils.DownloadManager(filedict, bardir)
download_manager.begin_downloads()
if blitz:
print("\nCREATING BLITZ...")
barutils.create_blitz(bardir, swv)
shutil.rmtree(bardir)
print("\nFINISHED!!!")