Skip to content

Instantly share code, notes, and snippets.

@shadowbq
Last active July 1, 2021 14:49
Show Gist options
  • Save shadowbq/9118822 to your computer and use it in GitHub Desktop.
Save shadowbq/9118822 to your computer and use it in GitHub Desktop.
## Generate TCP Flags Definition File
1: ["FIN"]
2: ["SYN"]
3: ["SYN", "FIN"]
4: ["RST"]
5: ["RST", "FIN"]
6: ["RST", "SYN"]
7: ["RST", "SYN", "FIN"]
8: ["PUSH"]
9: ["PUSH", "FIN"]
10: ["PUSH", "SYN"]
11: ["PUSH", "SYN", "FIN"]
12: ["PUSH", "RST"]
13: ["PUSH", "RST", "FIN"]
14: ["PUSH", "RST", "SYN"]
15: ["PUSH", "RST", "SYN", "FIN"]
16: ["ACK"]
17: ["ACK", "FIN"]
18: ["ACK", "SYN"]
19: ["ACK", "SYN", "FIN"]
20: ["ACK", "RST"]
21: ["ACK", "RST", "FIN"]
22: ["ACK", "RST", "SYN"]
23: ["ACK", "RST", "SYN", "FIN"]
24: ["ACK", "PUSH"]
25: ["ACK", "PUSH", "FIN"]
26: ["ACK", "PUSH", "SYN"]
27: ["ACK", "PUSH", "SYN", "FIN"]
28: ["ACK", "PUSH", "RST"]
29: ["ACK", "PUSH", "RST", "FIN"]
30: ["ACK", "PUSH", "RST", "SYN"]
31: ["ACK", "PUSH", "RST", "SYN", "FIN"]
32: ["URG"]
33: ["URG", "FIN"]
34: ["URG", "SYN"]
35: ["URG", "SYN", "FIN"]
36: ["URG", "RST"]
37: ["URG", "RST", "FIN"]
38: ["URG", "RST", "SYN"]
39: ["URG", "RST", "SYN", "FIN"]
40: ["URG", "PUSH"]
41: ["URG", "PUSH", "FIN"]
42: ["URG", "PUSH", "SYN"]
43: ["URG", "PUSH", "SYN", "FIN"]
44: ["URG", "PUSH", "RST"]
45: ["URG", "PUSH", "RST", "FIN"]
46: ["URG", "PUSH", "RST", "SYN"]
47: ["URG", "PUSH", "RST", "SYN", "FIN"]
48: ["URG", "ACK"]
49: ["URG", "ACK", "FIN"]
50: ["URG", "ACK", "SYN"]
51: ["URG", "ACK", "SYN", "FIN"]
52: ["URG", "ACK", "RST"]
53: ["URG", "ACK", "RST", "FIN"]
54: ["URG", "ACK", "RST", "SYN"]
55: ["URG", "ACK", "RST", "SYN", "FIN"]
56: ["URG", "ACK", "PUSH"]
57: ["URG", "ACK", "PUSH", "FIN"]
58: ["URG", "ACK", "PUSH", "SYN"]
59: ["URG", "ACK", "PUSH", "SYN", "FIN"]
60: ["URG", "ACK", "PUSH", "RST"]
61: ["URG", "ACK", "PUSH", "RST", "FIN"]
62: ["URG", "ACK", "PUSH", "RST", "SYN"]
63: ["URG", "ACK", "PUSH", "RST", "SYN", "FIN"]
64: ["ECE"]
65: ["ECE", "FIN"]
66: ["ECE", "SYN"]
67: ["ECE", "SYN", "FIN"]
68: ["ECE", "RST"]
69: ["ECE", "RST", "FIN"]
70: ["ECE", "RST", "SYN"]
71: ["ECE", "RST", "SYN", "FIN"]
72: ["ECE", "PUSH"]
73: ["ECE", "PUSH", "FIN"]
74: ["ECE", "PUSH", "SYN"]
75: ["ECE", "PUSH", "SYN", "FIN"]
76: ["ECE", "PUSH", "RST"]
77: ["ECE", "PUSH", "RST", "FIN"]
78: ["ECE", "PUSH", "RST", "SYN"]
79: ["ECE", "PUSH", "RST", "SYN", "FIN"]
80: ["ECE", "ACK"]
81: ["ECE", "ACK", "FIN"]
82: ["ECE", "ACK", "SYN"]
83: ["ECE", "ACK", "SYN", "FIN"]
84: ["ECE", "ACK", "RST"]
85: ["ECE", "ACK", "RST", "FIN"]
86: ["ECE", "ACK", "RST", "SYN"]
87: ["ECE", "ACK", "RST", "SYN", "FIN"]
88: ["ECE", "ACK", "PUSH"]
89: ["ECE", "ACK", "PUSH", "FIN"]
90: ["ECE", "ACK", "PUSH", "SYN"]
91: ["ECE", "ACK", "PUSH", "SYN", "FIN"]
92: ["ECE", "ACK", "PUSH", "RST"]
93: ["ECE", "ACK", "PUSH", "RST", "FIN"]
94: ["ECE", "ACK", "PUSH", "RST", "SYN"]
95: ["ECE", "ACK", "PUSH", "RST", "SYN", "FIN"]
96: ["ECE", "URG"]
97: ["ECE", "URG", "FIN"]
98: ["ECE", "URG", "SYN"]
99: ["ECE", "URG", "SYN", "FIN"]
100: ["ECE", "URG", "RST"]
101: ["ECE", "URG", "RST", "FIN"]
102: ["ECE", "URG", "RST", "SYN"]
103: ["ECE", "URG", "RST", "SYN", "FIN"]
104: ["ECE", "URG", "PUSH"]
105: ["ECE", "URG", "PUSH", "FIN"]
106: ["ECE", "URG", "PUSH", "SYN"]
107: ["ECE", "URG", "PUSH", "SYN", "FIN"]
108: ["ECE", "URG", "PUSH", "RST"]
109: ["ECE", "URG", "PUSH", "RST", "FIN"]
110: ["ECE", "URG", "PUSH", "RST", "SYN"]
111: ["ECE", "URG", "PUSH", "RST", "SYN", "FIN"]
112: ["ECE", "URG", "ACK"]
113: ["ECE", "URG", "ACK", "FIN"]
114: ["ECE", "URG", "ACK", "SYN"]
115: ["ECE", "URG", "ACK", "SYN", "FIN"]
116: ["ECE", "URG", "ACK", "RST"]
117: ["ECE", "URG", "ACK", "RST", "FIN"]
118: ["ECE", "URG", "ACK", "RST", "SYN"]
119: ["ECE", "URG", "ACK", "RST", "SYN", "FIN"]
120: ["ECE", "URG", "ACK", "PUSH"]
121: ["ECE", "URG", "ACK", "PUSH", "FIN"]
122: ["ECE", "URG", "ACK", "PUSH", "SYN"]
123: ["ECE", "URG", "ACK", "PUSH", "SYN", "FIN"]
124: ["ECE", "URG", "ACK", "PUSH", "RST"]
125: ["ECE", "URG", "ACK", "PUSH", "RST", "FIN"]
126: ["ECE", "URG", "ACK", "PUSH", "RST", "SYN"]
127: ["ECE", "URG", "ACK", "PUSH", "RST", "SYN", "FIN"]
128: ["CWR"]
129: ["CWR", "FIN"]
130: ["CWR", "SYN"]
131: ["CWR", "SYN", "FIN"]
132: ["CWR", "RST"]
133: ["CWR", "RST", "FIN"]
134: ["CWR", "RST", "SYN"]
135: ["CWR", "RST", "SYN", "FIN"]
136: ["CWR", "PUSH"]
137: ["CWR", "PUSH", "FIN"]
138: ["CWR", "PUSH", "SYN"]
139: ["CWR", "PUSH", "SYN", "FIN"]
140: ["CWR", "PUSH", "RST"]
141: ["CWR", "PUSH", "RST", "FIN"]
142: ["CWR", "PUSH", "RST", "SYN"]
143: ["CWR", "PUSH", "RST", "SYN", "FIN"]
144: ["CWR", "ACK"]
145: ["CWR", "ACK", "FIN"]
146: ["CWR", "ACK", "SYN"]
147: ["CWR", "ACK", "SYN", "FIN"]
148: ["CWR", "ACK", "RST"]
149: ["CWR", "ACK", "RST", "FIN"]
150: ["CWR", "ACK", "RST", "SYN"]
151: ["CWR", "ACK", "RST", "SYN", "FIN"]
152: ["CWR", "ACK", "PUSH"]
153: ["CWR", "ACK", "PUSH", "FIN"]
154: ["CWR", "ACK", "PUSH", "SYN"]
155: ["CWR", "ACK", "PUSH", "SYN", "FIN"]
156: ["CWR", "ACK", "PUSH", "RST"]
157: ["CWR", "ACK", "PUSH", "RST", "FIN"]
158: ["CWR", "ACK", "PUSH", "RST", "SYN"]
159: ["CWR", "ACK", "PUSH", "RST", "SYN", "FIN"]
160: ["CWR", "URG"]
161: ["CWR", "URG", "FIN"]
162: ["CWR", "URG", "SYN"]
163: ["CWR", "URG", "SYN", "FIN"]
164: ["CWR", "URG", "RST"]
165: ["CWR", "URG", "RST", "FIN"]
166: ["CWR", "URG", "RST", "SYN"]
167: ["CWR", "URG", "RST", "SYN", "FIN"]
168: ["CWR", "URG", "PUSH"]
169: ["CWR", "URG", "PUSH", "FIN"]
170: ["CWR", "URG", "PUSH", "SYN"]
171: ["CWR", "URG", "PUSH", "SYN", "FIN"]
172: ["CWR", "URG", "PUSH", "RST"]
173: ["CWR", "URG", "PUSH", "RST", "FIN"]
174: ["CWR", "URG", "PUSH", "RST", "SYN"]
175: ["CWR", "URG", "PUSH", "RST", "SYN", "FIN"]
176: ["CWR", "URG", "ACK"]
177: ["CWR", "URG", "ACK", "FIN"]
178: ["CWR", "URG", "ACK", "SYN"]
179: ["CWR", "URG", "ACK", "SYN", "FIN"]
180: ["CWR", "URG", "ACK", "RST"]
181: ["CWR", "URG", "ACK", "RST", "FIN"]
182: ["CWR", "URG", "ACK", "RST", "SYN"]
183: ["CWR", "URG", "ACK", "RST", "SYN", "FIN"]
184: ["CWR", "URG", "ACK", "PUSH"]
185: ["CWR", "URG", "ACK", "PUSH", "FIN"]
186: ["CWR", "URG", "ACK", "PUSH", "SYN"]
187: ["CWR", "URG", "ACK", "PUSH", "SYN", "FIN"]
188: ["CWR", "URG", "ACK", "PUSH", "RST"]
189: ["CWR", "URG", "ACK", "PUSH", "RST", "FIN"]
190: ["CWR", "URG", "ACK", "PUSH", "RST", "SYN"]
191: ["CWR", "URG", "ACK", "PUSH", "RST", "SYN", "FIN"]
192: ["CWR", "ECE"]
193: ["CWR", "ECE", "FIN"]
194: ["CWR", "ECE", "SYN"]
195: ["CWR", "ECE", "SYN", "FIN"]
196: ["CWR", "ECE", "RST"]
197: ["CWR", "ECE", "RST", "FIN"]
198: ["CWR", "ECE", "RST", "SYN"]
199: ["CWR", "ECE", "RST", "SYN", "FIN"]
200: ["CWR", "ECE", "PUSH"]
201: ["CWR", "ECE", "PUSH", "FIN"]
202: ["CWR", "ECE", "PUSH", "SYN"]
203: ["CWR", "ECE", "PUSH", "SYN", "FIN"]
204: ["CWR", "ECE", "PUSH", "RST"]
205: ["CWR", "ECE", "PUSH", "RST", "FIN"]
206: ["CWR", "ECE", "PUSH", "RST", "SYN"]
207: ["CWR", "ECE", "PUSH", "RST", "SYN", "FIN"]
208: ["CWR", "ECE", "ACK"]
209: ["CWR", "ECE", "ACK", "FIN"]
210: ["CWR", "ECE", "ACK", "SYN"]
211: ["CWR", "ECE", "ACK", "SYN", "FIN"]
212: ["CWR", "ECE", "ACK", "RST"]
213: ["CWR", "ECE", "ACK", "RST", "FIN"]
214: ["CWR", "ECE", "ACK", "RST", "SYN"]
215: ["CWR", "ECE", "ACK", "RST", "SYN", "FIN"]
216: ["CWR", "ECE", "ACK", "PUSH"]
217: ["CWR", "ECE", "ACK", "PUSH", "FIN"]
218: ["CWR", "ECE", "ACK", "PUSH", "SYN"]
219: ["CWR", "ECE", "ACK", "PUSH", "SYN", "FIN"]
220: ["CWR", "ECE", "ACK", "PUSH", "RST"]
221: ["CWR", "ECE", "ACK", "PUSH", "RST", "FIN"]
222: ["CWR", "ECE", "ACK", "PUSH", "RST", "SYN"]
223: ["CWR", "ECE", "ACK", "PUSH", "RST", "SYN", "FIN"]
224: ["CWR", "ECE", "URG"]
225: ["CWR", "ECE", "URG", "FIN"]
226: ["CWR", "ECE", "URG", "SYN"]
227: ["CWR", "ECE", "URG", "SYN", "FIN"]
228: ["CWR", "ECE", "URG", "RST"]
229: ["CWR", "ECE", "URG", "RST", "FIN"]
230: ["CWR", "ECE", "URG", "RST", "SYN"]
231: ["CWR", "ECE", "URG", "RST", "SYN", "FIN"]
232: ["CWR", "ECE", "URG", "PUSH"]
233: ["CWR", "ECE", "URG", "PUSH", "FIN"]
234: ["CWR", "ECE", "URG", "PUSH", "SYN"]
235: ["CWR", "ECE", "URG", "PUSH", "SYN", "FIN"]
236: ["CWR", "ECE", "URG", "PUSH", "RST"]
237: ["CWR", "ECE", "URG", "PUSH", "RST", "FIN"]
238: ["CWR", "ECE", "URG", "PUSH", "RST", "SYN"]
239: ["CWR", "ECE", "URG", "PUSH", "RST", "SYN", "FIN"]
240: ["CWR", "ECE", "URG", "ACK"]
241: ["CWR", "ECE", "URG", "ACK", "FIN"]
242: ["CWR", "ECE", "URG", "ACK", "SYN"]
243: ["CWR", "ECE", "URG", "ACK", "SYN", "FIN"]
244: ["CWR", "ECE", "URG", "ACK", "RST"]
245: ["CWR", "ECE", "URG", "ACK", "RST", "FIN"]
246: ["CWR", "ECE", "URG", "ACK", "RST", "SYN"]
247: ["CWR", "ECE", "URG", "ACK", "RST", "SYN", "FIN"]
248: ["CWR", "ECE", "URG", "ACK", "PUSH"]
249: ["CWR", "ECE", "URG", "ACK", "PUSH", "FIN"]
250: ["CWR", "ECE", "URG", "ACK", "PUSH", "SYN"]
251: ["CWR", "ECE", "URG", "ACK", "PUSH", "SYN", "FIN"]
252: ["CWR", "ECE", "URG", "ACK", "PUSH", "RST"]
253: ["CWR", "ECE", "URG", "ACK", "PUSH", "RST", "FIN"]
254: ["CWR", "ECE", "URG", "ACK", "PUSH", "RST", "SYN"]
255: ["CWR", "ECE", "URG", "ACK", "PUSH", "RST", "SYN", "FIN"]
## Generate TCP Flags Definition File
# SANCP / SGUIL Flag calculations
1.upto(255) { |x|
ipFlags = x
flags = []
if (ipFlags - 128) >= 0
flags << "CWR"
ipFlags = ipFlags - 128
end
if (ipFlags - 64) >= 0
flags << "ECE"
ipFlags = ipFlags - 64
end
if (ipFlags - 32) >= 0
flags << "URG"
ipFlags = ipFlags - 32
end
if (ipFlags - 16) >= 0
flags << "ACK"
ipFlags = ipFlags - 16
end
if (ipFlags - 8) >= 0
flags << "PUSH"
ipFlags = ipFlags - 8
end
if (ipFlags - 4) >= 0
flags << "RST"
ipFlags = ipFlags - 4
end
if (ipFlags - 2) >= 0
flags << "SYN"
ipFlags = ipFlags - 2
end
if (ipFlags - 1) >= 0
flags << "FIN"
ipFlags = ipFlags - 1
end
puts "#{x}: #{flags.to_s}"
}
@tcpdump-examples
Copy link

Very interesting post. We can get more info about tcp flags from here. Understanding TCP Flags
Understanding PSH Push ACK TCP Flags

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment