• This repository has been archived on 19/Mar/2021
  • Stars
    star
    228
  • Rank 175,267 (Top 4 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 4 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The private API client for clubhouse, drop-in audio chat.

Seia-Soto/Clubhouse-API

The API wrapper for Clubhouse application (drop-in audio chat) based on online private API documentation and pwned sources by myself.

Warning

This API client comes without any warrenty. Also, using master branch is not recommended.

Table of Contents


Installation

To install this repository as your dependency, use following command with authorized git client:

yarn add git+https://github.com/Seia-Soto/clubhouse-api#[TAG]

Usage

For working example, you can refer /example folder of this repository. Also, about parameters for each API call functions, you need to inspect functions manually with notes that included with functions.

Scripts

yarn example

Runs example code.

yarn profile

Create new prorfile JSON data by authenticating manually on command line shell.

Reverse Engineering

To reverse engineer Clubhouse audio chat application, only thing we need is jailbroken device. Because there is nothing else except for SSL certificate pinning and we can bypass it even on iOS 14 which is the latest release of iOS by installing some tweaks.

Jailbreaking

Use Odyssey, if you're on iOS 13.6 or higher.

To jailbreak, I recommend you to use Unc0ver instead of others due to stability. Setup AltServer on your PC or Mac and then install Unc0ver

iOS 14

You're not able to use checkm8 exploit if you're on iPhone 11 or higher (higher than A11).

If you're on iOS 14 or higher version, use Checkra1n version 0.12.1 to jailbreak. This this time, you need to disable your iPhone's passcode manually before jailbreaking. Also, DO NOT USE LATEST RELEASE of checkra1n to avoid issue on A11.

Post installation

If you install OpenSSH server to debug on remote PC, you need to CHANGE BOTH root AND mobile USER'S PASSWORD.

passwd root
passwd mobile

Setting up MITM proxy

You can set up MITM proxy with following tools:

Install toolchains and follow steps to decrypt HTTPS traffics:

Fiddler

You need to configure fiddler via the official guide.

MITM Proxy

If you've setup MITM proxy, open http://mitm.it on your iPhone, then install certificate.

Bypassing SSL Pinning

To inspect HTTP packet, there are ways to bypass it easily.

ssl-kill-switch

Install required updates from Cydia for security reasons and install Filza File Manager or terminal emulator to install package file manually. Open following repo and download latest release from it. If you touch share button and then share the file to filza, you can directly install package file.

After installation, turn it on in settings app.

frida-ios-hook

Install iTunes and Python3 on your PC and open iTunes after install. Connect to your iPhone shell via methods described in Wireshark remote debugging section. Clone following repository to some directory:

After, all things are ready, run script via following command:

python3 hook.py -n clubhouse -s frida-scripts\bypass-ssl-ios13.js
  • The script also works on iOS 14.

Wireshark remote debugging

By piping stream over SSH, you can also debug your iPhone's traffic with wireshark installed on PC. Before doing this, install OpenSSH and tcpdump tweak on your iPhone and install Wireshark on your PC.

You may add following paths to system wide environment variable:

  • C:\Program Files\Wireshark

After setting up itunnel-mux or 3uTools from below, open new command line window and start debugging with built-in ssh on Windows 10.

ssh root@localhost -p 2222 -l root tcpdump -s 0 -U -n -w - -i any not port 22 | wireshark -k -i -

itunnel-mux

Download itunnel_mux_rev71.zip from following webpage and add it to path. At this time, you should install iTunes and Apple Mobile Support before continuing.

Open it and start proxy after connecting iPhone.

itunnel_mux --iport 22 --lport 22

3uTools

Also, you can do this easier with 3uTools which only available on Windows. Download and install it to your PC and connect iPhone via USB. Then you can go to Toolbox tab and click Open SSH Tunnel to open SSH port locally.

API

About the API implemented in this project. Only special things will be typed.

Browser support

The code is also available for common web browser as this project doesn't contain any code that requires additional C code build. However, there are many ban reports from web browser use, so if you want to use this on web browser, you should build proxy server.

Voice support

Update 2021/02/21

Voice-related support will not present after today because it is PART OF AGORA, not CLUBHOUSE.

Actually, the capacity of voice support is already present in my repository since src/api/joinChannel.js method implemented. However, there is not enough information to keep users safe from unexpected bans, and I couldn't say You can use this to do Clubhouse!. Other unofficial repositories are already doing voice stuff with Agora SDK built for their language, but I couldn't say that is safe to use. Because, commonly for who operating production service can see every users connecting to specific gateway and it is easy to detect what users are using if user didn't change any thing on official SDK. In future, I am planning to port iOS's Agora voice SDK into Node.JS to reduce ban rate. However, limitation of my iOS ecosystem knowledge, currently only official JavaScript SDK is available to use and there is a huge limitation, which requires web browser context.

For additional information about SDK, please refer:

NG is Next Generation in Agora Ecosystem.*

Electron applications

For Electron based applications, you can easily integrate Agora with my clubhouse-api package. You can see the example that describes how to get RTM token stuff in src/structures/voice.js.

For additional information about Electron SDK, please refer:

client.getStatic(url)

client.getStatic method will return a cross-fetch agent which having essential headers to query static files. For example, you can download profile picture safely by using this method.

const download = url => {
  const fs = require('fs')

  const response = await app.getStatic(url)
  const stream = fs.createWriteStream('./avatar.png')

  return new Promise((resolve, reject) => {
    response.body.pipe(stream)
    response.body.on('error', reject)

    stream.on('finish', resolve)
  })
}

fetch option overrides

To override cross-fetch option object, you need to provide re-usable object to profile.fetchOptions.

const profile = {
  ...profiles.application.a304,
  ...profiles.locales.Korean,
  fetchOptions: {
    agent: ... // NOTE: For proxy stuff;
  }
}

LICENSE

This repository is distributed with MIT License.

More Repositories

1

snowpack-plugin-import-map

A snowpack plugin that maps your imports to Skypack or other sources.
TypeScript
38
star
2

stable-diffusion-webui-m1

The helper script for ARM based Macs.
Shell
30
star
3

chrome-discord-presence

The Discord Rich-Presence(activity) support for Google Chrome(Web Browser), only using Extension.
JavaScript
28
star
4

neatified

Allowing you to copy and right-click on websites.
JavaScript
25
star
5

medium-limit-bypass

A simple chrome extension to bypass medium free reading limit.
JavaScript
22
star
6

ohys-api

Ohys-API is a project to redistribute the anime metadata of Ohys-Raws.
TypeScript
14
star
7

Serium

The way how to get improved creativity and multi-purpose in Discord.
JavaScript
13
star
8

ohys-fanmade

The fanmade site of Ohys-Raws.
JavaScript
9
star
9

dns

A DNS for lightweight privacy enhancement for South Korea. (๊ฐ€๋ฒผ์šด ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ ํ–ฅ์ƒ์„ ์œ„ํ•œ DNS)
8
star
10

invisibleHandshake

Ignore Korea Communications Commission's prevention policy that filters SNI field, by splitting transmission units of connection.
CSS
7
star
11

filter-kr

We aim to remove ads, trackers, or useless elements that won't be listed or in pending state to other ad block list for services.
7
star
12

airi-sato

The Discord automation application.
JavaScript
6
star
13

naverDict

Unofficial naver dictionary API.
JavaScript
6
star
14

windows-ltsc-releases

Simple tool to fetch latest download URLs of LTSC and Enterprise releases from Windows Evaluation Center.
JavaScript
6
star
15

freeflight-interpark

์„ฑ๊ณต์ ์ธ ์ธํ„ฐํŒŒํฌ ํ‹ฐ์ผ“ํŒ…์„ ์œ„ํ•œ ๋ฌด๋ฃŒ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ FreeFlight๋Š” ํ‹ฐ์ผ“ํŒ… ๋งคํฌ๋กœ๋“ค๊ณผ ์†์œผ๋กœ ์‹ธ์šธ ๋•Œ ๋งŽ์€ ์‹ค์ˆ˜๋ฅผ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
TypeScript
6
star
16

BanG-Dream-Live2D

To archive Live2D models of BanG Dream.
5
star
17

maskd-releases

(Documentation) The Node.JS based API server that provides data of nCov-19 of South Korea from the spread sources.
5
star
18

outline-server-multiarch

The multi-arch distribution of Jigsaw's Outline-Server project.
Shell
5
star
19

iniptime

A JavaScript compatible ipTIME router controllable interface library
TypeScript
5
star
20

adshield-defuser

AdShield Defuser is a library that decodes AdShield inlined payloads to restore components.
TypeScript
4
star
21

resty-google-translate

Use Google Translate without any credentials.
JavaScript
4
star
22

wotp

API server for web based OTP system for ease of backing up.
JavaScript
4
star
23

SubRENM

Filename replacement with automated padding based on iteration.
JavaScript
4
star
24

progressive

WIP, Will document later
TypeScript
3
star
25

hitomi-indexer

JavaScript
3
star
26

saebasol-the-server

Shell
3
star
27

ohys-fe

The frontend part of Ohys-API.
JavaScript
3
star
28

swab85-mbti-test

์Šน์šฐ์•„๋น  MBTI, ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ๋งž๋Š” ์ตœ์ ์˜ ํ‘์šฐ ๊ทธ๋ฆฌ๊ณ  ์Šน์šฐ์•„๋น ๋Š” ์–ด๋–ค ์œ ํ˜•์ธ์ง€ ์•Œ์•„๋ณด์„ธ์š”.
JavaScript
3
star
29

embeddable-wg

This package includes bindings of embeddable-wg-library in wireguard-tools library for efficient calls to set up WireGuard devices.
C
2
star
30

ebsswDark

EBS ์˜จ๋ผ์ธํด๋ž˜์Šค ์›น ์‚ฌ์ดํŠธ๋ฅผ ์–ด๋‘ก๊ฒŒ ๋งŒ๋“ค์–ด ๋‹น์‹ ์˜ ๋ˆˆ์„ ์ง€์ผœ์ค๋‹ˆ๋‹ค. (์ด ์Šคํƒ€์ผ์€ ๊ณ ๋“ฑํ•™๊ต EBSSW์— ๋งž์ถฐ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.)
CSS
2
star
31

naver-map-working-time-shower

์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ๋„ค์ด๋ฒ„ ์ง€๋„ ์›น ์‚ฌ์ดํŠธ์—์„œ ํด๋ฆญ๋งŒ์œผ๋กœ ์šด์˜ ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•ด์ค๋‹ˆ๋‹ค.
JavaScript
2
star
32

tinyapp

A project to check if in-app browser injects the script or not on specially for Korean apps.
TypeScript
2
star
33

packit-over

A project to bypass Deep Packet Inspection vendors with Node.JS.
JavaScript
2
star
34

libtwitch

An Extendable unofficial Twitch api client with ease
TypeScript
2
star
35

dailycafe-api

An unofficial API library of the Dailycafe application made for community.
TypeScript
2
star
36

alph

The programmer-friendly API wrapper for hitomi-dot-la.
JavaScript
2
star
37

namuwiki-powerlink-mitigation

Mitigate powerlink ads from NamuWiki.
JavaScript
1
star
38

fastify-kr

Fastify-KR is an unofficial Korean Fastify website built with docusaurus.
JavaScript
1
star
39

ghostery-testing-stage

TypeScript
1
star
40

snapit-pkg

A simple tool to extract resources from Pkg executable dynamically.
JavaScript
1
star
41

cm-h-sasm

ํ•™๊ต ๊ณผ์ œ
C
1
star
42

bluenest-stale

The bluenest project.
TypeScript
1
star
43

discord-watchtower

A simple SQLite based API server to check pings of Discord's voice servers.
JavaScript
1
star
44

atwork

This is portfolio.
TypeScript
1
star
45

bird-on-cloud

The cloud-native Twitter utility for everyone
TypeScript
1
star
46

wbmc

A set of scripts to make Windows Bootable Media easy on macOS.
Shell
1
star
47

server-as-a-script

A simple set of scripts to setup or manage a server easily.
Shell
1
star
48

typescript-boilerplate

A new awesome project! โœจ (with ESM and Yarn Berry)
JavaScript
1
star
49

vertical-radix

The derived algorithm from Radix trie with up-and-down relationship.
TypeScript
1
star
50

libvirtd-scripts

A small set of simple scripts to manage virtual environment on *Alpine Linux* for light users.
Shell
1
star
51

chang-fastify-template

JavaScript
1
star
52

fastify-cookie-maxage

TypeScript
1
star
53

s2c-example

A project to serve consistent type from the server to the client.
TypeScript
1
star
54

TwitchReplayed

JavaScript
1
star
55

korail-api

The simple Korail iOS API client based on got instance.
JavaScript
1
star
56

load-test-tf

HCL
1
star
57

switch-discord-desktop-image-source

Change the `src` property of image elements in DOM `media.discordapp.net` to `cdn.discordapp.com` automatically via JavaScript mutation observer.
JavaScript
1
star
58

ar1s

Ar1s platform for ChatGPT.
TypeScript
1
star