예제 #1
0
 def __init__(self, parent=None):
     super(RegisterWidget, self).__init__(parent)
     self.kik_client = KikClient()
     self.interceptor = RequestInterceptor(self)
     self.error_label = QLabel()
     self.webview = QWebEngineView()
     self.login_button = QPushButton()
     self.birthday_edit = QDateEdit()
     self.password_edit = QLineEdit()
     self.email_edit = QLineEdit()
     self.username_edit = QLineEdit()
     self.last_name_edit = QLineEdit()
     self.first_name_edit = QLineEdit()
     self.init_ui()
예제 #2
0
def execute(cmd=sys.argv[1:]):
    parser = ArgumentParser(description="Unofficial Kik api")
    parser.add_argument('-u', '--username', help="Kik username", required=True)
    parser.add_argument('-p', '--password', help="Kik password", required=True)

    args = parser.parse_args(cmd)
    kik = KikClient(args.username, args.password)
    CmdLine(kik).run()
예제 #3
0
파일: app.py 프로젝트: woggler/kik-desktop
 def login(self, username, password):
     print("Attempt login")
     try:
         kik_client = KikClient(username,
                                password,
                                debug_level=DebugLevel.VERBOSE)
     except Exception as e:
         print("Login failed")
         traceback.print_exc()
         self.login_widget.login_failed()
         return
     self.kik_thread = KikThread(kik_client)
     self.init_kik_thread()
     self.kik_thread.start()
     self.central_widget.setCurrentWidget(self.main_widget)
     self.config['username'] = username
     self.config['password'] = password
     self.save()
예제 #4
0
def main():
    username, password = "******", "your_kik_password"
    kik_client = KikClient(username, password)

    print("[+] Listening for incoming events.")

    # main events loop
    while True:

        info = kik_client.get_next_event()
        if "type" not in info:
            continue

        if info["type"] == "message_read":
            print("[+] Human has read the message (user " + info["from"] +
                  ", message id: " + info["message_id"] + ")")

        elif info["type"] == "is_typing":
            if info["is_typing"]:
                print("[+] Human is typing (user " + info["from"] + ")")
            else:
                print("[+] Human is not typing (user " + info["from"] + ")")

        elif info["type"] == "message":
            partner = info["from"]
            print("[+] Human says: \"" + info["body"] + "\" (user " + partner +
                  ")")

            kik_client.send_read_confirmation(partner, info["message_id"])
            replay = "You said '" + info["body"] + "'!"
            kik_client.send_is_typing(partner, "true")
            time.sleep(0.2 * len(replay))
            kik_client.send_is_typing(partner, "false")
            kik_client.send_message(partner, replay)

        elif info["type"] == "end":
            print("[!] Server ended communication.")
            break

    print("[+] Done!")
    kik_client.close()
예제 #5
0
def main():
    username, password = "******", "password"
    kik_client = KikClient(username, password)

    chat_partners = kik_client.get_chat_partners()
    print("[+] Chats\n{}".format("\n".join(
        [peer['jid'] for peer in chat_partners.values()])))

    # let's talk
    username = "******"
    kik_client.send_is_typing(username, "true")
    time.sleep(0.5)
    kik_client.send_is_typing(username, "false")
    kik_client.send_message(username, "hi from bot!")

    print("[+] Done!")
    kik_client.close()
예제 #6
0
class RegisterWidget(QWidget):
    login_request = pyqtSignal(str, str)

    def __init__(self, parent=None):
        super(RegisterWidget, self).__init__(parent)
        self.kik_client = KikClient()
        self.interceptor = RequestInterceptor(self)
        self.error_label = QLabel()
        self.webview = QWebEngineView()
        self.login_button = QPushButton()
        self.birthday_edit = QDateEdit()
        self.password_edit = QLineEdit()
        self.email_edit = QLineEdit()
        self.username_edit = QLineEdit()
        self.last_name_edit = QLineEdit()
        self.first_name_edit = QLineEdit()
        self.init_ui()

    def init_ui(self):
        main_box = QVBoxLayout()
        main_box.setSpacing(20)
        main_box.setAlignment(Qt.AlignCenter)

        label = QLabel("Sign up")
        main_box.addWidget(label, alignment=Qt.AlignCenter)

        self.first_name_edit.setPlaceholderText("First name")
        main_box.addWidget(self.first_name_edit, alignment=Qt.AlignCenter)

        self.last_name_edit.setPlaceholderText("Last name")
        main_box.addWidget(self.last_name_edit, alignment=Qt.AlignCenter)

        self.username_edit.setPlaceholderText("Username")
        self.username_edit.setValidator(UserNameValidator(self.kik_client))
        main_box.addWidget(self.username_edit, alignment=Qt.AlignCenter)

        self.email_edit.setPlaceholderText("Email")
        main_box.addWidget(self.email_edit, alignment=Qt.AlignCenter)

        self.password_edit.setEchoMode(QLineEdit.Password)
        self.password_edit.setPlaceholderText("Password")
        main_box.addWidget(self.password_edit, alignment=Qt.AlignCenter)

        self.birthday_edit.setCalendarPopup(True)
        self.birthday_edit.setDisplayFormat("yyyy-MM-dd")

        birthday_layout = QHBoxLayout()
        birthday_label = QLabel("Birthday:")
        birthday_layout.addWidget(birthday_label, alignment=Qt.AlignCenter)
        birthday_layout.addWidget(self.birthday_edit, alignment=Qt.AlignCenter)
        birthday_layout.setAlignment(Qt.AlignCenter)
        main_box.addLayout(birthday_layout)

        self.login_button.setText("Sign up")
        self.login_button.clicked.connect(self.sign_up)
        main_box.addWidget(self.login_button, alignment=Qt.AlignCenter)

        self.error_label.setObjectName("errorLabel")
        main_box.addWidget(self.error_label, alignment=Qt.AlignCenter)

        main_box.addWidget(self.webview, alignment=Qt.AlignCenter)

        self.setLayout(main_box)
        self.show()

    def sign_up(self):
        self.error_label.setText("")
        first_name = self.first_name_edit.text()
        last_name = self.last_name_edit.text()
        username = self.username_edit.text()
        email = self.email_edit.text()
        password = self.password_edit.text()
        birthday = self.birthday_edit.date()
        try:
            self.kik_client.sign_up(email, username, password, first_name,
                                    last_name, birthday.toString("yyyy-MM-dd"))
        except KikCaptchaException as e:
            url = e.captcha_url + "&callback_url=https://kik.com/captcha-url"
            self.webview.load(QUrl(url))
            self.webview.page().profile().setHttpUserAgent(
                "Mozilla/5.0 (Linux; Android 7.1.2; Nexus 7 Build/NJH47F; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.78 Safari/537.36"
            )
            self.webview.page().profile().setRequestInterceptor(
                self.interceptor)
        except Exception as e:
            self.error_label.setText(str(e))
            return False

    def on_captcha_response(self, captcha_result):
        print("Received response: {}".format(captcha_result))
        self.sign_up_captcha(captcha_result)

    def sign_up_captcha(self, captcha_result):
        self.error_label.setText("")
        first_name = self.first_name_edit.text()
        last_name = self.last_name_edit.text()
        username = self.username_edit.text()
        email = self.email_edit.text()
        password = self.password_edit.text()
        birthday = self.birthday_edit.date()
        try:
            node = self.kik_client.sign_up(email, username, password,
                                           first_name, last_name,
                                           birthday.toString("yyyy-MM-dd"),
                                           captcha_result)
            print(node)
            self.login_request.emit(username, password)
        except:
            self.error_label.setText("Account creation failed")