mirror of
https://github.com/jayofelony/pwnagotchi.git
synced 2025-07-01 18:37:27 -04:00
Compare commits
55 Commits
Author | SHA1 | Date | |
---|---|---|---|
20715351af | |||
1d3c781d12 | |||
bd51b4330f | |||
f216a21132 | |||
5ae357c3dc | |||
ed9afe6856 | |||
25d932fa9b | |||
ebd25d50b0 | |||
27e784a5d7 | |||
c02efb5224 | |||
107d366c82 | |||
488968ba7f | |||
0dd8f72c95 | |||
0e274af5a0 | |||
8627c8800d | |||
53ed6f61c6 | |||
835523241b | |||
9a40567daa | |||
eab331686d | |||
e1d8001fb4 | |||
3cc172a526 | |||
41afe302d9 | |||
5bcca7e89b | |||
4a12436942 | |||
d8b6363d37 | |||
b3d8a44208 | |||
3fb91498cd | |||
7587f38c28 | |||
d7fefa78f0 | |||
1ef3a88679 | |||
291ef39563 | |||
16d80a09e6 | |||
4ffad03c91 | |||
0638832532 | |||
f895b06978 | |||
f410feb2bb | |||
1ffe6c4e3d | |||
dfbfd7f891 | |||
a50695aef2 | |||
829a6962d6 | |||
ce1315b85f | |||
6a2703cc27 | |||
502e856934 | |||
dffcbbf447 | |||
333804c3bb | |||
50b1ceed81 | |||
877b9fbba3 | |||
8724ca546d | |||
961d3a536a | |||
c882d0b67a | |||
12fd081ae0 | |||
e1be0f7674 | |||
396b30f780 | |||
e7d8d632a0 | |||
5a6ec7b4b8 |
1
.github/FUNDING.yml
vendored
1
.github/FUNDING.yml
vendored
@ -1,4 +1,3 @@
|
|||||||
# These are supported funding model platforms
|
# These are supported funding model platforms
|
||||||
|
|
||||||
patreon: pwnagotchi_torch
|
|
||||||
github: jayofelony
|
github: jayofelony
|
||||||
|
212
.github/workflows/publish.yml
vendored
Normal file
212
.github/workflows/publish.yml
vendored
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
name: Publish
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: 'Version number'
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
publish:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Remove unnecessary directories
|
||||||
|
run: |
|
||||||
|
sudo rm -rf /usr/share/dotnet
|
||||||
|
sudo rm -rf /opt/ghc
|
||||||
|
sudo rm -rf /usr/local/share/boost
|
||||||
|
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
||||||
|
|
||||||
|
- name: Check disk space
|
||||||
|
run: df -BG
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Validate tag
|
||||||
|
id: tag-setter
|
||||||
|
run: |
|
||||||
|
TAG=${{ github.event.inputs.version }}
|
||||||
|
if [[ $TAG =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||||
|
echo "Tag $TAG is valid."
|
||||||
|
echo "TAG=$TAG" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "Tag $TAG is not a valid semantic version. Aborting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: 3.9
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt-get update && sudo apt-get install -y libdbus-1-dev curl unzip gettext qemu-utils qemu qemu-user-static binfmt-support
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
- name: Update QEMU
|
||||||
|
run: |
|
||||||
|
sudo update-binfmts --enable qemu-aarch64
|
||||||
|
echo $(ls /usr/bin/qemu-aarch64-static)
|
||||||
|
|
||||||
|
- name: Restart binfmt-support
|
||||||
|
run: sudo service binfmt-support restart
|
||||||
|
|
||||||
|
- name: Mount binfmt_misc
|
||||||
|
run: |
|
||||||
|
if ! grep -qs '/proc/sys/fs/binfmt_misc ' /proc/mounts; then
|
||||||
|
echo "Mounting binfmt_misc"
|
||||||
|
sudo mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Restart binfmt-support
|
||||||
|
run: sudo service binfmt-support restart
|
||||||
|
|
||||||
|
- name: Update Languages
|
||||||
|
run: make update_langs
|
||||||
|
|
||||||
|
- name: Compile Languages
|
||||||
|
run: make compile_langs
|
||||||
|
|
||||||
|
- name: Check disk space
|
||||||
|
run: df -BG
|
||||||
|
|
||||||
|
- name: Check qemu-user-static package
|
||||||
|
run: |
|
||||||
|
echo "Checking qemu-user-static package..."
|
||||||
|
dpkg -s qemu-user-static && echo "qemu-user-static is installed." || echo "qemu-user-static is NOT installed."
|
||||||
|
|
||||||
|
- name: Check binfmt-support service
|
||||||
|
run: |
|
||||||
|
echo "Checking binfmt-support service..."
|
||||||
|
service binfmt-support status && echo "binfmt-support service is running." || echo "binfmt-support service is NOT running."
|
||||||
|
|
||||||
|
- name: Check binfmt_misc filesystem
|
||||||
|
run: |
|
||||||
|
echo "Checking binfmt_misc filesystem..."
|
||||||
|
mount | grep binfmt_misc && echo "binfmt_misc is mounted." || echo "binfmt_misc is NOT mounted."
|
||||||
|
echo $(ls /proc/sys/fs/binfmt_misc | grep qemu-aarch64)
|
||||||
|
|
||||||
|
- name: Run Makefile
|
||||||
|
run: make
|
||||||
|
env:
|
||||||
|
PWN_VERSION: ${{ steps.tag-setter.outputs.TAG }}
|
||||||
|
|
||||||
|
- name: PiShrink
|
||||||
|
run: |
|
||||||
|
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
|
||||||
|
chmod +x pishrink.sh
|
||||||
|
sudo mv pishrink.sh /usr/local/bin
|
||||||
|
find /home/runner/work/ -type f -name "*.img" -exec sudo pishrink.sh {} \;
|
||||||
|
|
||||||
|
- name: Compress .img files
|
||||||
|
run: |
|
||||||
|
find /home/runner/work/ -type f -name "*.img" -exec xz --no-warn {} \;
|
||||||
|
|
||||||
|
- name: Create tag
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const version = "${{ steps.tag-setter.outputs.TAG }}"
|
||||||
|
console.log(`Creating tag ${version}`)
|
||||||
|
await github.rest.git.createRef({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
ref: `refs/tags/${version}`,
|
||||||
|
sha: context.sha
|
||||||
|
})
|
||||||
|
|
||||||
|
- name: Create Release
|
||||||
|
id: create_release
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const tag = "${{ steps.tag-setter.outputs.TAG }}"
|
||||||
|
console.log(`Creating release with tag: ${tag}`)
|
||||||
|
const release = await github.rest.repos.createRelease({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
tag_name: tag,
|
||||||
|
name: tag,
|
||||||
|
draft: false,
|
||||||
|
prerelease: true,
|
||||||
|
generate_release_notes: true
|
||||||
|
})
|
||||||
|
console.log(`Created release with id: ${release.data.id}`)
|
||||||
|
return release.data.id
|
||||||
|
|
||||||
|
- name: Upload Release Asset
|
||||||
|
id: upload-release-asset
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
const release_id = "${{ steps.create_release.outputs.result }}";
|
||||||
|
const asset_content_type = 'application/octet-stream';
|
||||||
|
const distDir = '/home/runner/work/';
|
||||||
|
|
||||||
|
const uploadFile = async (filePath) => {
|
||||||
|
if (fs.lstatSync(filePath).isDirectory()) {
|
||||||
|
const files = fs.readdirSync(filePath);
|
||||||
|
for (const file of files) {
|
||||||
|
await uploadFile(path.join(filePath, file));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Check if the file has a .xz extension
|
||||||
|
if (path.extname(filePath) === '.xz') {
|
||||||
|
console.log(`Uploading ${filePath}...`);
|
||||||
|
|
||||||
|
const asset_name = path.basename(filePath);
|
||||||
|
const asset_size = fs.statSync(filePath).size;
|
||||||
|
const asset = fs.createReadStream(filePath);
|
||||||
|
|
||||||
|
const response = await github.rest.repos.uploadReleaseAsset({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
release_id: release_id,
|
||||||
|
name: asset_name,
|
||||||
|
data: asset,
|
||||||
|
headers: {
|
||||||
|
'content-type': asset_content_type,
|
||||||
|
'content-length': asset_size
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(`Uploaded ${filePath}: ${response.data.browser_download_url}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await uploadFile(distDir);
|
||||||
|
|
||||||
|
- name: Update Release
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const release_id = "${{ steps.create_release.outputs.result }}"
|
||||||
|
console.log(`Updating release with id: ${release_id}`)
|
||||||
|
github.rest.repos.updateRelease({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
release_id: release_id,
|
||||||
|
tag_name: "${{ steps.tag-setter.outputs.TAG }}",
|
||||||
|
name: "${{ steps.tag-setter.outputs.TAG }}",
|
||||||
|
draft: false,
|
||||||
|
prerelease: false
|
||||||
|
})
|
||||||
|
|
||||||
|
- name: Save environment variable
|
||||||
|
run: echo "${{ steps.tag-setter.outputs.TAG }}" > env_var.txt
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: env-var
|
||||||
|
path: env_var.txt
|
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@ -3,7 +3,7 @@
|
|||||||
<component name="Black">
|
<component name="Black">
|
||||||
<option name="sdkName" value="Python 3.11 (pwnagotchi)" />
|
<option name="sdkName" value="Python 3.11 (pwnagotchi)" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (pwnagotchi-torch-bookworm)" project-jdk-type="Python SDK" />
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10" project-jdk-type="Python SDK" />
|
||||||
<component name="PythonCompatibilityInspectionAdvertiser">
|
<component name="PythonCompatibilityInspectionAdvertiser">
|
||||||
<option name="version" value="3" />
|
<option name="version" value="3" />
|
||||||
</component>
|
</component>
|
||||||
|
2
.idea/pwnagotchi.iml
generated
2
.idea/pwnagotchi.iml
generated
@ -4,7 +4,7 @@
|
|||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="Python 3.10 (pwnagotchi-torch-bookworm)" jdkType="Python SDK" />
|
<orderEntry type="jdk" jdkName="Python 3.10" jdkType="Python SDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PyDocumentationSettings">
|
<component name="PyDocumentationSettings">
|
||||||
|
6
Makefile
6
Makefile
@ -1,4 +1,4 @@
|
|||||||
PACKER_VERSION := 1.10.0
|
PACKER_VERSION := 1.10.1
|
||||||
PWN_HOSTNAME := pwnagotchi
|
PWN_HOSTNAME := pwnagotchi
|
||||||
PWN_VERSION := $(shell cut -d"'" -f2 < pwnagotchi/_version.py)
|
PWN_VERSION := $(shell cut -d"'" -f2 < pwnagotchi/_version.py)
|
||||||
|
|
||||||
@ -64,5 +64,5 @@ pwnagotchi: $(SDIST) builder/pwnagotchi.json.pkr.hcl builder/raspberrypi64.yml $
|
|||||||
image: pwnagotchi
|
image: pwnagotchi
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
- rm -rf build dist pwnagotchi.egg-info
|
- rm -rf dist pwnagotchi.egg-info
|
||||||
- rm -f $(PACKER)
|
- rm -f $(PACKER)
|
@ -1,13 +1,14 @@
|
|||||||
# Pwnagotchi-Torch
|
# Pwnagotchi-Torch
|
||||||
<a href="https://github.com/jayofelony/pwnagotchi-bookworm/releases/latest"><img alt="Release" src="https://img.shields.io/github/release/jayofelony/pwnagotchi-bookworm.svg"></a><br/>
|
<a href="https://github.com/jayofelony/pwnagotchi-bookworm/releases/latest"><img alt="Release" src="https://img.shields.io/github/release/jayofelony/pwnagotchi-bookworm.svg"></a><br/>
|
||||||
**This fork of [Pwnagotchi](https://www.pwnagotchi.ai) is only for 64-bit Raspberry Pi's. Such as the 02W, 3(b+) and 4(b) ~~and the new Raspberry Pi 5~~!!.**
|
**This fork of [Pwnagotchi](https://www.pwnagotchi.ai) is only for 64-bit Raspberry Pi's. Such as the 02W, 3(b+) and 4(b) and the new Raspberry Pi 5!!.**
|
||||||
|
|
||||||
|
The RPi5 can only be used headless currently. (without display.)
|
||||||
|
|
||||||
It seems the Pi 5 is unable to run in monitor mode, will keep you updated on this.
|
|
||||||
|
|
||||||
If you are using an older 32-bit version Raspberry Pi, ZeroWH, use this [fork](https://github.com/jayofelony/pwnagotchi-torch/releases/tag/v2.6.4) and make sure you download the `armhf` version.
|
If you are using an older 32-bit version Raspberry Pi, ZeroWH, use this [fork](https://github.com/jayofelony/pwnagotchi-torch/releases/tag/v2.6.4) and make sure you download the `armhf` version.
|
||||||
|
|
||||||
---
|
---
|
||||||
Download the latest image file [here](https://github.com/jayofelony/pwnagotchi-bookworm/releases/tag/v2.7.9), and let it auto-update from here on out.
|
Download the latest image file [here](https://github.com/jayofelony/pwnagotchi-bookworm/releases/tag/v2.8.2), and let it auto-update from here on out.
|
||||||
|
|
||||||
**Use RPi imager to flash, please don't flash a new user as this will mess with logs created.**
|
**Use RPi imager to flash, please don't flash a new user as this will mess with logs created.**
|
||||||
- Select `Use Custom Image`
|
- Select `Use Custom Image`
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
# Specifies amount of zram devices to create.
|
|
||||||
# By default, zramswap-start will use all available cores.
|
|
||||||
#CORES=1
|
|
||||||
|
|
||||||
# Specifies the amount of RAM that should be used for zram
|
|
||||||
# based on a percentage the total amount of available memory
|
|
||||||
PERCENTAGE=60
|
|
||||||
|
|
||||||
# Specifies a static amount of RAM that should be used for
|
|
||||||
# the ZRAM devices, this is in MiB
|
|
||||||
#ALLOCATION=256
|
|
||||||
|
|
||||||
# Specifies the priority for the swap devices, see swapon(2)
|
|
||||||
# for more details.
|
|
||||||
#PRIORITY=100
|
|
26
builder/data/etc/dphys-swapfile
Normal file
26
builder/data/etc/dphys-swapfile
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# /etc/dphys-swapfile - user settings for dphys-swapfile package
|
||||||
|
# author Neil Franklin, last modification 2010.05.05
|
||||||
|
# copyright ETH Zuerich Physics Departement
|
||||||
|
# use under either modified/non-advertising BSD or GPL license
|
||||||
|
|
||||||
|
# this file is sourced with . so full normal sh syntax applies
|
||||||
|
|
||||||
|
# the default settings are added as commented out CONF_*=* lines
|
||||||
|
|
||||||
|
|
||||||
|
# where we want the swapfile to be, this is the default
|
||||||
|
#CONF_SWAPFILE=/var/swap
|
||||||
|
|
||||||
|
# set size to absolute value, leaving empty (default) then uses computed value
|
||||||
|
# you most likely don't want this, unless you have an special disk situation
|
||||||
|
CONF_SWAPSIZE=2048
|
||||||
|
|
||||||
|
# set size to computed value, this times RAM size, dynamically adapts,
|
||||||
|
# guarantees that there is enough swap without wasting disk space on excess
|
||||||
|
#CONF_SWAPFACTOR=2
|
||||||
|
|
||||||
|
# restrict size (computed and absolute!) to maximally this limit
|
||||||
|
# can be set to empty for no limit, but beware of filled partitions!
|
||||||
|
# this is/was a (outdated?) 32bit kernel limit (in MBytes), do not overrun it
|
||||||
|
# but is also sensible on 64bit to prevent filling /var or even / partition
|
||||||
|
#CONF_MAXSWAP=2048
|
@ -5,4 +5,4 @@ iface usb0 inet static
|
|||||||
network 10.0.0.0
|
network 10.0.0.0
|
||||||
broadcast 10.0.0.255
|
broadcast 10.0.0.255
|
||||||
gateway 10.0.0.1
|
gateway 10.0.0.1
|
||||||
metric 101
|
metric 101
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=pwnagotchi Deep Reinforcement Learning instrumenting bettercap for WiFI pwning.
|
Description=pwnagotchi Deep Reinforcement Learning instrumenting bettercap for WiFI pwning.
|
||||||
Documentation=https://pwnagotchi.ai
|
Documentation=https://pwnagotchi.org
|
||||||
Wants=network.target
|
Wants=network.target
|
||||||
After=pwngrid-peer.service
|
After=pwngrid-peer.service
|
||||||
|
|
||||||
@ -8,6 +8,7 @@ After=pwngrid-peer.service
|
|||||||
Type=simple
|
Type=simple
|
||||||
WorkingDirectory=~
|
WorkingDirectory=~
|
||||||
ExecStart=/usr/bin/pwnagotchi-launcher
|
ExecStart=/usr/bin/pwnagotchi-launcher
|
||||||
|
ExecStopPost=/usr/bin/bash -c "if egrep -qi 'personality.clear_on_exit[ =]*true' /etc/pwnagotchi/config.toml ; then /usr/local/bin/pwnagotchi --clear; fi"
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=30
|
RestartSec=30
|
||||||
TasksMax=infinity
|
TasksMax=infinity
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
# This is not working quite yet
|
|
||||||
# https://github.com/mkaczanowski/packer-builder-arm/pull/172
|
|
||||||
packer {
|
packer {
|
||||||
required_plugins {
|
required_plugins {
|
||||||
#arm = {
|
arm = {
|
||||||
# version = "~> 1"
|
version = "1.0.0"
|
||||||
# source = "github.com/cdecoux/builder-arm"
|
source = "github.com/cdecoux/builder-arm"
|
||||||
#}
|
}
|
||||||
ansible = {
|
ansible = {
|
||||||
source = "github.com/hashicorp/ansible"
|
source = "github.com/hashicorp/ansible"
|
||||||
version = "~> 1"
|
version = "~> 1"
|
||||||
@ -28,8 +26,8 @@ source "arm" "rpi64-pwnagotchi" {
|
|||||||
file_target_extension = "xz"
|
file_target_extension = "xz"
|
||||||
file_unarchive_cmd = ["unxz", "$ARCHIVE_PATH"]
|
file_unarchive_cmd = ["unxz", "$ARCHIVE_PATH"]
|
||||||
image_path = "../../../pwnagotchi-rpi-bookworm-${var.pwn_version}-arm64.img"
|
image_path = "../../../pwnagotchi-rpi-bookworm-${var.pwn_version}-arm64.img"
|
||||||
qemu_binary_source_path = "/usr/bin/qemu-aarch64-static"
|
qemu_binary_source_path = "/usr/libexec/qemu-binfmt/aarch64-binfmt-P"
|
||||||
qemu_binary_destination_path = "/usr/bin/qemu-aarch64-static"
|
qemu_binary_destination_path = "/usr/libexec/qemu-binfmt/aarch64-binfmt-P"
|
||||||
image_build_method = "resize"
|
image_build_method = "resize"
|
||||||
image_size = "9G"
|
image_size = "9G"
|
||||||
image_type = "dos"
|
image_type = "dos"
|
||||||
@ -51,6 +49,8 @@ source "arm" "rpi64-pwnagotchi" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# a build block invokes sources and runs provisioning steps on them. The
|
# a build block invokes sources and runs provisioning steps on them. The
|
||||||
# documentation for build blocks can be found here:
|
# documentation for build blocks can be found here:
|
||||||
# https://www.packer.io/docs/from-1.5/blocks/build
|
# https://www.packer.io/docs/from-1.5/blocks/build
|
||||||
@ -74,10 +74,6 @@ build {
|
|||||||
inline = ["chmod +x /usr/bin/*"]
|
inline = ["chmod +x /usr/bin/*"]
|
||||||
}
|
}
|
||||||
|
|
||||||
provisioner "shell" {
|
|
||||||
inline = ["dpkg --add-architecture armhf"]
|
|
||||||
}
|
|
||||||
|
|
||||||
provisioner "file" {
|
provisioner "file" {
|
||||||
destination = "/etc/systemd/system/"
|
destination = "/etc/systemd/system/"
|
||||||
sources = [
|
sources = [
|
||||||
@ -86,7 +82,6 @@ build {
|
|||||||
"data/etc/systemd/system/pwngrid-peer.service",
|
"data/etc/systemd/system/pwngrid-peer.service",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
provisioner "file" {
|
provisioner "file" {
|
||||||
destination = "/etc/update-motd.d/01-motd"
|
destination = "/etc/update-motd.d/01-motd"
|
||||||
source = "data/etc/update-motd.d/01-motd"
|
source = "data/etc/update-motd.d/01-motd"
|
||||||
@ -95,11 +90,7 @@ build {
|
|||||||
inline = ["chmod +x /etc/update-motd.d/*"]
|
inline = ["chmod +x /etc/update-motd.d/*"]
|
||||||
}
|
}
|
||||||
provisioner "shell" {
|
provisioner "shell" {
|
||||||
inline = [
|
inline = ["apt-get -y --allow-releaseinfo-change update", "apt-get -y dist-upgrade", "apt-get install -y --no-install-recommends ansible"]
|
||||||
"apt-get -y --allow-releaseinfo-change update",
|
|
||||||
"apt-get -y dist-upgrade",
|
|
||||||
"apt-get install -y --no-install-recommends ansible"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
provisioner "ansible-local" {
|
provisioner "ansible-local" {
|
||||||
command = "ANSIBLE_FORCE_COLOR=1 PYTHONUNBUFFERED=1 PWN_VERSION=${var.pwn_version} PWN_HOSTNAME=${var.pwn_hostname} ansible-playbook"
|
command = "ANSIBLE_FORCE_COLOR=1 PYTHONUNBUFFERED=1 PWN_VERSION=${var.pwn_version} PWN_HOSTNAME=${var.pwn_hostname} ansible-playbook"
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
- fstrim.timer
|
- fstrim.timer
|
||||||
- pwnagotchi.service
|
- pwnagotchi.service
|
||||||
- pwngrid-peer.service
|
- pwngrid-peer.service
|
||||||
- zramswap.service
|
|
||||||
disable:
|
disable:
|
||||||
- apt-daily-upgrade.service
|
- apt-daily-upgrade.service
|
||||||
- apt-daily-upgrade.timer
|
- apt-daily-upgrade.timer
|
||||||
@ -78,6 +77,7 @@
|
|||||||
- build-essential
|
- build-essential
|
||||||
- curl
|
- curl
|
||||||
- dkms
|
- dkms
|
||||||
|
- dphys-swapfile
|
||||||
- fbi
|
- fbi
|
||||||
- firmware-atheros
|
- firmware-atheros
|
||||||
- firmware-brcm80211
|
- firmware-brcm80211
|
||||||
@ -102,7 +102,6 @@
|
|||||||
- libbz2-dev
|
- libbz2-dev
|
||||||
- libc-ares-dev
|
- libc-ares-dev
|
||||||
- libc6-dev
|
- libc6-dev
|
||||||
- libc6:armhf
|
|
||||||
- libcap-dev
|
- libcap-dev
|
||||||
- libcurl-ocaml-dev
|
- libcurl-ocaml-dev
|
||||||
- libdbus-1-dev
|
- libdbus-1-dev
|
||||||
@ -117,10 +116,7 @@
|
|||||||
- libgmp3-dev
|
- libgmp3-dev
|
||||||
- libgstreamer1.0-0
|
- libgstreamer1.0-0
|
||||||
- libhdf5-dev
|
- libhdf5-dev
|
||||||
- libisl23:armhf
|
|
||||||
- liblapack-dev
|
- liblapack-dev
|
||||||
- libmpc3:armhf
|
|
||||||
- libmpfr6:armhf
|
|
||||||
- libncursesw5-dev
|
- libncursesw5-dev
|
||||||
- libnetfilter-queue-dev
|
- libnetfilter-queue-dev
|
||||||
- libopenblas-dev
|
- libopenblas-dev
|
||||||
@ -135,7 +131,6 @@
|
|||||||
- libsqlite3-dev
|
- libsqlite3-dev
|
||||||
- libssl-dev
|
- libssl-dev
|
||||||
- libssl-ocaml-dev
|
- libssl-ocaml-dev
|
||||||
- libstdc++6:armhf
|
|
||||||
- libswscale5
|
- libswscale5
|
||||||
- libtiff6
|
- libtiff6
|
||||||
- libtool
|
- libtool
|
||||||
@ -173,8 +168,9 @@
|
|||||||
- wl
|
- wl
|
||||||
- xxd
|
- xxd
|
||||||
- zlib1g-dev
|
- zlib1g-dev
|
||||||
- zram-tools
|
environment:
|
||||||
|
ARCHFLAGS: "-arch aarch64"
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
# First we install packages
|
# First we install packages
|
||||||
- name: install packages
|
- name: install packages
|
||||||
@ -295,22 +291,9 @@
|
|||||||
state: absent
|
state: absent
|
||||||
path: /usr/local/src/hcxtools
|
path: /usr/local/src/hcxtools
|
||||||
|
|
||||||
# Install nexmon to fix wireless scanning (takes 2.5G of space)
|
|
||||||
- name: symlink 1
|
|
||||||
file:
|
|
||||||
src: "/usr/lib/arm-linux-gnueabihf/libisl.so.23.2.0"
|
|
||||||
dest: "/usr/lib/arm-linux-gnueabihf/libisl.so.10"
|
|
||||||
state: link
|
|
||||||
|
|
||||||
- name: symlink 2
|
|
||||||
file:
|
|
||||||
src: "/usr/lib/arm-linux-gnueabihf/libmpfr.so.6.2.0"
|
|
||||||
dest: "/usr/lib/arm-linux-gnueabihf/libmpfr.so.4"
|
|
||||||
state: link
|
|
||||||
|
|
||||||
- name: clone nexmon repository
|
- name: clone nexmon repository
|
||||||
git:
|
git:
|
||||||
repo: https://github.com/seemoo-lab/nexmon.git
|
repo: https://github.com/DrSchottky/nexmon.git
|
||||||
dest: /usr/local/src/nexmon
|
dest: /usr/local/src/nexmon
|
||||||
|
|
||||||
# FIRST WE BUILD DRIVER FOR RPi5
|
# FIRST WE BUILD DRIVER FOR RPi5
|
||||||
@ -363,7 +346,7 @@
|
|||||||
|
|
||||||
- name: clone nexmon repository
|
- name: clone nexmon repository
|
||||||
git:
|
git:
|
||||||
repo: https://github.com/seemoo-lab/nexmon.git
|
repo: https://github.com/DrSchottky/nexmon.git
|
||||||
dest: /usr/local/src/nexmon
|
dest: /usr/local/src/nexmon
|
||||||
|
|
||||||
- name: make firmware, RPi4
|
- name: make firmware, RPi4
|
||||||
|
@ -1 +1 @@
|
|||||||
__version__ = '2.8.1'
|
__version__ = '2.8.3'
|
||||||
|
@ -156,6 +156,8 @@ personality.bond_encounters_factor = 20000
|
|||||||
personality.throttle_a = 0.4
|
personality.throttle_a = 0.4
|
||||||
personality.throttle_d = 0.9
|
personality.throttle_d = 0.9
|
||||||
|
|
||||||
|
personality.clear_on_exit = true # clear display when shutting down cleanly
|
||||||
|
|
||||||
ui.fps = 0.0
|
ui.fps = 0.0
|
||||||
ui.font.name = "DejaVuSansMono" # for japanese: fonts-japanese-gothic
|
ui.font.name = "DejaVuSansMono" # for japanese: fonts-japanese-gothic
|
||||||
ui.font.size_offset = 0 # will be added to the font size
|
ui.font.size_offset = 0 # will be added to the font size
|
||||||
|
@ -9,36 +9,39 @@ class Waveshare3in52(DisplayImpl):
|
|||||||
super(Waveshare3in52, self).__init__(config, 'waveshare3in52')
|
super(Waveshare3in52, self).__init__(config, 'waveshare3in52')
|
||||||
|
|
||||||
def layout(self):
|
def layout(self):
|
||||||
fonts.setup(10, 8, 10, 18, 25, 9)
|
fonts.setup(16, 14, 16, 100, 31, 15)
|
||||||
self._layout['width'] = 240
|
self._layout['width'] = 360
|
||||||
self._layout['height'] = 360
|
self._layout['height'] = 240
|
||||||
self._layout['face'] = (0, 43)
|
self._layout['face'] = (0, 40)
|
||||||
self._layout['name'] = (0, 14)
|
self._layout['name'] = (0, 0)
|
||||||
self._layout['channel'] = (0, 0)
|
self._layout['channel'] = (300, 0)
|
||||||
self._layout['aps'] = (0, 71)
|
self._layout['aps'] = (0, 220)
|
||||||
self._layout['uptime'] = (0, 25)
|
self._layout['uptime'] = (120, 0)
|
||||||
self._layout['line1'] = [0, 12, 240, 12]
|
self._layout['line1'] = [0, 24, 360, 24]
|
||||||
self._layout['line2'] = [0, 116, 240, 116]
|
self._layout['line2'] = [0, 220, 360, 220]
|
||||||
self._layout['friend_face'] = (12, 88)
|
self._layout['friend_face'] = (0, 195)
|
||||||
self._layout['friend_name'] = (1, 103)
|
self._layout['friend_name'] = (0, 185)
|
||||||
self._layout['shakes'] = (26, 117)
|
self._layout['shakes'] = (100, 220)
|
||||||
self._layout['mode'] = (0, 117)
|
self._layout['mode'] = (0,200)
|
||||||
self._layout['status'] = {
|
self._layout['status'] = {
|
||||||
'pos': (65, 26),
|
'pos': (3, 170),
|
||||||
'font': fonts.status_font(fonts.Small),
|
'font': fonts.status_font(fonts.Small),
|
||||||
'max': 12
|
'max': 100
|
||||||
}
|
}
|
||||||
return self._layout
|
return self._layout
|
||||||
|
|
||||||
def initialize(self):
|
def initialize(self):
|
||||||
logging.info("initializing waveshare 3.52 inch lcd display")
|
logging.info("initializing waveshare 3.52 inch display")
|
||||||
from pwnagotchi.ui.hw.libs.waveshare.v3in52.epd3in52 import EPD
|
from pwnagotchi.ui.hw.libs.waveshare.v3in52.epd3in52 import EPD
|
||||||
self._display = EPD()
|
self._display = EPD()
|
||||||
self._display.init()
|
self._display.init()
|
||||||
self._display.Clear()
|
self._display.Clear()
|
||||||
|
|
||||||
def render(self, canvas):
|
def render(self, canvas):
|
||||||
self._display.display(canvas)
|
buf = self._display.getbuffer(canvas)
|
||||||
|
self._display.display(buf)
|
||||||
|
self._display.refresh()
|
||||||
|
|
||||||
|
|
||||||
def clear(self):
|
def clear(self):
|
||||||
self._display.Clear()
|
self._display.Clear()
|
||||||
|
Reference in New Issue
Block a user