Სარჩევი:

Netcat პითონში: 6 ნაბიჯი
Netcat პითონში: 6 ნაბიჯი

ვიდეო: Netcat პითონში: 6 ნაბიჯი

ვიდეო: Netcat პითონში: 6 ნაბიჯი
ვიდეო: Sockets Tutorial with Python 3 part 1 - sending and receiving data 2024, ნოემბერი
Anonim
Netcat პითონში
Netcat პითონში

რა არის netcat? სახელმძღვანელო გვერდზე netcat ნათქვამია შემდეგნაირად: "nc (ან netcat) პროგრამა გამოიყენება თითქმის ყველაფრისთვის, რაც მოიცავს TCP, UDP ან UNIX დომენის სოკეტებს. მას შეუძლია გახსნას TCP კავშირები, გაგზავნოს UDP პაკეტები, უსმენს თვითნებურად TCP და UDP პორტები, აკეთებენ პორტის სკანირებას და უმკლავდებიან როგორც IPv4- ს, ასევე IPv6- ს. Telnet- ისგან განსხვავებით, nc სკრიპტები ლამაზად და გამოყოფს შეცდომის შეტყობინებებს სტანდარტულ შეცდომებზე, ნაცვლად იმისა, რომ გაგზავნონ ისინი სტანდარტულ გამომუშავებაზე, როგორც ამას აკეთებს telnet (1)."

არსებითად, netcat გაძლევთ საშუალებას დაუკავშირდეთ სხვა სერვერებს TCP ან UDP პროტოკოლის გამოყენებით. TCP ნიშნავს გადაცემის კონტროლის პროტოკოლს და არის კავშირზე ორიენტირებული. UDP ნიშნავს უნივერსალური დატაგრამის პროტოკოლს და არ არის დაკავშირებული. TCP ჩვეულებრივ გამოიყენება ინტერნეტ პროგრამებისთვის, ხოლო UDP გამოიყენება მედიის ნაკადისთვის ან VPN– ებისთვის.

ნაბიჯი 1: როგორ ვიწყებთ?

როგორ ვიწყებთ?
როგორ ვიწყებთ?

ზემოთ არის თუ როგორ ჰქვია netcat. თქვენ ხედავთ, რომ ბოლოს არის ორი არგუმენტი სახელწოდებით "დანიშნულება" და "პორტი". დანიშნულების ადგილი ეხება სერვერის მასპინძლის სახელს ან IP მისამართს, რომელთან დაკავშირებას ვცდილობთ, ხოლო პორტი ეხება სერვერის პორტს, რომელთანაც ჩვენ ვცდილობთ დაკავშირებას.

ნაბიჯი 2: დავიწყოთ

Მოდით დავიწყოთ
Მოდით დავიწყოთ

ზემოთ არის რამდენიმე საწყისი პითონის კოდი. როგორც ხედავთ, ჩვენ გვსურს პროგრამის არგუმენტების დამუშავება ისევე, როგორც ფაქტობრივი პროგრამა. მასპინძლის სახელი იქნება პირველი არგუმენტი შემსრულებლის სახელის შემდეგ, ხოლო პორტი იქნება მეორე არგუმენტი შემსრულებლის სახელის შემდეგ ბრძანების სტრიქონში.

ნაბიჯი 3: კავშირის შექმნა

კავშირის შექმნა
კავშირის შექმნა

მოდით შევქმნათ netcat ფუნქცია, რომელიც შეგვიძლია გამოვიყენოთ. რასაც ჩვენ ძირითადად ვაკეთებთ აქ არის სოკეტის შექმნა და სერვერთან დაკავშირება მოცემული პარამეტრების გამოყენებით. Netcat ბრძანებისთვის, მიმდინარე პარამეტრები არის სერვერის მასპინძლის სახელი და პორტი, რომელთანაც ჩვენ ვცდილობთ დაკავშირებას. სოკეტი შეიცავს პარამეტრებს "socket. AF_INET" და "socket. SOCK_STREAM", რადგან ჩვენ არ გვაქვს TCP კავშირი ამ სახელმძღვანელოსთვის.

ნაბიჯი 4: მოდით გამოგიგზავნოთ შინაარსი

მოდით გამოგიგზავნოთ შინაარსი
მოდით გამოგიგზავნოთ შინაარსი

ჩვენ გავაფართოვეთ ჩვენი netcat ფუნქცია, რომ მივიღოთ მესამე პარამეტრი, "შინაარსი". აქ არის ბევრი შინაარსი, ასე რომ მოდით დავყოთ იგი ხაზის ნომრით.

სტრიქონი 14-16: ჩვენ ვგზავნით მთელ შინაარსს სოკეტზე, ველოდებით ცოტა ხანს და შემდეგ ვკეტავთ სოკეტს გამავალი მონაცემებისთვის, რათა სოკეტმა იცოდეს, რომ აღარ არსებობს მონაცემები.

სტრიქონი 18-26: ჩვენ ვქმნით ბუფერს სერვერის პასუხის შესანახად და სანამ სოკეტი იღებს მონაცემებს, ჩვენ შედეგს დავამატებთ 1024 ბაიტამდე მონაცემს, სანამ არის წასაკითხი მონაცემები.

ხაზი 28-29: ჩვენ გვსურს, რომ ეს netcat კავშირი იყოს ერთჯერადი, ამიტომ ჩვენ ვაცხადებთ კავშირს დახურულ და შემდეგ კავშირის დახურვის შესახებ.

ხაზი 31: ეს არის სტანდარტული HTTP მოთხოვნა. თუ თქვენ გაუშვებთ კოდს ბრძანების ხაზის არგუმენტებით "google.com" და "80", მაშინ დაინახავთ სათანადო HTTP პასუხს

ნაბიჯი 5: მოდით გქონდეთ ღია კავშირი

მოდით გქონდეთ ღია კავშირი
მოდით გქონდეთ ღია კავშირი

ზემოთ მოყვანილი კოდი (რომელიც მდებარეობს წინა ნაწილის კოდის ქვემოთ) უბრალოდ გვაძლევს საშუალებას გავუშვათ მრავალჯერადი netcat ბრძანებები ფსევდო ღია კავშირზე. (სინამდვილეში, ყოველ ჯერზე, როდესაც ბრძანებას აწარმოებთ, ის იხსნება და შემდეგ ხურავს ახალ TCP კავშირს, ასე რომ ის ნამდვილად არ ემსგავსება Netcat– ის ქცევას, ჩვენ ამას უბრალოდ ვაკეთებთ სასწავლო მიზნებისთვის). მოდით დავამსხვრიოთ ეს ასევე სტრიქონად:

სტრიქონი 31: ჩვენ გვსურს ბრძანებების წაკითხვა განუსაზღვრელი ვადით, რათა შევინარჩუნოთ "ინტერაქტიული"

ხაზი 32: ეს არის ჩვენი ბუფერი, რომელიც ინახავს ჩვენი მოთხოვნის შინაარსს

სტრიქონი 36-45: ჩვენ ვკითხულობთ ბუფერში სანამ არ წავიკითხავთ ცარიელ სტრიქონს

ხაზი 48: ჩვენ უბრალოდ ვუწოდებთ ჩვენს Netcat ფუნქციას მასპინძლის სახელით, პორტით და ახლადშექმნილი შინაარსით (რომელიც სწორად არის კოდირებული)

ხაზი 50: თუ ჩვენი ბუფერის შინაარსი შეიცავს ოდესმე "კავშირი: დახურვა" (მიუთითებს, რომ ჩვენ გვინდა კავშირის დახურვა), ჩვენ უბრალოდ გამოვდივართ მარყუჟიდან

ნაბიჯი 6: დასკვნა

ამ გაკვეთილის ბოლოს თქვენ უნდა გქონდეთ მინიმალური სამუშაო ქსელის დანერგვა. მე დავტოვებ მას, როგორც ვარჯიშს, მომხმარებლისთვის განახორციელოს ისეთი მახასიათებლები, როგორიცაა:

1. სხვა პროტოკოლების მხარდაჭერა

2. კოდის დაფიქსირება, რათა კავშირი არ დაიხუროს ყოველ ჯერზე

3. დროშების დამატება, რომელსაც netcat– მა უკვე უნდა შეცვალოს ქცევა

გირჩევთ: