Sử dụng Python để lấy các thông tin sim


  • administrators

    Chào các bạn,
    Hôm nay tôi sẽ chia sẻ với các bạn một vấn đề khá cơ bản. Đó là sử dụng Python để lấy các thông tin cơ bản của sim từ usb 3G phổ biến hiện nay.
    Đoạn mã như sau:

    import sys
    import time
    import serial
    def command(device, cmd):
        device.flush()
        device.write(cmd)
        time.sleep(0.2)
        wait = device.inWaiting()
        read = device.read(wait)
        result = read.strip().split('\r\n')
        return result
    def get_manufacturer(device):
        return command(device, 'AT+CGMI\r')
    def get_model(device):
        return command(device, 'AT+CGMM\r')
    def get_imei(device):
        return command(device, 'AT+CGSN\r')
    def get_sw_version(device):
        return command(device, 'AT+CGMR\r')
    def get_msisdn(device):
        return command(device, 'AT+CNUM\r')
    def get_imsi(device):
        return command(device, 'AT+CIMI\r')
    if __name__ == '__main__':
        try:
            port = raw_input('Moi ban nhap cong: ')
            dev = serial.Serial(port='COM'+port)
        except Exception, e:
            print e
            sys.exit(1)
        print 'MANUFACTURER: ',
        print get_manufacturer(dev)
        print 'MODEL: ',
        print get_model(dev)
        print 'IMEI: ',
        print get_imei(dev)
        print 'SOFTWARE: ',
        print get_sw_version(dev)
        print 'MSISDN: ',
        print get_msisdn(dev)
        print 'IMSI: ',
        print get_imsi(dev)
        #
        dev.close()
    

    Trong đoạn code trên thì chức năng chính như sau:

    def command(device, cmd):
        device.flush()
        device.write(cmd)
        time.sleep(0.2)
        wait = device.inWaiting()
        read = device.read(wait)
        result = read.strip().split('\r\n')
        return result
    

    Đây là hàm định nghĩa câu lệnh sẽ thao tác với thiết bị usb 3G. Để thao tác được bạn cần xác định cổng com mà bạn sẽ sử dụng.
    Các hàm còn lại như:

    def get_manufacturer(device):
        return command(device, 'AT+CGMI\r')
    def get_model(device):
        return command(device, 'AT+CGMM\r')
    def get_imei(device):
        return command(device, 'AT+CGSN\r')
    def get_sw_version(device):
        return command(device, 'AT+CGMR\r')
    def get_msisdn(device):
        return command(device, 'AT+CNUM\r')
    def get_imsi(device):
        return command(device, 'AT+CIMI\r')
    

    là các hàm lấy thông tin cần thiết. Các thông tin này chủ yếu là truyền các câu lệnh AT. Để biết các tập lệnh AT bạn cần tìm hiểu thêm.
    Cuối cùng là thao tác gọi các hàm để sử dụng:

    try:
    port = raw_input('Moi ban nhap cong: ')
    dev = serial.Serial(port='COM'+port)
    except Exception, e:
    print e
    sys.exit(1)
    print 'MANUFACTURER: ',
    print get_manufacturer(dev)
    print 'MODEL: ',
    print get_model(dev)
    print 'IMEI: ',
    print get_imei(dev)
    print 'SOFTWARE: ',
    print get_sw_version(dev)
    print 'MSISDN: ',
    print get_msisdn(dev)
    print 'IMSI: ',
    print get_imsi(dev)
    

    Kết quả sẽ như sau:
    alt text
    Chúc bạn thành công


Hãy đăng nhập để trả lời
 

Có vẻ như bạn đã mất kết nối tới Cộng đồng Python Việt Nam, vui lòng đợi một lúc để chúng tôi thử kết nối lại.