Skip to content
customsolutions edited this page Aug 6, 2021 · 1 revision

Category:Projects-Ongoing

File:SignHackMess.png File:AlphaSign.png

Plan

Fire a message from IRC to the physical space with our scavenged red LED Alpha signs.

Cost

'''Cost in 2001:'''

Alpha 4160R, Red with IR Keyboard $2,199.00

ALPHANET PLUS FOR WINDOWS SOFTWARE $199.00

'''Cost in 2013:'''

3 X Alpha 4160R Free! (Dumpster Dive)

Open Sourced Software Minds $20.00 ( In food ;) )

Attack

IRC Client -> CMD:!sign {msg} -> IRC Server (Freenode) -> ZNC -> EggDrop -> alphasign.tcl -> signage.pl -> Alpha Protocol -> RS232 -> Alpha Sign

Hackers

TeknoJuce & DGNP

Test Process from research pages

Creating a /dev/alpha Device on Linux

Creating the device is as simple as figuring out what serial port you've got the sign hooked up to. For instance, COM1:

ln -s /dev/ttyS0 /dev/alpha

If you are brave, you can give the world read/write access to your sign. This may be important, especially if you are using a web server to update the sign.

chmod a+rw /dev/alpha

Configuring the Communication Settings for Binary Access

Commands to the sign use control characters. (See the protocol.) These settings provide a 9600,E,7,1 connection to the sign for use with the RJ12 to RS232-DB9 adapter.

$ stty 0:705:1ad:0:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f:17:16:0:0:73 < /dev/alpha

This is the same as $ stty 9600 -opost -ocrnl -onlcr cs7 parenb -parodd < /dev/alpha Testing the sign

alphatest.pl

#!/usr/bin/perl

Get the attention of the sign

print "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";

Tell the sign to print the message

$message = "It Worked!"; print "\001" . "Z" . "00" . "\002" . "AA" . "\x1B" . " b" . $message . "\004";

Make the code executable and run it, redirecting output to the sign's device: $ chmod u+x alphatest.pl $ ./alphatest.pl > /dev/alpha

The sign should now read "It Worked!"

Config/Code

eggdrop.conf
  source scripts/alphasign.tcl

alphasign.tcl

# Script name   : alphasign.tcl
# Script Version: 2013033001
# Script Author : TeknoJuce, DGNP
#                 [E-Mail: [email protected]]
# Script Desc.  : Fire's messages to an Alpha Sign (4160R)
#                 with !sign 

# Please edit the following variables: (Channel to which a msg is to be
# sent, How often that message should be sent, and what to send; in that
# order)


#package require tclperl
#set interpreter [perl::interp new]
#$interpreter eval {print "Hello World\n"}
#perl::interp delete $interpreter

#set aschan #unlondon
#set asideltime 5
#set asidlemsg "AlphaSign - TCL By TeknoJuce & Perl by DGNP"

bind pub - !sign pub_sign

proc pub_sign {nick uhost hand chan arg} {
  putserv "NOTICE $nick :Displayed your message on sign #1!"
  exec -- ~/signage.pl $nick:$arg
}

putlog "** AlphaSign.tcl by TeknoJuce & DGNP : loaded"

signage.pl

#!/usr/bin/perl -w

###########################################
## PERL FILE FOR UPDATING THE ALPHA SIGN ##
##########################################
## http://www.alpha-american.com/alpha-manuals/M-Protocol.pdf

## Location of the sign's serial port.
$filename = "/dev/alpha";
open( LED, "> $filename" );
binmode( LED );

$message = join(' ', @ARGV);

# Tell the sign to do two short beeps before sending the message.
print LED "\0\0\0\0\0\0\0\0\0\0\0" # Synchronize with the sign, multiple 0's ar$
         ."\001" # Starting packet command, (\001 -> ^A)
         ."Z" # Type Code (Z->All Signs)
         ."00" # Sign Address (00->All Signs)
         ."\002" # Packet section divider (\002 -> ^B)
         ."E" # Command Code (E->Special Function)
         ."(" # Generate Speaker Tone
         ."2" # (1->Generate three, short beeps)
         ."01" # (10->Set speaker frequency, 00-FE)
         ."1" # (8->Length of tone, 1-F)
         ."1" # (2->Number of times tone is repeated, 0-F)
         ."\004"; # End of packet (\004 -> ^D)


# Construct packet to send to the sign, writing to textfile.
print LED "\0\0\0\0\0\0\0\0\0\0\0" # Synchronize with the sign, multiple 0's ar$
         ."\001" # Starting packet command, (\001 -> ^A)
         ."Z" # Type Code (Z->All Signs)
         ."00" # Sign Address (00->All Signs)
         ."\002" # Packet section divider (\002 -> ^B)
         ."A" # Command Code (A->Write TEXT FILE)
         ."A" # File Label (A->Default Name)
         ."\033" # Escape Character (Needed)
         ."0" # Display Position (0->Fill Screen)
         ."g" # Mode Code (g->Roll Left)
         ."$message" # The actual message to save to the text file, to be displ$
         ."\004"; # End of packet (\004 -> ^D)

## Close connection with the sign.
close(LED);
exit();

Research

[http://wls.wwco.com/ledsigns/alpha/protocol.html Serial Protocol for Alpha LED Scrolling Signs] [http://wls.wwco.com/ledsigns/alpha/cable.html Building a Data Cable for Alpha LED Scrolling Signs] [http://test.drscomp.com/2013/02/02/raspi-and-betabrite-twitter-and-mplayer-feed-ticker/ RasPi and BetaBrite – Twitter and MPlayer feed ticker] [https://alphasign.readthedocs.org/en/latest/ alphasign API — alphasign 1.0 documentation] [http://log.f0rked.com/projects/alphasign alphasign | quadpoint.org] [https://github.com/jon-proulx/alphasign jon-proulx/alphasign · GitHub] [https://github.com/mimedia/signboard mimedia/signboard · GitHub] [https://github.com/brmlab/alphasign brmlab/alphasign · GitHub] [http://test.drscomp.com/2013/01/14/first-step-with-raspi-and-betabrite/ First Steps with RasPi and BetaBrite] [http://dens-site.net/betabrite/betabrite.htm Denis Hruza - BetaBrite LED Display - Main] [http://www.alpha-american.com/p-alpha-message-loader.html Alpha-American Programmable Signs - 1-800-223-4636 to Order - Alpha Message Loader] [http://www.teksolutionsllc.com/download/alphaprotobro.pdf www.teksolutionsllc.com/download/alphaprotobro.pdf] [http://www.remote-control.net/software/ledsign/ LCDSignHelloWorld Software for Betabrite and Alpha LED Signs] [http://www.alpha-american.com/9704-0002.html Alpha-American Programmable Signs 1-800-223-4636 - Alpha Remote Control Keyboard Programming Manual] [http://www.london-electronics.com/pdf/alpha_comms_protocol.pdf www.london-electronics.com/pdf/alpha_comms_protocol.pdf] [http://www.chadmark.com/Ftp-pdf/alpha-communications-protocol.pdf www.chadmark.com/Ftp-pdf/alpha-communications-protocol.pdf] [http://www.alpha-american.com/9708-8061.html Alpha-American Programmable Signs 1-800-223-4636 - Alpha Communications Protocol Manual] [http://wls.wwco.com/ledsigns/alpha/led97088061.html ALPHAÔ] [http://wls.wwco.com/ledsigns/alpha/led97088061.html html] [http://www.tummy.com/presentations/ledsign/ Custom LED Sign in Linux] [http://wls.wwco.com/ledsigns/alpha/led97088061.doc 97088061.doc] [http://wls.wwco.com/ledsigns/alpha/AlphaLinux.html Using the Alpha 215C with Linux] [https://code.google.com/p/mpdledsigns/source/browse/trunk/scripts/mpdsign.py?r=2 mpdsign.py - mpdledsigns - LED Sign Drivers for MPD - Google Project Hosting] [http://web.archive.org/web/20120311115857/http://www.i-hacked.com/index.php?option=content&task=view&id=141 I-Hacked.com Taking Advantage Of Technology - Hacking BetaBrite LED Signs PART1] [http://betabrite.rubyforge.org/betabrite/ betabrite-1.0.3 Documentation] [https://code.google.com/p/mpdledsigns/source/browse/trunk/drivers/betabrite.py?r=2 betabrite.py - mpdledsigns - LED Sign Drivers for MPD - Google Project Hosting] [http://www.andrewkilpatrick.org/?p=moving_sign_2 Moving Sign 2] [http://www.amqp.org/ Home | AMQP]