/lfa

A finite automaton to validate HTTP requests to LFA (Linguagens Formais e Autômatos) class

Primary LanguageJupyter NotebookMIT LicenseMIT

🚀 LFA - Lexic HTTP Requests Validator

This project is a HTTP request lexic validator developed in Python 3 utilizing the automathon library to create a Finite Automaton. The validator checks the syntax of HTTP requests according to versions 1.0 and 1.1.

The following image is a simplified visualization of implemented automata. automata

The automata file .jff can be open using JFLAP.

You can find the full explained implementation in the Jupyter file.

📚 Resources:

💻 Formal Definition:

An automata is defined by M = (Σ, Q, δ, q0, F)

Alphabet Σ: {'S', '/', 'f', 'i', 'y', 'Q', '5', '3', 'o', 'L', 'K', 'Y', 'l', 'N', '2', 'X', 'E', 'r', 'v', 'C', 'V', ')', ',', 'A', 'q', 'F', 'H', '-', 'B', '*', '_', 'G', 'a', '(', 'c', 'R', 'j', ';', ':', '?', 'U', '.', 'm', 'd', 'e', '=', 'h', 'p', 'b', 'x', 'W', ' ', '4', 'Z', '\r', 'P', 'g', 's', 'J', '1', 'O', '9', 'T', 't', 'n', 'z', '0', 'M', '+', 'I', '\n', 'D', '7', 'w', '6', 'u', '8', 'k'}

States Q: {'q44', 'q33', 'q12', 'q6', 'q0', 'q17', 'q61', 'q20', 'q53', 'q70', 'q41', 'q39', 'q15', 'q26', 'q13', 'q24', 'q40', 'q5', 'q56', 'q21', 'q31', 'qf', 'q71', 'q7', 'q52', 'q63', 'q32', 'q45', 'q38', 'q11', 'q69', 'q43', 'q46', 'q1', 'q72', 'q2', 'q76', 'q65', 'q42', 'q35', 'q8', 'q9', 'q10', 'q14', 'q30', 'q23', 'q64', 'q3', 'q36', 'q66', 'q60', 'q73', 'q29', 'q25', 'q59', 'q16', 'q28', 'q18', 'q68', 'q75', 'q48', 'q27', 'q58', 'q62', 'q22', 'q54', 'q74', 'q4', 'q50', 'q37', 'q57', 'q19', 'q55', 'q34', 'q49', 'q47', 'q67'}

Initial State q0​: q0

Final States F: {'qf'}

Transitions δ: transictions is definied based in the following table

State Symbol Next State
q0 O q12
q0 G q1
q0 H q8
q0 P q2
q0 P q19
q0 T q28
q0 D q22
q1 E q3
q10 D q11
q11 (space) q33
q12 P q13
q13 T q14
q14 I q15
q15 O q16
q16 N q17
q17 S q18
q18 (space) q33
q18 (space) q35
q19 U q20
q2 O q5
q20 T q21
q21 (space) q33
q22 E q23
q23 L q24
q24 E q25
q25 T q26
q26 E q27
q27 (space) q33
q28 R q29
q29 A q30
q3 T q4
q30 C q31
q31 E q32
q32 (space) q33
q33 S q34
q33 / q34
q33 f q34
q33 i q34
q33 e q34
q33 y q34
q33 Q q34
q33 5 q34
q33 h q34
q33 3 q34
q33 o q34
q33 b q34
q33 p q34
q33 x q34
q33 L q34
q33 W q34
q33 K q34
q33 Y q34
q33 4 q34
q33 l q34
q33 N q34
q33 Z q34
q33 2 q34
q33 X q34
q33 P q34
q33 E q34
q33 g q34
q33 s q34
q33 r q34
q33 v q34
q33 C q34
q33 J q34
q33 V q34
q33 1 q34
q33 O q34
q33 9 q34
q33 T q34
q33 A q34
q33 q q34
q33 t q34
q33 n q34
q33 F q34
q33 z q34
q33 0 q34
q33 H q34
q33 - q34
q33 B q34
q33 M q34
q33 I q34
q33 D q34
q33 7 q34
q33 w q34
q33 G q34
q33 a q34
q33 6 q34
q33 c q34
q33 R q34
q33 j q34
q33 u q34
q33 U q34
q33 . q34
q33 8 q34
q33 m q34
q33 k q34
q33 d q34
q34 S q34
q34 / q34
q34 f q34
q34 i q34
q34 e q34
q34 y q34
q34 Q q34
q34 5 q34
q34 h q34
q34 3 q34
q34 o q34
q34 b q34
q34 p q34
q34 x q34
q34 L q34
q34 W q34
q34 K q34
q34 Y q34
q34 4 q34
q34 l q34
q34 N q34
q34 Z q34
q34 2 q34
q34 X q34
q34 P q34
q34 E q34
q34 g q34
q34 s q34
q34 r q34
q34 v q34
q34 C q34
q34 J q34
q34 V q34
q34 1 q34
q34 O q34
q34 9 q34
q34 T q34
q34 A q34
q34 q q34
q34 t q34
q34 n q34
q34 F q34
q34 z q34
q34 0 q34
q34 H q34
q34 - q34
q34 B q34
q34 M q34
q34 I q34
q34 D q34
q34 7 q34
q34 w q34
q34 G q34
q34 a q34
q34 6 q34
q34 c q34
q34 R q34
q34 j q34
q34 u q34
q34 U q34
q34 . q34
q34 8 q34
q34 m q34
q34 k q34
q34 d q34
q34 (space) q37
q35 * q36
q36 (space) q37
q37 H q38
q38 T q39
q39 T q40
q4 (space) q33
q40 P q41
q41 / q42
q42 1 q43
q43 . q44
q44 0 q45
q44 1 q46
q45 λ q47
q45 λ q71
q46 λ q48
q46 λ q72
q47 \n q49
q48 \n q50
q49 S q52
q49 f q52
q49 i q52
q49 e q52
q49 y q52
q49 Q q52
q49 5 q52
q49 h q52
q49 3 q52
q49 o q52
q49 b q52
q49 p q52
q49 x q52
q49 L q52
q49 W q52
q49 K q52
q49 Y q52
q49 4 q52
q49 l q52
q49 N q52
q49 Z q52
q49 2 q52
q49 X q52
q49 P q52
q49 E q52
q49 g q52
q49 s q52
q49 r q52
q49 v q52
q49 C q52
q49 J q52
q49 V q52
q49 1 q52
q49 O q52
q49 9 q52
q49 T q52
q49 A q52
q49 q q52
q49 t q52
q49 n q52
q49 F q52
q49 z q52
q49 0 q52
q49 H q52
q49 - q52
q49 B q52
q49 M q52
q49 I q52
q49 D q52
q49 7 q52
q49 w q52
q49 G q52
q49 a q52
q49 6 q52
q49 c q52
q49 R q52
q49 j q52
q49 u q52
q49 U q52
q49 . q52
q49 8 q52
q49 m q52
q49 k q52
q49 d q52
q49 \n qf
q49 \r q76
q5 S q6
q50 H q55
q50 h q55
q52 S q52
q52 f q52
q52 i q52
q52 e q52
q52 y q52
q52 Q q52
q52 5 q52
q52 h q52
q52 3 q52
q52 o q52
q52 b q52
q52 p q52
q52 x q52
q52 L q52
q52 W q52
q52 K q52
q52 Y q52
q52 4 q52
q52 l q52
q52 N q52
q52 Z q52
q52 2 q52
q52 X q52
q52 P q52
q52 E q52
q52 g q52
q52 s q52
q52 r q52
q52 v q52
q52 C q52
q52 J q52
q52 V q52
q52 1 q52
q52 O q52
q52 9 q52
q52 T q52
q52 A q52
q52 q q52
q52 t q52
q52 n q52
q52 F q52
q52 z q52
q52 0 q52
q52 H q52
q52 - q52
q52 B q52
q52 M q52
q52 I q52
q52 D q52
q52 7 q52
q52 w q52
q52 G q52
q52 a q52
q52 6 q52
q52 c q52
q52 R q52
q52 j q52
q52 u q52
q52 U q52
q52 . q52
q52 8 q52
q52 m q52
q52 k q52
q52 d q52
q52 : q53
q53 (space) q54
q54 S q56
q54 / q56
q54 f q56
q54 i q56
q54 e q56
q54 y q56
q54 = q56
q54 Q q56
q54 5 q56
q54 h q56
q54 3 q56
q54 o q56
q54 b q56
q54 p q56
q54 x q56
q54 L q56
q54 W q56
q54 (space) q56
q54 K q56
q54 Y q56
q54 4 q56
q54 l q56
q54 N q56
q54 Z q56
q54 2 q56
q54 X q56
q54 P q56
q54 E q56
q54 g q56
q54 s q56
q54 r q56
q54 v q56
q54 C q56
q54 J q56
q54 V q56
q54 1 q56
q54 O q56
q54 9 q56
q54 ) q56
q54 , q56
q54 T q56
q54 A q56
q54 q q56
q54 t q56
q54 n q56
q54 F q56
q54 z q56
q54 0 q56
q54 H q56
q54 - q56
q54 B q56
q54 M q56
q54 I q56
q54 * q56
q54 + q56
q54 D q56
q54 _ q56
q54 7 q56
q54 w q56
q54 G q56
q54 a q56
q54 ( q56
q54 6 q56
q54 c q56
q54 R q56
q54 j q56
q54 u q56
q54 : q56
q54 ; q56
q54 ? q56
q54 U q56
q54 . q56
q54 8 q56
q54 m q56
q54 k q56
q54 d q56
q55 O q58
q55 o q58
q56 S q56
q56 / q56
q56 f q56
q56 i q56
q56 e q56
q56 y q56
q56 = q56
q56 Q q56
q56 5 q56
q56 h q56
q56 3 q56
q56 o q56
q56 b q56
q56 p q56
q56 x q56
q56 L q56
q56 W q56
q56 (space) q56
q56 K q56
q56 Y q56
q56 4 q56
q56 l q56
q56 N q56
q56 Z q56
q56 2 q56
q56 X q56
q56 P q56
q56 E q56
q56 g q56
q56 s q56
q56 r q56
q56 v q56
q56 C q56
q56 J q56
q56 V q56
q56 1 q56
q56 O q56
q56 9 q56
q56 ) q56
q56 , q56
q56 T q56
q56 A q56
q56 q q56
q56 t q56
q56 n q56
q56 F q56
q56 z q56
q56 0 q56
q56 H q56
q56 - q56
q56 B q56
q56 M q56
q56 I q56
q56 * q56
q56 + q56
q56 D q56
q56 _ q56
q56 7 q56
q56 w q56
q56 G q56
q56 a q56
q56 ( q56
q56 6 q56
q56 c q56
q56 R q56
q56 j q56
q56 u q56
q56 : q56
q56 ; q56
q56 ? q56
q56 U q56
q56 . q56
q56 8 q56
q56 m q56
q56 k q56
q56 d q56
q56 λ q75
q56 λ q57
q57 \n q49
q58 S q59
q58 s q59
q59 T q60
q59 t q60
q6 T q7
q60 : q61
q61 (space) q62
q62 S q63
q62 f q63
q62 i q63
q62 e q63
q62 y q63
q62 Q q63
q62 5 q63
q62 h q63
q62 3 q63
q62 o q63
q62 b q63
q62 p q63
q62 x q63
q62 L q63
q62 W q63
q62 K q63
q62 Y q63
q62 4 q63
q62 l q63
q62 N q63
q62 Z q63
q62 2 q63
q62 X q63
q62 P q63
q62 E q63
q62 g q63
q62 s q63
q62 r q63
q62 v q63
q62 C q63
q62 J q63
q62 V q63
q62 1 q63
q62 O q63
q62 9 q63
q62 T q63
q62 A q63
q62 q q63
q62 t q63
q62 n q63
q62 F q63
q62 z q63
q62 0 q63
q62 H q63
q62 - q63
q62 B q63
q62 M q63
q62 I q63
q62 D q63
q62 7 q63
q62 w q63
q62 G q63
q62 a q63
q62 6 q63
q62 c q63
q62 R q63
q62 j q63
q62 u q63
q62 U q63
q62 . q63
q62 8 q63
q62 m q63
q62 k q63
q62 d q63
q63 S q63
q63 f q63
q63 i q63
q63 e q63
q63 y q63
q63 Q q63
q63 5 q63
q63 h q63
q63 3 q63
q63 o q63
q63 b q63
q63 p q63
q63 x q63
q63 L q63
q63 W q63
q63 K q63
q63 Y q63
q63 4 q63
q63 l q63
q63 N q63
q63 Z q63
q63 2 q63
q63 X q63
q63 P q63
q63 E q63
q63 g q63
q63 s q63
q63 r q63
q63 v q63
q63 C q63
q63 J q63
q63 V q63
q63 1 q63
q63 O q63
q63 9 q63
q63 T q63
q63 A q63
q63 q q63
q63 t q63
q63 n q63
q63 F q63
q63 z q63
q63 0 q63
q63 H q63
q63 - q63
q63 B q63
q63 M q63
q63 I q63
q63 D q63
q63 7 q63
q63 w q63
q63 G q63
q63 a q63
q63 6 q63
q63 c q63
q63 R q63
q63 j q63
q63 u q63
q63 U q63
q63 . q63
q63 8 q63
q63 m q63
q63 k q63
q63 d q63
q63 λ q73
q63 : q65
q64 \n q49
q65 7 q66
q65 2 q66
q65 9 q66
q65 6 q66
q65 5 q66
q65 0 q66
q65 3 q66
q65 1 q66
q65 8 q66
q65 4 q66
q65 λ q73
q66 7 q67
q66 2 q67
q66 9 q67
q66 6 q67
q66 5 q67
q66 0 q67
q66 3 q67
q66 1 q67
q66 8 q67
q66 4 q67
q66 λ q73
q67 7 q68
q67 2 q68
q67 9 q68
q67 6 q68
q67 5 q68
q67 0 q68
q67 3 q68
q67 1 q68
q67 8 q68
q67 4 q68
q67 λ q73
q68 7 q69
q68 2 q69
q68 9 q69
q68 6 q69
q68 5 q69
q68 0 q69
q68 3 q69
q68 1 q69
q68 8 q69
q68 4 q69
q68 λ q73
q69 7 q70
q69 2 q70
q69 9 q70
q69 6 q70
q69 5 q70
q69 0 q70
q69 3 q70
q69 1 q70
q69 8 q70
q69 4 q70
q69 λ q73
q7 (space) q33
q70 λ q73
q71 \r q47
q72 \r q48
q73 λ q64
q73 λ q74
q74 \r q64
q75 \r q57
q76 \n qf
q8 E q9
q9 A q10

📝 License:

This project is licensed under the MIT License. Feel free to use, modify, and distribute it as per the terms of the license.