Since PWM is a little fraught with gotchas, this is mostly a message to future me-
(Note to self, rtfm - https://datasheets.raspberrypi.com/rp1/rp1-peripherals.pdf)
pin | a0 | a3 |
---|---|---|
GPIO19 | PWM0_CHAN3 | |
GPIO18 | PWM0_CHAN2 |
Since PWM is a little fraught with gotchas, this is mostly a message to future me-
(Note to self, rtfm - https://datasheets.raspberrypi.com/rp1/rp1-peripherals.pdf)
pin | a0 | a3 |
---|---|---|
GPIO19 | PWM0_CHAN3 | |
GPIO18 | PWM0_CHAN2 |
Here's the scenario: We want to craft two different messages with the same MD5 hash, and a specific CRC32 checksum, simultaneously.
In other words, we want an MD5 collision attack and a CRC32 preimage attack.
This might seem like a contrived scenario, but it's exactly the one I faced while producing my PNG hashquine (Yes OK maybe that's also a contrived scenario, cut me some slack).
On its own, a CRC32 preimage attack is trivial. You can craft a 4-byte suffix that gives any message a specific checksum, calculated using a closed-form expression (which I am too lazy to derive, not even with assistance from Z3). It's not an attack per-se, since CRC32 was never meant to be cryptograpically secure in the first place.
#!/usr/bin/env python | |
from math import pow, atan2, sqrt, copysign | |
import rospy | |
from geometry_msgs.msg import Twist, Pose, PoseWithCovariance | |
from nav_msgs.msg import Odometry | |
from tf.transformations import euler_from_quaternion, quaternion_from_euler | |
class ScuttleControl: |
In order to run a physical SCUTTLE using ROS you will need to first install all the software on a Raspberry PI. First install the Raspberry PI OS on the SD card. Make sure to configure both SSH and the wifi options so that you can connect to the Raspberry Pi once it starts up. The Raspberry Pi Imager has some advanced options that allow you to set both the SSH credentials and the Wifi options.
Once you have installed the OS image you can plug the SD card into the Raspberry Pi and power it up. When the Pi shows up on the network you can SSH in and install ROS Noetic and all the other libraries you need
In order to run a virtual SCUTTLE in Gazebo you will first need to install ROS Noetic on Ubuntu 20.04. This can be a physical machine, e.g. a spare laptop or a VM. If you're building a VM you can follow these instructions to get a VM with ROS noetic installed. In all cases you want to make sure you have at least the following ROS packages (and their dependencies) installed.
ros-noetic-desktop-full
ros-noetic-catkin
ros-noetic-navigation
# XKCD | |
# Add this to your .bashrc or if you are using oh-my-zsh add a functions.zsh file under your oh-my-zsh/custom folder. | |
# Requirements: | |
# - Kitty terminal | |
# - jq | |
# - ImageMagick | |
function xkcd () { | |
comicNum=$1 |
This guide is derived from the official Noetic setup page, which can be found here: http://wiki.ros.org/noetic/Installation/Source
This version includes some customizations for missing packages on Ubuntu 18.04 which the jetson nano OS uses. I think this installation should work on most ubuntu 18.04 installations, but I can give no guarantees.
Please leave your feedback as a comment below, and if your feedback has many points, kindly number them and it will help us organize.
The Insane Techie
May 7, 2020 ROS • python kinetic • melodic • robotics • python • ROS • python
ROS (Robot Operating System) - Documentation - http://wiki.ros.org/