Skip to content

Instantly share code, notes, and snippets.

#!/bin/bash
trap ctrl_c INT
function ctrl_c() {
sudo mv /var/run/usbmuxx /var/run/usbmuxd
}
sudo mv /var/run/usbmuxd /var/run/usbmuxx
if [[ "$1" == "-x" ]]

Install libimobiledevice from source

MacOS

If you are already install from the package manger like Homebrew, remove it first

brew uninstall ideviceinstaller
brew uninstall --force libimobiledevice
package main
import (
"fmt"
"time"
"math"
)
type Source interface {
Int63() int64
package main
import (
"fmt"
"time"
"strconv"
"net/http"
"io"
"encoding/json"
"os"
package main
import (
"math/rand"
"time"
"io"
"net/http"
"strconv"
)
private static String Encryption(String plain)
{
byte[] plainTextByte = Encoding.ASCII.GetBytes(plain);
byte[] sharedSecret = GetSharedSecret();
byte[] sessionKey = GetSessionKey(sharedSecret);
SecureRandom secureRandom = new SecureRandom();
byte[] nonce = new byte[CryptoConstant.NonceSize];
byte[] aad = new byte[CryptoConstant.AadSize];
secureRandom.NextBytes(nonce);
aad = Encoding.ASCII.GetBytes(GetKeyId());
private static byte[] GetSessionKey(byte[] sharedSecret)
{
String salt = PlayerPrefs.GetString(_PlayerPrefs.Salt);
if(String.IsNullOrEmpty(salt))
{
throw new PlayerPrefsItemNotFoundException(_PlayerPrefs.Salt);
}
var pdb = new Pkcs5S2ParametersGenerator(new Sha256Digest());
pdb.Init(sharedSecret, Conversion.StringToByteArray(salt), CryptoConstant.Iterations);
var key = (KeyParameter)pdb.GenerateDerivedMacParameters(CryptoConstant.KdfKeySize * 8);
private static byte[] GetSharedSecret()
{
String clientPrivateKeyPem = PlayerPrefs.GetString(_PlayerPrefs.ClientPrivateKey);
String serverPublicKeyDer = PlayerPrefs.GetString(_PlayerPrefs.ServerPublicKey);
if(String.IsNullOrEmpty(clientPrivateKeyPem))
{
throw new PlayerPrefsItemNotFoundException(_PlayerPrefs.ClientPrivateKey);
}
if(String.IsNullOrEmpty(serverPublicKeyDer))
{
def key_exchange(self, client_pub_key) -> tuple[bool, dict]:
try:
_salt = os.urandom(16)
shared_secret = self.get_shared_secret(client_pub_key)
session_key = self.get_shared_secret_kdf(_salt, shared_secret)
keyId = self.generate_kid(session_key)
kex_result = {
'KeyId': keyId,
'Salt': _salt.hex(),
'ServerPublicKey': self.serv_priv_key.public_key().public_bytes(
def generate_kid(self, session_key) -> str:
keyId = str(uuid.uuid4())
self._redis.set(keyId, session_key)
return keyId