Le titre manque. Après tout, les ingénieurs d'infrastructure d'aujourd'hui doivent être en mesure de faire l'un des serveurs en appuyant simplement sur un bouton. J'ai essayé de renifler le nième paquet de décoction et de récupérer l'événement du bouton du tableau de bord (python sur ubuntu) en appuyant simplement sur le cli aws comme ci-dessous.
Il s'agit d'une reproduction de l'article de référence suivant. How I Hacked Amazon’s $5 WiFi Button to track Baby Data – Medium
Commentaires faciles à comprendre. -> Commentaire sur le bouton Amazon Dash Super Speed - Qiita
$ sudo apt-get install tcpdump python-crypto python-scapy
#Je veux utiliser scapy, mais je peux ajouter ceci et cela
$ pip show scapy
Name: scapy
Version: 2.2.3
Location: /usr/lib/python2.7/dist-packages
Requires:
#OK si scapy peut être installé
Créez et exécutez dash-listen-1.py.
dash-listen-1.py
from scapy.all import *
def arp_display(pkt):
if pkt[ARP].op == 1: #who-has (request)
if pkt[ARP].psrc == '0.0.0.0': # ARP Probe
print "ARP Probe from: " + pkt[ARP].hwsrc
print sniff(prn=arp_display, filter="arp", store=0, count=10)
--Remplacer la sonde ARP si nécessaire
$ sudo python dash-listen-1.py
WARNING: No route found for IPv6 destination :: (no default route?)
#Comme il est sorti jusqu'à présent, appuyez sur le bouton Dash
ARP Probe from: XX:XX:XX:XX:XX:XX
ARP Probe from: XX:XX:XX:XX:XX:XX
ARP Probe from: XX:XX:XX:XX:XX:XX
^C[]
$
Vous pouvez maintenant obtenir l'adresse MAC.
Continuez à créer et à exécuter dash-listen-2.py.
dash-listen-2.py
from scapy.all import *
def arp_display(pkt):
if pkt[ARP].op == 1:
if pkt[ARP].psrc == '0.0.0.0': # ARP probe as your env
if pkt[ARP].hwsrc == 'XX:XX:XX:XX:XX:XX': # MAC address as your env
print "Amazon dash button Pushed."
sys.exit()
print sniff(prn=arp_display, filter="arp", store=0, count=10)
--Remplacer la sonde ARP si nécessaire
$ sudo python dash-listen-2.py
WARNING: No route found for IPv6 destination :: (no default route?)
#Comme il est sorti jusqu'à présent, appuyez sur le bouton Dash
Amazon dash button Pushed.
$
Vous pouvez maintenant récupérer l'événement.
Amazon Web Service Dash button Eh bien, c'est finalement le sujet principal, mais à la fin, je viens de remplacer le ↑ "print" Amazon dash button Pushed. "" Avec la commande bâclée de aws cli.
Voici les hypothèses qui ont été préparées.
--Introduit aws cli et certifié avec aws configure --ec2 ami existe déjà (cette fois, il est dans la bibliothèque Amazon Linux) --lambda fonction créée (et IAM)
Créez dash-ec2.py.
dash-ec2.py
from scapy.all import *
def arp_display(pkt):
if pkt[ARP].op == 1: #who-has (request)
if pkt[ARP].psrc == '0.0.0.0': # ARP probe as your env
if pkt[ARP].hwsrc == 'XX:XX:XX:XX:XX:XX': # MAC address as your env
print "Amazon EC2 dash button Pushed."
os.system("aws ec2 run-instances --image-id ami-0c11b26d --count 1 --instance-type t2.micro")
#Juste ajouté ici(Le libellé de l'impression dessus est également légèrement modifié)
sys.exit()
print sniff(prn=arp_display, filter="arp", store=0, count=10)
--Création approximative d'une instance EC2 --ami-0c11b26d est un type simple d'Amazon Linux
Ci-dessous, la console avant exécution (pas d'instance)
Puis exécutez.
$ sudo python dash-ec2.py
WARNING: No route found for IPv6 destination :: (no default route?)
#Comme il est sorti jusqu'à présent, appuyez sur le bouton Dash
Amazon EC2 dash button Pushed.
{
"OwnerId": "XXXXXXXXXXX",
"ReservationId": "XXXXXXXXXX",
"Groups": [],
"Instances": [
{
"Monitoring": {
"State": "disabled"
},
"PublicDnsName": "",
"RootDeviceType": "ebs",
"State": {
"Code": 0,
"Name": "pending"
},
"EbsOptimized": false,
"LaunchTime": "2016-12-06T11:48:25.000Z",
"PrivateIpAddress": "XXX.XXX.XXX.XXX",
"ProductCodes": [],
"VpcId": "vpc-XXXXXXXXXX",
"StateTransitionReason": "",
"InstanceId": "i-98abXXXXX",
"ImageId": "ami-0c11b26d",
...
Ci-dessous se trouve la console après l'exécution. (Vous pouvez instancier avec un seul bouton! I-98abXXXXX)
Cette fois, j'ai créé à l'avance une fonction normale appelée hello world. Il sort simplement "Hello from Lambda".
Créez dash-lambda.py.
dash-lambda.py
from scapy.all import *
def arp_display(pkt):
if pkt[ARP].op == 1: #who-has (request)
if pkt[ARP].psrc == '0.0.0.0': # ARP probe as your env
if pkt[ARP].hwsrc == 'XX:XX:XX:XX:XX:XX': # MAC address as your env
print "Aws lambda button Pushed."
os.system("aws lambda invoke --invocation-type RequestResponse --function-name helloworld --region ap-northeast-1 --log-type Tail --payload '{}' output.txt")
#Juste ajouté ici(Le libellé de l'impression dessus est également légèrement modifié)
sys.exit()
print sniff(prn=arp_display, filter="arp", store=0, count=10)
Puis exécutez.
$ sudo python dash-lambda.py
WARNING: No route found for IPv6 destination :: (no default route?)
#Comme il est sorti jusqu'à présent, appuyez sur le bouton Dash
Aws lambda button Pushed.
{
"LogResult": "XXXXXXXXXXXXXX",
"StatusCode": 200
}
$ cat output.txt
"Hello from Lambda"$
#Le résultat de sortie est pris!
J'ai pu le faire comme ça.
Je ne suis pas sorti même si je l'ai recherché sur Google, alors j'ai pensé que c'était seulement maintenant et je l'ai fait avec élan ――Cependant, si vous recherchez sur Google "Amazon dash button (langage de programmation)", vous pouvez trouver de nombreux articles d'outre-mer, ce qui est pratique. --Si Amazon IoT Button apparaît au Japon en premier lieu ... [J'ai essayé de désassembler AWS IoT Button #reinvent | Developers.IO](http://dev.classmethod.jp/cloud/aws/decomposition-aws- bouton iot /) ―― En fait, au début, je pensais que je le ferais avec des fenêtres, mais c'était le plus ennuyeux de mettre scapy, et quand j'ai remarqué, j'ai mis ubuntu dans le livre de chrome et je l'ai fait dessus «J'ai été un peu impressionné par le fait que vous puissiez créer un serveur en appuyant simplement sur un bouton, et je pense qu'il se vendra aux ingénieurs d'applications internes à un bon prix. ――Et lorsque vous jouez, la notification du smartphone est intéressant w
――Depuis que j'ai fini de l'utiliser, je l'ai désactivé et réinitialisé. Aide d'Amazon.co.jp: Désactiver le bouton de tableau de bord
c'est tout.
Recommended Posts