Dieser Artikel stellt eine Methode vor, um SMS-Verifizierungscodes, die von Android empfangen werden, automatisch in die Windows 10-Zwischenablage zu kopieren, unter Verwendung der Ruby-Programmiersprache.

Einführung
Das Eingeben von 2FA-Codes ist mühsam, aber mit diesem Programm können Sie SMS-Verifizierungscodes von Ihrem Android-Gerät automatisch in die Windows 10-Zwischenablage kopieren.
Nun, schauen wir uns das Verfahren an.
Gesamtablauf
Die Implementierung dieses Programms ist nicht schwierig, aber es kann Zeit kosten, da mehrere Technologien kombiniert werden müssen. Sobald es jedoch implementiert ist, können Sie dies anwenden, um andere Android-Daten zu manipulieren.
- Wenn Sie eine SMS auf Ihrem Android-Gerät empfangen, verwenden Sie IFTTT, um eine Webanfrage mit JSON-Daten zu stellen.
- Ein Sinatra-Server auf Ubuntu empfängt diese Daten, parst und filtert sie und speichert den Text in einer Datei.
- Kopieren Sie die Daten aus der Textdatei über WSL (Windows Subsystem for Linux) in die Zwischenablage.
Vorbereitung
Folgende Vorbereitungen sind erforderlich.
- Verwenden Sie einen WiFi-Router, der Port-Weiterleitung unterstützt. Dies ermöglicht es Ihnen, von einer globalen IP-öffentlichen URL aus auf einen lokal laufenden Server zuzugreifen.
- Richten Sie WSL (Windows Subsystem for Linux) ein. Dies ist ein Tool mit Vorteilen für Linux- und Programmieranfänger.
Ich verwende WSL von Anfang an, also werde ich die Vorteile von WSL für Linux- und Programmieranfänger erklären WSL bash on ubuntu on windows Installationsverfahren
- Richten Sie die Ruby-Umgebung ein. Dies ist notwendig, um Sinatra auszuführen.
sudo apt update
sudo apt install build-essential patch zlib1g-dev liblzma-dev ruby{,-dev} -y
sudo gem install bundler
mkdir -p /mnt/c/pg/ruby_dev && cd $_
sudo bundle init
vim Gemfile
sudo bundle install
Gemfile-Inhalt:
gem "pry"
gem "sinatra"
Verfahren
Nun, schauen wir uns das spezifische Verfahren an.
- Richten Sie die Port-Weiterleitung auf Ihrem WiFi-Router ein.

-
Erstellen Sie ein Applet in IFTTT.
- Ereignis: “Any new SMS received”
- Aktion: “Webhooks”
- Titel (Beispiel): “If Any new SMS received, then post to WSL”
- URL (Beispiel): “http://[Your_IP]:8005/androidsms”
- HTTP-Methode: “POST”
- Content Type: “JSON”
- Body:
{"ContactName": "{{ContactName}}", "Text": "{{Text}}", "OccurredAt": "{{OccurredAt}}", "FromNumber": "{{FromNumber}}"}

- Mounten Sie Windows-Ordner, um die Dateisynchronisation zu ermöglichen.
sudo mount -t cifs //192.168.0.167/_sync_ ~/share -o user=hoge,pass=hoge,dir_mode=0777,file_mode=0777
So mounten Sie Windows 10-freigegebene Ordner auf Ubuntu 18.04 So mounten (synchronisieren) Sie Windows 10-freigegebene Ordner auf Ubuntu 16.04
- Starten Sie Sinatra.
# dev.rb
require "sinatra"
require "open3"
require 'json'
require 'pry'
Encoding.default_external = 'UTF-8'
get "/" do
puts "y"
end
post "/androidsms" do
@body = request.body.read
json = JSON.parse(@body)
text = json["Text"]
stdout, stderr, statusCode = Open3.capture3(%(bash -ic "printf '#{text}' > /home/yuis/share/clipboard.txt || echo ''"))
puts stdout, stderr, statusCode
end
Sinatra starten:
sudo bundle exec ruby -o 0.0.0.0
-q dev.rb

- Richten Sie IFTTT auf der Android-Seite ein.
Installieren Sie die IFTTT-App und aktivieren Sie das Applet.
- Führen Sie auf der WSL-Seite ein Skript aus, um Textdaten regelmäßig zu überwachen.
Führen Sie das folgende Skript aus.
while true; do
echo -ne "$(isodate)\tNothing updated on the clipboard.\033[0K\r"
[[ -s "$SHAREDDIR/clipboard.txt" ]] && {
cat "$SHAREDDIR/clipboard.txt" | clip.exe ; > "$SHAREDDIR/clipboard.txt" ; printf "Copied text to clipboard." ;
}
sleep 2s
done

- Testen Sie tatsächlich den Betrieb. Senden Sie eine SMS von Android und überprüfen Sie, ob der Text in die Zwischenablage kopiert wird.
Dies sollte den Ablauf vom Empfang der SMS, Senden an IFTTT, Verarbeitung in Sinatra, Dateisynchronisation und Kopieren in die Zwischenablage in WSL ausführen. Da viele Tools verwendet werden, kann die Fehlerbehebung mühsam sein, aber wenn Sie Probleme haben, fragen Sie bitte.
Nachwort
Schließlich können Sie nach dem Abrufen von Textdaten in Ruby reguläre Ausdrücke und gsub verwenden, um die in die Zwischenablage kopierten Zeichenfolgen zu begrenzen. Sie können den Text nach Bedarf filtern und anpassen.