0

そのため、私は通常は投稿せず、答えを探すために何時間もフォーラムを探し回っていますが、完全に途方に暮れています。

私がしたいこと:

本当に簡単です。OnePlus 5 の MAC アドレスを自動的に変更するスクリプトが必要です。これを行うために必要なすべてのコマンドが既にあり、手動で簡単に実行できますが、それを行うスクリプトを取得しますか? ああ少年...

私が試したこと:

これらは、termux で手動で実行すると、必要な結果が得られるコマンドです。

ip link set dev wlan0 down

macchanger --random wlan0

ip link set dev wlan0 up

ip link set dev wlan0 address xx:xx:xx:xx:xx:xx を使用しない理由は、アドレスを入力する必要があるためです。一方、macchanger はこれを自動的に生成できます。(プログラムで MAC アドレスを生成するための Unix-foo がありません)。

そこで、時系列で次のことを行いました。

1)これらのコマンドを使用してnanoでスクリプトを作成しました。

2) chmod +x changeMAC.sh を使用してスクリプトを実行可能にしました。

これを実行すると、「アクセスが拒否されました」というエラー メッセージが表示されます。

3)最初にSUに入ってからスクリプトを実行しようとしましたが、suが呼び出されたときにtermuxが環境を失うため、「macchanger」が見つからないというエラーが発生します。そこで、su --preserve-environment と同等の、環境を維持した状態で tsu を呼び出して su を取得できる tsu ラッパーをインストールしました。

しかし、これは私が机から頭を叩き始めたところです。

termux ターミナルで次のようにすると:

tsu
./changeMAC.sh

ターミナルはただそこに座って、何もしません。次に「exit」と入力してリターン キーを押すと、「アクセスが拒否されました」というエラー メッセージが 3 つ表示されます。

エラーを回避しようとしました:

4) AutoInput を使用して、ユーザーのように termux に入力しましたが、拒否されました。

5) Tasker > Run Shell からシェル コマンドを直接実行しますが、macchanger パッケージが tasker シェルのスコープにインストールされていないため、これが機能していないと思われます。

6) su --preserve-environment を直接使用しますが、同じことが起こります!

私のスクリプトを要約すると、次のようになります。

\#!/data/data/com.termux/files/usr/bin/sh

sleep 1

ip link set dev wlan0 down

sleep 1

macchanger --random wlan0

sleep 1

ip link set dev wlan0 up

exit

しかし:

1) 標準権限では動作しません

2) tsu/su --preserve-environment を使用すると実行されないように見え、代わりに tsu インスタンスが終了するとエラーが発生します。実行前にインスタンスが終了するのを待っているかのようです...

3) tsu インスタンスから手動で実行すると正常に動作します。

Unix/Linux/Android の複雑さについて、これが機能しない理由を理解して修正するのに十分な知識がないと思います。

どんな助けでも大歓迎です。

一番、

H.

電話の詳細:

Magisk を根幹とする OnePlus 5

ElementalX カーネル

xXx NoLimits カスタム ROM

編集1:

https://gitlab.com/st42/termux-sudoから「sudo」を試しましたが、これには su が必要で、macchanger が見つからず、振り出しに戻ります。

4

1 に答える 1

1

機能しない理由はいくつかあります。

  • 「アクセスが拒否された」場合、スクリプトのコンテキストの環境をシミュレートするだけです。 /proc/ PID_OF_YOUR_PROCESS /env をチェックすると、空の環境が表示されます
  • GNURootDebianのような chroot ソリューションを使用すると、chroot jailに直面します。
  • Android システムで root 権限を持つスクリプト シェルがワイルドです。問題が予想されます。
  • 「&&」または「||」を使用した条件付き連鎖の実行を優先する オーバー スリープ チェーン プロセス'command1;sleep(1);command2;sleep(1)'

私があなたに提案できる最も簡単な解決策はこれです:

 シンプルなアプリケーション android を作成し、メイン アクティビティに以下を追加します。

protected void      onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    try {
        String[] env = {"PATH=/su/bin:/sbin:/system/sbin:/system/bin:/su/xbin:/system/xbin:/system/xbin/"};
        DataOutputStream outputStream;
        outputStream = new DataOutputStream(Runtime.getRuntime().exec("su", env).getOutputStream());
        outputStream.writeBytes("ip link set dev wlan0 down && macchanger --random wlan0 && ip link set dev wlan0 up && exit \n");
        outputStream.flush();
        Toast.makeText(this, "Macchanger DONE", Toast.LENGTH_SHORT).show();
    } catch (IOException e) {
        e.printStackTrace();
        Toast.makeText(this, "Macchanger Error", Toast.LENGTH_SHORT).show();
    }
}

Nexus 5 ルーターで動作しますが、機能を制御するボタンを必ず追加する必要があります。ここにある新しい Mac を印刷してみませんか。

  • cat /sys/class/net/NAME_INTERFACE/address

自動化したい場合は、同じロジックですが、ActivityではなくServiceを使用します。

于 2018-07-09T11:35:40.760 に答える