Gnomon can tether time or tide. - Robert Burns, 1790
Ops Notes¶
- Author:
Dimitry Dukhovny
- Intelligence Oversight Cheat Sheet
- Procedure 1 General Provisions
- Procedure 2 Collecting US Persons Information
- Procedure 3 Retaining US Persons Information
- Procedure 4 Disseminating US Person Information
- Procedure 5 Electronic Surveillance
- Procedure 6 Concealed Monitoring
- Procedure 7 Physical Searches
- Procedure 8 Mail Searches and Examination
- Procedure 9 Physical Surveillance
- Procedure 10 Undisclosed Participation in Organizations
- Procedure 11 Contracting for Goods and Services
- Procedure 12 Assistance to Civilian Law Enforcement Authorities
- Procedure 13 Experimentation on Human Subjects for Intelligence Purposes
- Procedure 14 Employee Conduct
- Procedure 15 Questionable Intelligence Activities
- Procedure 16 Federal Crimes
- Procedure 17 Support to FP, MNI, Joint Intel Activities, and Other DOD Investigative Orgs
- Additional notes
- Responses to intelligence collection concerns
- Government Jargon Glossary
Creating and communicating passwords¶
Users are unreliable. They forget passwords.
Processes sometimes suck and require you to set passwords. It’s a worst-practice and yet it’s a common one. The least we can do is stop pretending it doesn’t happen and give you some tools to handle it.
Create UNIX password hash¶
I use a simple script I call hashit.sh.
Similar code is all over the Internet, but the orignal source seems to be the ActiveState official website.
1python -c "import getpass, sys, random, string, crypt;
2randomsalt = ''.join(random.sample(string.ascii_letters,8));
3sys.stdout.write(crypt.crypt(getpass.getpass(), '\$6\$%s\$' % randomsalt))"
Store or communicate a password reliably¶
Given font differences and difficulty hearing things clearly by phone, phonetics are definitely the way to go for password storage and communication.
1#!/usr/bin/python
2
3###############################################################
4# Title: (U) ddpwprint.py
5# Source: (U) Dimitry Dukhovny dimitry.dukhovny@gmail.com
6# History: (U) 20171220.1822Z: Added commandline switches, piped input,
7# and password generator
8# (U) 20170404.1838Z: Initial version
9# Purpose: (U) Print (usually passwords) in phonetics to correct for font
10# problems.
11# License: (U) GPL
12# (U) Source code and original attribution must be
13# distributed, even if the original source was
14# modified. No commercial redistribution for
15# trade, sale, or barter permitted without the
16# permission of the author.
17
18import sys
19import re
20
21
22phoneticascii = {
23 chr(32): 'space',
24 chr(33): 'exclamation_mark',
25 chr(34): 'double_quote',
26 chr(35): 'number',
27 chr(36): 'dollar',
28 chr(37): 'percent',
29 chr(38): 'ampersand',
30 chr(39): 'single_quote',
31 chr(40): 'left_parenthesis',
32 chr(41): 'right_parenthesis',
33 chr(42): 'asterisk',
34 chr(43): 'plus',
35 chr(44): 'comma',
36 chr(45): 'minus',
37 chr(46): 'period',
38 chr(47): 'slash',
39 chr(48): 'zero',
40 chr(49): 'one',
41 chr(50): 'two',
42 chr(51): 'three',
43 chr(52): 'four',
44 chr(53): 'five',
45 chr(54): 'six',
46 chr(55): 'seven',
47 chr(56): 'eight',
48 chr(57): 'nine',
49 chr(58): 'colon',
50 chr(59): 'semicolon',
51 chr(60): 'less_than',
52 chr(61): 'equality_sign',
53 chr(62): 'greater_than',
54 chr(63): 'question_mark',
55 chr(64): 'at_sign',
56 chr(65): 'upper_alpha',
57 chr(66): 'upper_bravo',
58 chr(67): 'upper_charlie',
59 chr(68): 'upper_delta',
60 chr(69): 'upper_echo',
61 chr(70): 'upper_foxtrot',
62 chr(71): 'upper_golf',
63 chr(72): 'upper_hotel',
64 chr(73): 'upper_india',
65 chr(74): 'upper_juliet',
66 chr(75): 'upper_kilo',
67 chr(76): 'upper_lima',
68 chr(77): 'upper_mike',
69 chr(78): 'upper_november',
70 chr(79): 'upper_oscar',
71 chr(80): 'upper_papa',
72 chr(81): 'upper_quebec',
73 chr(82): 'upper_romeo',
74 chr(83): 'upper_sierra',
75 chr(84): 'upper_tango',
76 chr(85): 'upper_uniform',
77 chr(86): 'upper_victor',
78 chr(87): 'upper_whiskey',
79 chr(88): 'upper_xray',
80 chr(89): 'upper_yankee',
81 chr(90): 'zulu',
82 chr(91): 'left_bracket',
83 chr(92): 'backslash',
84 chr(93): 'right_bracket',
85 chr(94): 'caret',
86 chr(95): 'underscore',
87 chr(96): 'grave',
88 chr(97): 'alpha',
89 chr(98): 'bravo',
90 chr(99): 'charlie',
91 chr(100): 'delta',
92 chr(101): 'echo',
93 chr(102): 'foxtrot',
94 chr(103): 'golf',
95 chr(104): 'hotel',
96 chr(105): 'india',
97 chr(106): 'juliet',
98 chr(107): 'kilo',
99 chr(108): 'lima',
100 chr(109): 'mike',
101 chr(110): 'november',
102 chr(111): 'oscar',
103 chr(112): 'papa',
104 chr(113): 'quebec',
105 chr(114): 'romeo',
106 chr(115): 'sierra',
107 chr(116): 'tango',
108 chr(117): 'uniform',
109 chr(118): 'victor',
110 chr(119): 'whiskey',
111 chr(120): 'xray',
112 chr(121): 'yankee',
113 chr(122): 'zulu',
114 chr(123): 'left_brace',
115 chr(124): 'vertical_bar',
116 chr(125): 'right_brace',
117 chr(126): 'tilde'
118 }
119
120
121def phonetic(inchar=''):
122 '''Tries to return a phonetic value from the ASCII dictionary. Returns
123 an empty string if you feed it an unprintable character.'''
124 inchar = str(inchar)
125 try:
126 return(phoneticascii[inchar])
127 except:
128 return('')
129
130
131def getphonetic(intext):
132 '''Validates intext and iterates over it with phonetic().'''
133 try:
134 intext = str(intext)
135 except:
136 sys.stderr.write('Your input isn\'t a string. Sorry.\n')
137 return(False)
138 outtext = map(phonetic, intext)
139 return(outtext)
140
141
142def printphonetic(intext):
143 '''Iterates over intext. Anything set off in quotes is treated as one
144 entry, unless you escape the quotes.'''
145 sys.stdout.write('\n--\nPassword: ' + intext + '\n')
146 outtext = getphonetic(intext)
147 if outtext:
148 map(lambda x: sys.stdout.write(' ' + x + '\n'), outtext)
149 return(True)
150 else:
151 return(False)
152
153def main(argv=[None]):
154 map(printphonetic, argv[1:])
155 map(printphonetic, sys.stdin)
156
157if __name__ == '__main__':
158 main(sys.argv)
You can read the output clearly to most government and military officials.
IO Procedures¶
See IO Procedures.
Government Jargon¶
See Government Jargon.