ID'ing using ping packets and MAC manipulation.

 

It's possible to transmit data in ICMP ECHO request and ICMP ECHO reply messages. (Commonly referred to as ICMP Tunneling) Embedding your callsign in a ping packet that is sent out every 10 minutes is a very easy and legal way to identify your reclassified Part 97 wireless network.

Reviewing the Unix ping on-line manual page shows us that the data may be set with: -p (pattern). You may send up to 16 characters (including spaces) per ping packet. This pattern must be specified as hexadecimal digits.

  
Example looped ID script:

#!/bin/sh
while true
  do
    /bin/ping -c 1 -s 21 -p 574952454C455353204E4F4445 44.92.20.35
    #                       WIRELESS NODE
    /bin/ping -c 1 -s 24 -p 464343204152532043414C4C5349474E 44.92.20.35
    #                       FCC ARS CALLSIGN
    /bin/ping -c 1 -s 22 -p 204B42394D575220464F52204944 44.92.20.35
    #                        KB9MWR FOR ID
    sleep 600
  done

This ping identification was one of the first methods I came up with.  This was before embedded devices came on the market.  This posed a whole new issue, until slightly later when is was discovered that most of them were Linux based.

Early  microwave data pioneers such as N6GN, VE3JF and KE5FX employed MAC (machine access control) based identification.   At the time this involved custom burring a MAC address translating to ones callsign using the ASCII code to an EEPROM.  Fortunately now days we have softmacs, so changing a MAC address can be done on the fly much easier.  Many embedded access point devices have an option for MAC cloning which will allow you to change it. To change your devices MAC address, you specify your callsign in hex. For Linux systems 'ifconfig eth1 hw ether 4B:42:39:4D:57:52' will do the trick.  Working your callsign in at a MAC layer does seem the best, as it ensures it is always transmitted.  Simply pad any unused fields with spaces (hex 20) if you have a short callsign.  You can use lower and upper case in the event there are multiple devices on your network that use the same callsign.

Other methods to embed your callsign within the ethernet datagram is to configure your callsign as part of your network name. (Notice how I utilize the 44.x.x.x amateur IP's and my hostname contains my callsign) If you do this, background DNS/ARP traffic will take care of the identification requirement.  Another good method to by sending the callsign at least every 10 minutes as part of DHCP address renewal. To accomplish this the client's hostname must be set to their callsign.  (see the outernet project)

Wireless ethernet communications are considered as using a specified digital code to communicate because commercial products are available that facilitate the transmission and reception of the communications and the technical characteristics of wireless ethernet are publicly documented.

The rules no longer really specify how you must ID. Using this method, your callsign will be encapsulated inside an ethernet frame. And this conforms with 97.119(b)(3) for specified data emission codes [see 97.309 (3) & (4)] This is a perfectly reasonable and acceptable method, anyone with a sniffer or running dump on the link will be able to see your callsign:

eth1: len 60 4b:42:39:4d:57:52->6b:62:39:6d:77:72 type = IP
IP: len 42 44.92.20.38->44.92.20.35 ihl 20 ttl 64 prot ICMP
ICMP: type echo request id 54377 seq 0
 KB9MWR FOR ID

Keep in mind this is just one example of how to fulfill the identification requirement. You may use any other reasonable method you can come up with or any other method that is publicly documented. (which can be fulfilled by explaining your method on your internet webpage, as I have just done for example.)

An easy way to convert ASCII to hex in bash:

[kb9mwr@localhost]$ echo -n "KB9MWR" |xxd -p
4b42394d5752


97.309 RTTY and data emission codes.
(a) Where authorized by 97.305(c) and 97.307(f) of this Part, an amateur station may transmit a RTTY or data emission using the following specified digital codes:
    (3) The 7-unit, International Alphabet No. 5, code defined in ITU-T Recommendation T.50 (commonly known as "ASCII").

ASCII stands for American Standard Code for Information Interchange. Computers can only understand numbers, so an ASCII code is the numerical representation of a character such as 'a' or '@' or an action of some sort. ASCII was developed a long time ago and now the non-printing characters are rarely used for their original purpose. Below is the printable ASCII character table for reference.

Binary Oct Dec Hex Char
010 0000 040 32 20 ␠ (space)
010 0001 041 33 21 !
010 0010 042 34 22 "
010 0011 043 35 23 #
010 0100 044 36 24 $
010 0101 045 37 25 %
010 0110 046 38 26 &
010 0111 047 39 27 '
010 1000 050 40 28 (
010 1001 051 41 29 )
010 1010 052 42 2A *
010 1011 053 43 2B +
010 1100 054 44 2C ,
010 1101 055 45 2D -
010 1110 056 46 2E .
010 1111 057 47 2F /
011 0000 060 48 30 0
011 0001 061 49 31 1
011 0010 062 50 32 2
011 0011 063 51 33 3
011 0100 064 52 34 4
011 0101 065 53 35 5
011 0110 066 54 36 6
011 0111 067 55 37 7
011 1000 070 56 38 8
011 1001 071 57 39 9
011 1010 072 58 3A :
011 1011 073 59 3B ;
011 1100 074 60 3C <
011 1101 075 61 3D =
011 1110 076 62 3E >
011 1111 077 63 3F ?
Binary Oct Dec Hex Char
100 0000 100 64 40 @
100 0001 101 65 41 A
100 0010 102 66 42 B
100 0011 103 67 43 C
100 0100 104 68 44 D
100 0101 105 69 45 E
100 0110 106 70 46 F
100 0111 107 71 47 G
100 1000 110 72 48 H
100 1001 111 73 49 I
100 1010 112 74 4A J
100 1011 113 75 4B K
100 1100 114 76 4C L
100 1101 115 77 4D M
100 1110 116 78 4E N
100 1111 117 79 4F O
101 0000 120 80 50 P
101 0001 121 81 51 Q
101 0010 122 82 52 R
101 0011 123 83 53 S
101 0100 124 84 54 T
101 0101 125 85 55 U
101 0110 126 86 56 V
101 0111 127 87 57 W
101 1000 130 88 58 X
101 1001 131 89 59 Y
101 1010 132 90 5A Z
101 1011 133 91 5B [
101 1100 134 92 5C \
101 1101 135 93 5D ]
101 1110 136 94 5E ^
101 1111 137 95 5F _
Binary Oct Dec Hex Char
110 0000 140 96 60 `
110 0001 141 97 61 a
110 0010 142 98 62 b
110 0011 143 99 63 c
110 0100 144 100 64 d
110 0101 145 101 65 e
110 0110 146 102 66 f
110 0111 147 103 67 g
110 1000 150 104 68 h
110 1001 151 105 69 i
110 1010 152 106 6A j
110 1011 153 107 6B k
110 1100 154 108 6C l
110 1101 155 109 6D m
110 1110 156 110 6E n
110 1111 157 111 6F o
111 0000 160 112 70 p
111 0001 161 113 71 q
111 0010 162 114 72 r
111 0011 163 115 73 s
111 0100 164 116 74 t
111 0101 165 117 75 u
111 0110 166 118 76 v
111 0111 167 119 77 w
111 1000 170 120 78 x
111 1001 171 121 79 y
111 1010 172 122 7A z
111 1011 173 123 7B {
111 1100 174 124 7C |
111 1101 175 125 7D }
111 1110 176 126 7E ~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 




Ham Spread Spectrum Rules Main Page Ham Overlap & Power