рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХ рдмрд╣реБрдд рд╣реА рдкреНрд░рддрд┐рдХреВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдк рдПрдХ рд╕рд░реНрд╡рд░ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рдЙрд╕ рдкрд░ рддреБрд░рдВрдд рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╣рдорд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рдмрд╛рд░ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
рдЯрд╛рд░рдкрд┐рдЯ рдПрдХ рдЯреНрд░реИрдк рдкреЛрд░реНрдЯ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕ рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдХрдиреЗрдХреНрд╢рди рдХреЛ рддреБрд░рдВрдд рдмрдВрдж рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рдЙрд╕реЗ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реЛрдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЕрдХреНрд╕рд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЯрд╛рд░рдкрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд░реНрдо рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдЕрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдкреИрдорд░ рдФрд░ рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЬреАрд╡рди рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рднреА рдЖрдИрдкреА рдкрддреЗ рдХреА рд╡реНрдпрд╛рдкрдХ рд╕реНрдХреИрдирд┐рдВрдЧ рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВ (рд╣реИрдмреНрд░реЗ рдкрд░ рдЙрджрд╛рд╣рд░рдг:
рдХреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдирд╛рдо рдХрд╛ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рдЕрдкрдорд╛рди рдХреЛ рджреЗрдЦрдХрд░ рдердХ рдЧрдпрд╛ рдерд╛ - рдФрд░ рдЙрд╕рдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрд╛
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
рдареАрдХ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЯрд╛рд░рдкрд┐рдЯ рдЖрдкрдХреЗ рдореБрдХрд╛рдмрд▓реЗ рд╣рдорд▓рд╛рд╡рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрди рд▓реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдмрд╛рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рднреА рдирд╣реАрдВ рд╣реИ. рд▓реЗрдЦрдХ
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рдореЗрдВ, рдПрдВрдбрд▓реЗрд╕ рд╕рд░реНрд╡рд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдкреЛрд░реНрдЯ 22 рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд╣рд╛рдВ рдЧреБрдВрдбреЗ рд╕рд╛рдореВрд╣рд┐рдХ рд░реВрдк рд╕реЗ рджрд╕реНрддрдХ рджреЗрддреЗ рд╣реИрдВред рдорд╛рдирдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рд╣рдореЗрд╢рд╛ рдПрд╕рдПрд╕рдПрдЪ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдкреЛрд░реНрдЯ рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреА рд╣реИрдВ, рдЬреЛ рдкрд░рд┐рдорд╛рдг рдХреЗ рдХреНрд░рдо рд╕реЗ рд▓реЙрдЧ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рддреБрд░рдВрдд рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред
рдХреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдПрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рддрд╛ рд╣реИ SSH-
.
рдПрдВрдбрд▓реЗрд╕реЗрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрд┐рд▓реНрдХреБрд▓ рдпрд╣реА рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рднреЗрдЬрддрд╛ рд╣реИ рдЕрдирдВрдд рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди рдбреЗрдЯрд╛ рдХреА рдзрд╛рд░рд╛, рдЬреЛ рдЖрд░рдПрдлрд╕реА 4253 рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рдпрд╛рдиреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ SSH-
рдФрд░ рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рд╡рд╛рд▓реЗ рд╡рд░реНрдг рд╕рд╣рд┐рдд 255 рд╡рд░реНрдгреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рдХреЗ рдмреАрдЪ 10 рд╕реЗрдХрдВрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЯрд╛рдЗрдо рдЖрдЙрдЯ рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдлрдВрд╕ рдЬрд╛рдПрдЧрд╛ред
рдЪреВрдВрдХрд┐ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИред рдЗрд╕реЗ рдХрд┐рд╕реА рд╕рд┐рдлрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдХрдИ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдЦрдХ рдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдиреНрдпреВрдирддрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░реЗ рдФрд░ рдорд╢реАрди рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рдзреНрдпрд╛рди рди рдЬрд╛рдПред рдЖрдзреБрдирд┐рдХ рдПрдВрдЯреАрд╡рд╛рдпрд░рд╕ рдФрд░ рдЕрдиреНрдп "рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ" рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕реЗ рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдзреАрдорд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╣ рдереЛрдбрд╝реЗ рдЕрдзрд┐рдХ рдЪрд╛рд▓рд╛рдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХрд╛рд░рдг рдЯреНрд░реИрдлрд╝рд┐рдХ рдФрд░ рдореЗрдореЛрд░реА рдЦрдкрдд рджреЛрдиреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдпрджрд┐ рдпрд╣ рдмрд╕ рдПрдХ рдирдП рдХрдиреЗрдХреНрд╢рди рдкрд░ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╣рдорд▓рд╛рд╡рд░ рдорд╢реАрди рдкрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рдХрд░ DDoS рд╣рдорд▓рд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддрд┐ рдХрдиреЗрдХреНрд╢рди рдПрдХ рдереНрд░реЗрдб рднреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд░реНрдиреЗрд▓ рдереНрд░реЗрдб рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рджреЗрдЧрд╛ред
рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдиреЗ рдПрдВрдбрд▓реЗрд╕реЗрд╢ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╣рд▓реНрдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛: рдПрдХ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рд╕рд░реНрд╡рд░ poll(2)
, рдЬрд╣рд╛рдВ рдЬрд╛рд▓ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рд╡рд╕реНрддреБрддрдГ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╕реЙрдХреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдПрдВрдбрд▓реЗрд╕ рдореЗрдВ рдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп 78 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЧрд┐рдирддреА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд░рд┐рд╕реАрд╡ рдФрд░ рд╕реЗрдВрдб рдмрдлрд╝рд░реНрд╕ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдВрдбрд▓реЗрд╢ рдПрдХ рдбрд╛рдпрд░реЗрдХреНрдЯ рдПрдХреНрд╕реЗрд╕ рд╕реЙрдХреЗрдЯ рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рд▓рдЧрднрдЧ рдкреВрд░реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЯреАрд╕реАрдкреА/рдЖрдИрдкреА рд╕реНрдЯреИрдХ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рд╕реАрдзреЗ рдЯреАрд╕реАрдкреА рдкреИрдХреЗрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рдЖрдиреЗ рд╡рд╛рд▓реЗ рдмрдлрд╝рд░ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИред
рдРрд╕рд╛ рд▓реЗрдЦрдХ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рдордп рдХрд╣рддреЗ рд╣реИрдВ
import asyncio
import random
async def handler(_reader, writer):
try:
while True:
await asyncio.sleep(10)
writer.write(b'%xrn' % random.randint(0, 2**32))
await writer.drain()
except ConnectionResetError:
pass
async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 2222)
async with server:
await server.serve_forever()
asyncio.run(main())
Asyncio рдЯрд╛рд░рдкрд┐рдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣реБрдХ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рдХреНрд░реЛрдо, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдлрд╝реНрд░реАрдЬрд╝ рдХрд░ рджреЗрдЧрд╛ рдЬреЛ рдХрдИ рдШрдВрдЯреЛрдВ рд╕реЗ рдЖрдкрдХреЗ HTTP рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ:
import asyncio
import random
async def handler(_reader, writer):
writer.write(b'HTTP/1.1 200 OKrn')
try:
while True:
await asyncio.sleep(5)
header = random.randint(0, 2**32)
value = random.randint(0, 2**32)
writer.write(b'X-%x: %xrn' % (header, value))
await writer.drain()
except ConnectionResetError:
pass
async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 8080)
async with server:
await server.serve_forever()
asyncio.run(main())
рдСрдирд▓рд╛рдЗрди рдмрджрдорд╛рд╢реЛрдВ рдХреЛ рджрдВрдбрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рд░рдкрд┐рдЯ рдПрдХ рдмреЗрд╣рддрд░реАрди рдЙрдкрдХрд░рдг рд╣реИред рд╕рдЪ рд╣реИ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕рд░реНрд╡рд░ рдХреЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдУрд░ рдЙрдирдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреБрдЫ рдЬреЛрдЦрд┐рдо рд╣реИред рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐
рд╣рдм:
рдкрд╛рдпрдерди, рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░, рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рди
рдЯреИрдЧ:
рдПрд╕рдПрд╕рдПрдЪ, рдПрдВрдбрд▓реЗрд╕реЗрд╢, рдЯрд╛рд░рдкрд┐рдЯ, рдЯрд╛рд░рдкрд┐рдЯ, рдЯреНрд░реИрдк, рдПрд╕рд┐рд╕рд┐рдпреЛ
рдЖрдиреЗ рд╡рд╛рд▓реЗ рдПрд╕рдПрд╕рдПрдЪ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдк (рдЯрд╛рд░рдкрд┐рдЯ)ред
рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХ рдмрд╣реБрдд рд╣реА рдкреНрд░рддрд┐рдХреВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдк рдПрдХ рд╕рд░реНрд╡рд░ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рдЙрд╕ рдкрд░ рддреБрд░рдВрдд рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╣рдорд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рдмрд╛рд░ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
рдЯрд╛рд░рдкрд┐рдЯ рдПрдХ рдЯреНрд░реИрдк рдкреЛрд░реНрдЯ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕ рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдХрдиреЗрдХреНрд╢рди рдХреЛ рддреБрд░рдВрдд рдмрдВрдж рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рдЙрд╕реЗ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реЛрдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЕрдХреНрд╕рд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЯрд╛рд░рдкрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд░реНрдо рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдЕрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдкреИрдорд░ рдФрд░ рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЬреАрд╡рди рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рднреА рдЖрдИрдкреА рдкрддреЗ рдХреА рд╡реНрдпрд╛рдкрдХ рд╕реНрдХреИрдирд┐рдВрдЧ рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВ (рд╣реИрдмреНрд░реЗ рдкрд░ рдЙрджрд╛рд╣рд░рдг:
рдХреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдирд╛рдо рдХрд╛ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рдЕрдкрдорд╛рди рдХреЛ рджреЗрдЦрдХрд░ рдердХ рдЧрдпрд╛ рдерд╛ - рдФрд░ рдЙрд╕рдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрд╛
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛:
$ make
$ ./endlessh &
$ ssh -p2222 localhost
рдареАрдХ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЯрд╛рд░рдкрд┐рдЯ рдЖрдкрдХреЗ рдореБрдХрд╛рдмрд▓реЗ рд╣рдорд▓рд╛рд╡рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрди рд▓реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдмрд╛рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рднреА рдирд╣реАрдВ рд╣реИ. рд▓реЗрдЦрдХ
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рдореЗрдВ, рдПрдВрдбрд▓реЗрд╕ рд╕рд░реНрд╡рд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдкреЛрд░реНрдЯ 22 рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд╣рд╛рдВ рдЧреБрдВрдбреЗ рд╕рд╛рдореВрд╣рд┐рдХ рд░реВрдк рд╕реЗ рджрд╕реНрддрдХ рджреЗрддреЗ рд╣реИрдВред рдорд╛рдирдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рд╣рдореЗрд╢рд╛ рдПрд╕рдПрд╕рдПрдЪ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдкреЛрд░реНрдЯ рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреА рд╣реИрдВ, рдЬреЛ рдкрд░рд┐рдорд╛рдг рдХреЗ рдХреНрд░рдо рд╕реЗ рд▓реЙрдЧ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рддреБрд░рдВрдд рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред
рдХреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдПрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рддрд╛ рд╣реИ SSH-
.
рдПрдВрдбрд▓реЗрд╕реЗрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрд┐рд▓реНрдХреБрд▓ рдпрд╣реА рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рднреЗрдЬрддрд╛ рд╣реИ рдЕрдирдВрдд рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди рдбреЗрдЯрд╛ рдХреА рдзрд╛рд░рд╛, рдЬреЛ рдЖрд░рдПрдлрд╕реА 4253 рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рдпрд╛рдиреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ SSH-
рдФрд░ рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рд╡рд╛рд▓реЗ рд╡рд░реНрдг рд╕рд╣рд┐рдд 255 рд╡рд░реНрдгреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рдХреЗ рдмреАрдЪ 10 рд╕реЗрдХрдВрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЯрд╛рдЗрдо рдЖрдЙрдЯ рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдлрдВрд╕ рдЬрд╛рдПрдЧрд╛ред
рдЪреВрдВрдХрд┐ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИред рдЗрд╕реЗ рдХрд┐рд╕реА рд╕рд┐рдлрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдХрдИ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдЦрдХ рдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдиреНрдпреВрдирддрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░реЗ рдФрд░ рдорд╢реАрди рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рдзреНрдпрд╛рди рди рдЬрд╛рдПред рдЖрдзреБрдирд┐рдХ рдПрдВрдЯреАрд╡рд╛рдпрд░рд╕ рдФрд░ рдЕрдиреНрдп "рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ" рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕реЗ рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдзреАрдорд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╣ рдереЛрдбрд╝реЗ рдЕрдзрд┐рдХ рдЪрд╛рд▓рд╛рдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХрд╛рд░рдг рдЯреНрд░реИрдлрд╝рд┐рдХ рдФрд░ рдореЗрдореЛрд░реА рдЦрдкрдд рджреЛрдиреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдпрджрд┐ рдпрд╣ рдмрд╕ рдПрдХ рдирдП рдХрдиреЗрдХреНрд╢рди рдкрд░ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╣рдорд▓рд╛рд╡рд░ рдорд╢реАрди рдкрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рдХрд░ DDoS рд╣рдорд▓рд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддрд┐ рдХрдиреЗрдХреНрд╢рди рдПрдХ рдереНрд░реЗрдб рднреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд░реНрдиреЗрд▓ рдереНрд░реЗрдб рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рджреЗрдЧрд╛ред
рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХреНрд░рд┐рд╕ рд╡реЗрд▓рдиреНрд╕ рдиреЗ рдПрдВрдбрд▓реЗрд╕реЗрд╢ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╣рд▓реНрдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛: рдПрдХ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рд╕рд░реНрд╡рд░ poll(2)
, рдЬрд╣рд╛рдВ рдЬрд╛рд▓ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рд╡рд╕реНрддреБрддрдГ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╕реЙрдХреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдПрдВрдбрд▓реЗрд╕ рдореЗрдВ рдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп 78 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЧрд┐рдирддреА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд░рд┐рд╕реАрд╡ рдФрд░ рд╕реЗрдВрдб рдмрдлрд╝рд░реНрд╕ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдВрдбрд▓реЗрд╢ рдПрдХ рдбрд╛рдпрд░реЗрдХреНрдЯ рдПрдХреНрд╕реЗрд╕ рд╕реЙрдХреЗрдЯ рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рд▓рдЧрднрдЧ рдкреВрд░реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЯреАрд╕реАрдкреА/рдЖрдИрдкреА рд╕реНрдЯреИрдХ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рд╕реАрдзреЗ рдЯреАрд╕реАрдкреА рдкреИрдХреЗрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рдЖрдиреЗ рд╡рд╛рд▓реЗ рдмрдлрд╝рд░ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИред
рдРрд╕рд╛ рд▓реЗрдЦрдХ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рдордп рдХрд╣рддреЗ рд╣реИрдВ
import asyncio
import random
async def handler(_reader, writer):
try:
while True:
await asyncio.sleep(10)
writer.write(b'%xrn' % random.randint(0, 2**32))
await writer.drain()
except ConnectionResetError:
pass
async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 2222)
async with server:
await server.serve_forever()
asyncio.run(main())
Asyncio рдЯрд╛рд░рдкрд┐рдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣реБрдХ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рдХреНрд░реЛрдо, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдлрд╝реНрд░реАрдЬрд╝ рдХрд░ рджреЗрдЧрд╛ рдЬреЛ рдХрдИ рдШрдВрдЯреЛрдВ рд╕реЗ рдЖрдкрдХреЗ HTTP рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ:
import asyncio
import random
async def handler(_reader, writer):
writer.write(b'HTTP/1.1 200 OKrn')
try:
while True:
await asyncio.sleep(5)
header = random.randint(0, 2**32)
value = random.randint(0, 2**32)
writer.write(b'X-%x: %xrn' % (header, value))
await writer.drain()
except ConnectionResetError:
pass
async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 8080)
async with server:
await server.serve_forever()
asyncio.run(main())
рдСрдирд▓рд╛рдЗрди рдмрджрдорд╛рд╢реЛрдВ рдХреЛ рджрдВрдбрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рд░рдкрд┐рдЯ рдПрдХ рдмреЗрд╣рддрд░реАрди рдЙрдкрдХрд░рдг рд╣реИред рд╕рдЪ рд╣реИ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕рд░реНрд╡рд░ рдХреЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдУрд░ рдЙрдирдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреБрдЫ рдЬреЛрдЦрд┐рдо рд╣реИред рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐
рд╕реНрд░реЛрдд: www.habr.com