fix: builder now uses files provisioners and auto-update installs project data (ref #470)
This commit is contained in:
parent
1600d8cbd1
commit
be414e57b3
14
builder/data/etc/systemd/system/bettercap.service
Normal file
14
builder/data/etc/systemd/system/bettercap.service
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=bettercap api.rest service.
|
||||||
|
Documentation=https://bettercap.org
|
||||||
|
Wants=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
PermissionsStartOnly=true
|
||||||
|
ExecStart=/usr/bin/bettercap-launcher
|
||||||
|
Restart=always
|
||||||
|
RestartSec=30
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
15
builder/data/etc/systemd/system/pwnagotchi.service
Normal file
15
builder/data/etc/systemd/system/pwnagotchi.service
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=pwnagotchi Deep Reinforcement Learning instrumenting bettercap for WiFI pwning.
|
||||||
|
Documentation=https://pwnagotchi.ai
|
||||||
|
Wants=network.target
|
||||||
|
After=pwngrid-peer.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
PermissionsStartOnly=true
|
||||||
|
ExecStart=/usr/bin/pwnagotchi-launcher
|
||||||
|
Restart=always
|
||||||
|
RestartSec=30
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
15
builder/data/etc/systemd/system/pwngrid-peer.service
Normal file
15
builder/data/etc/systemd/system/pwngrid-peer.service
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=pwngrid peer service.
|
||||||
|
Documentation=https://pwnagotchi.ai
|
||||||
|
Wants=network.target
|
||||||
|
After=bettercap.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
PermissionsStartOnly=true
|
||||||
|
ExecStart=/usr/bin/pwngrid -keys /etc/pwnagotchi -address 127.0.0.1:8666 -client-token /root/.api-enrollment.json -wait -log /var/log/pwngrid-peer.log -iface mon0
|
||||||
|
Restart=always
|
||||||
|
RestartSec=30
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
12
builder/data/usr/bin/bettercap-launcher
Executable file
12
builder/data/usr/bin/bettercap-launcher
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
/usr/bin/monstart
|
||||||
|
if [[ $(ifconfig | grep usb0 | grep RUNNING) ]] || [[ !$(grep '1' /sys/class/net/eth0/carrier) ]]; then
|
||||||
|
# if override file exists, go into auto mode
|
||||||
|
if [ -f /root/.pwnagotchi-auto ]; then
|
||||||
|
/usr/bin/bettercap -no-colors -caplet pwnagotchi-auto -iface mon0
|
||||||
|
else
|
||||||
|
/usr/bin/bettercap -no-colors -caplet pwnagotchi-manual -iface mon0
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
/usr/bin/bettercap -no-colors -caplet pwnagotchi-auto -iface mon0
|
||||||
|
fi
|
10
builder/data/usr/bin/bootblink
Executable file
10
builder/data/usr/bin/bootblink
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
for i in $(seq 1 "$1");
|
||||||
|
do
|
||||||
|
echo 0 >/sys/class/leds/led0/brightness
|
||||||
|
sleep 0.3
|
||||||
|
echo 1 >/sys/class/leds/led0/brightness
|
||||||
|
sleep 0.3
|
||||||
|
done
|
||||||
|
echo 0 >/sys/class/leds/led0/brightness
|
||||||
|
sleep 0.3
|
2
builder/data/usr/bin/monstart
Executable file
2
builder/data/usr/bin/monstart
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
iw phy phy0 interface add mon0 type monitor && ifconfig mon0 up
|
2
builder/data/usr/bin/monstop
Executable file
2
builder/data/usr/bin/monstop
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
ifconfig mon0 down && iw dev mon0 del
|
15
builder/data/usr/bin/pwnagotchi-launcher
Executable file
15
builder/data/usr/bin/pwnagotchi-launcher
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# blink 10 times to signal ready state
|
||||||
|
/usr/bin/bootblink 10 &
|
||||||
|
# start a detached screen session with bettercap
|
||||||
|
if [[ $(ifconfig | grep usb0 | grep RUNNING) ]] || [[ !$(grep '1' /sys/class/net/eth0/carrier) ]]; then
|
||||||
|
# if override file exists, go into auto mode
|
||||||
|
if [ -f /root/.pwnagotchi-auto ]; then
|
||||||
|
rm /root/.pwnagotchi-auto
|
||||||
|
/usr/local/bin/pwnagotchi
|
||||||
|
else
|
||||||
|
/usr/local/bin/pwnagotchi --manual
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
/usr/local/bin/pwnagotchi
|
||||||
|
fi
|
@ -1,12 +1,14 @@
|
|||||||
{
|
{
|
||||||
"builders": [{
|
"builders": [
|
||||||
"name": "pwnagotchi",
|
{
|
||||||
"type": "arm-image",
|
"name": "pwnagotchi",
|
||||||
"iso_url" : "https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2019-07-12/2019-07-10-raspbian-buster-lite.zip",
|
"type": "arm-image",
|
||||||
"iso_checksum_type":"sha256",
|
"iso_url": "https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2019-07-12/2019-07-10-raspbian-buster-lite.zip",
|
||||||
"iso_checksum":"9e5cf24ce483bb96e7736ea75ca422e3560e7b455eee63dd28f66fa1825db70e",
|
"iso_checksum_type": "sha256",
|
||||||
"last_partition_extra_size" : 3221225472
|
"iso_checksum": "9e5cf24ce483bb96e7736ea75ca422e3560e7b455eee63dd28f66fa1825db70e",
|
||||||
}],
|
"last_partition_extra_size": 3221225472
|
||||||
|
}
|
||||||
|
],
|
||||||
"provisioners": [
|
"provisioners": [
|
||||||
{
|
{
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
@ -18,7 +20,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type":"ansible-local",
|
"type": "ansible-local",
|
||||||
"playbook_file": "pwnagotchi.yml",
|
"playbook_file": "pwnagotchi.yml",
|
||||||
"command": "ANSIBLE_FORCE_COLOR=1 PYTHONUNBUFFERED=1 PWN_VERSION={{user `pwn_version`}} PWN_HOSTNAME={{user `pwn_hostname`}} ansible-playbook"
|
"command": "ANSIBLE_FORCE_COLOR=1 PYTHONUNBUFFERED=1 PWN_VERSION={{user `pwn_version`}} PWN_HOSTNAME={{user `pwn_hostname`}} ansible-playbook"
|
||||||
},
|
},
|
||||||
@ -27,6 +29,46 @@
|
|||||||
"inline": [
|
"inline": [
|
||||||
"sed -i 's/^#\\(.+\\)/\\1/g' /etc/ld.so.preload"
|
"sed -i 's/^#\\(.+\\)/\\1/g' /etc/ld.so.preload"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "data/usr/bin/bettercap-launcher",
|
||||||
|
"destination": "/usr/bin/bettercap-launcher"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "data/usr/bin/pwnagotchi-launcher",
|
||||||
|
"destination": "/usr/bin/pwnagotchi-launcher"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "data/usr/bin/monstop",
|
||||||
|
"destination": "/usr/bin/monstop"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "data/usr/bin/bootblink",
|
||||||
|
"destination": "/usr/bin/bootblink"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "data/usr/bin/monstart",
|
||||||
|
"destination": "/usr/bin/monstart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "data/etc/systemd/system/pwngrid-peer.service",
|
||||||
|
"destination": "/etc/systemd/system/pwngrid-peer.service"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "data/etc/systemd/system/pwnagotchi.service",
|
||||||
|
"destination": "/etc/systemd/system/pwnagotchi.service"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "data/etc/systemd/system/bettercap.service",
|
||||||
|
"destination": "/etc/systemd/system/bettercap.service"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -279,77 +279,6 @@
|
|||||||
remote_src: yes
|
remote_src: yes
|
||||||
mode: 0755
|
mode: 0755
|
||||||
|
|
||||||
- name: create bootblink script
|
|
||||||
copy:
|
|
||||||
dest: /usr/bin/bootblink
|
|
||||||
mode: 0755
|
|
||||||
content: |
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
for i in $(seq 1 "$1");
|
|
||||||
do
|
|
||||||
echo 0 >/sys/class/leds/led0/brightness
|
|
||||||
sleep 0.3
|
|
||||||
echo 1 >/sys/class/leds/led0/brightness
|
|
||||||
sleep 0.3
|
|
||||||
done
|
|
||||||
echo 0 >/sys/class/leds/led0/brightness
|
|
||||||
sleep 0.3
|
|
||||||
|
|
||||||
- name: create pwnagotchi-launcher script
|
|
||||||
copy:
|
|
||||||
dest: /usr/bin/pwnagotchi-launcher
|
|
||||||
mode: 0755
|
|
||||||
content: |
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
# blink 10 times to signal ready state
|
|
||||||
/usr/bin/bootblink 10 &
|
|
||||||
# start a detached screen session with bettercap
|
|
||||||
if [[ $(ifconfig | grep usb0 | grep RUNNING) ]] || [[ !$(grep '1' /sys/class/net/eth0/carrier) ]]; then
|
|
||||||
# if override file exists, go into auto mode
|
|
||||||
if [ -f /root/.pwnagotchi-auto ]; then
|
|
||||||
rm /root/.pwnagotchi-auto
|
|
||||||
/usr/local/bin/pwnagotchi
|
|
||||||
else
|
|
||||||
/usr/local/bin/pwnagotchi --manual
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
/usr/local/bin/pwnagotchi
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: create bettercap-launcher script
|
|
||||||
copy:
|
|
||||||
dest: /usr/bin/bettercap-launcher
|
|
||||||
mode: 0755
|
|
||||||
content: |
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
/usr/bin/monstart
|
|
||||||
if [[ $(ifconfig | grep usb0 | grep RUNNING) ]] || [[ !$(grep '1' /sys/class/net/eth0/carrier) ]]; then
|
|
||||||
# if override file exists, go into auto mode
|
|
||||||
if [ -f /root/.pwnagotchi-auto ]; then
|
|
||||||
/usr/bin/bettercap -no-colors -caplet pwnagotchi-auto -iface mon0
|
|
||||||
else
|
|
||||||
/usr/bin/bettercap -no-colors -caplet pwnagotchi-manual -iface mon0
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
/usr/bin/bettercap -no-colors -caplet pwnagotchi-auto -iface mon0
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: create monstart script
|
|
||||||
copy:
|
|
||||||
dest: /usr/bin/monstart
|
|
||||||
mode: 0755
|
|
||||||
content: |
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
iw phy phy0 interface add mon0 type monitor && ifconfig mon0 up
|
|
||||||
|
|
||||||
- name: create monstop script
|
|
||||||
copy:
|
|
||||||
dest: /usr/bin/monstop
|
|
||||||
mode: 0755
|
|
||||||
content: |
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
ifconfig mon0 down && iw dev mon0 del
|
|
||||||
|
|
||||||
- name: create hdmion script
|
- name: create hdmion script
|
||||||
copy:
|
copy:
|
||||||
dest: /usr/bin/hdmion
|
dest: /usr/bin/hdmion
|
||||||
@ -471,7 +400,7 @@
|
|||||||
copy:
|
copy:
|
||||||
dest: /etc/motd
|
dest: /etc/motd
|
||||||
content: |
|
content: |
|
||||||
(◕‿‿◕) {{pwnagotchi.hostname}} (pwnagotchi-{{pwnagotchi.version}})
|
(◕‿‿◕) {{pwnagotchi.hostname}}
|
||||||
|
|
||||||
Hi! I'm a pwnagotchi, please take good care of me!
|
Hi! I'm a pwnagotchi, please take good care of me!
|
||||||
Here are some basic things you need to know to raise me properly!
|
Here are some basic things you need to know to raise me properly!
|
||||||
@ -507,71 +436,6 @@
|
|||||||
apt:
|
apt:
|
||||||
autoremove: yes
|
autoremove: yes
|
||||||
|
|
||||||
- name: add pwngrid-peer service to systemd
|
|
||||||
copy:
|
|
||||||
dest: /etc/systemd/system/pwngrid-peer.service
|
|
||||||
content: |
|
|
||||||
[Unit]
|
|
||||||
Description=pwngrid peer service.
|
|
||||||
Documentation=https://pwnagotchi.ai
|
|
||||||
Wants=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
PermissionsStartOnly=true
|
|
||||||
ExecStart=/usr/bin/pwngrid -keys /etc/pwnagotchi -address 127.0.0.1:8666 -client-token /root/.api-enrollment.json -wait -log /var/log/pwngrid-peer.log -iface mon0
|
|
||||||
Restart=always
|
|
||||||
RestartSec=30
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
notify:
|
|
||||||
- reload systemd services
|
|
||||||
|
|
||||||
- name: add bettercap service to systemd
|
|
||||||
copy:
|
|
||||||
dest: /etc/systemd/system/bettercap.service
|
|
||||||
content: |
|
|
||||||
[Unit]
|
|
||||||
Description=bettercap api.rest service.
|
|
||||||
Documentation=https://bettercap.org
|
|
||||||
Wants=network.target
|
|
||||||
After=pwngrid.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
PermissionsStartOnly=true
|
|
||||||
ExecStart=/usr/bin/bettercap-launcher
|
|
||||||
Restart=always
|
|
||||||
RestartSec=30
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
notify:
|
|
||||||
- reload systemd services
|
|
||||||
|
|
||||||
- name: add pwnagotchi service to systemd
|
|
||||||
copy:
|
|
||||||
dest: /etc/systemd/system/pwnagotchi.service
|
|
||||||
content: |
|
|
||||||
[Unit]
|
|
||||||
Description=pwnagotchi Deep Reinforcement Learning instrumenting bettercap for WiFI pwning.
|
|
||||||
Documentation=https://pwnagotchi.ai
|
|
||||||
Wants=network.target
|
|
||||||
After=bettercap.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
PermissionsStartOnly=true
|
|
||||||
ExecStart=/usr/bin/pwnagotchi-launcher
|
|
||||||
Restart=always
|
|
||||||
RestartSec=30
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
notify:
|
|
||||||
- reload systemd services
|
|
||||||
|
|
||||||
- name: enable services
|
- name: enable services
|
||||||
systemd:
|
systemd:
|
||||||
name: "{{ item }}"
|
name: "{{ item }}"
|
||||||
|
@ -145,6 +145,18 @@ def install(display, update):
|
|||||||
|
|
||||||
os.system("cd %s && pip3 install ." % source_path)
|
os.system("cd %s && pip3 install ." % source_path)
|
||||||
|
|
||||||
|
data_path = os.path.join(source_path, "builder/data")
|
||||||
|
for source in glob.glob("%s/**" % data_path, recursive=True):
|
||||||
|
if os.path.isfile(source):
|
||||||
|
dest = source.replace(data_path, '')
|
||||||
|
dest_path = os.path.dirname(dest)
|
||||||
|
if not os.path.isdir(dest_path):
|
||||||
|
os.makedirs(dest_path)
|
||||||
|
logging.info("[update] installing %s to %s ..." % (source, dest))
|
||||||
|
os.system("mv '%s' '%s'" % (source, dest))
|
||||||
|
|
||||||
|
os.system("systemctl daemon-reload")
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user