แผ่นโกงการเขียนโปรแกรมเครือข่ายหลาม

ตารางทั้งหมดที่มีอยู่ในแผ่นโกงจะแสดงในตารางด้านล่างซึ่งง่ายต่อการคัดลอกและวาง.

เอกสารการเขียนโปรแกรมเครือข่ายหลาม ปก:

  • โมดูลการติดตั้งทั่วไปที่จำเป็น: PIP และ IDLE
  • หลามเครือข่ายการเขียนโปรแกรมห้องสมุดบนสุด
  • Network forensics: python ไลบรารีและสคริปต์ที่จำเป็น
  • คำสำคัญหลาม
  • ประเภทข้อมูลผู้ประกอบการทางคณิตศาสตร์
  • การวิเคราะห์เครือข่ายด้วย Python
  • ไลบรารี dnspython
  • Socket Module (อินเตอร์เฟส Berkley API)
  • ประเภทซ็อกเก็ตการสร้างซ็อกเก็ต
  • ตัวอย่างซ็อกเก็ต
  • ตัวอย่างสคริปต์
  • แยกโมดูล

ดูหรือดาวน์โหลดภาพ JPG ของ Cheat Sheet

คลิกขวาที่ภาพ ด้านล่างเพื่อบันทึกไฟล์ JPG (กว้าง 2530 x 2362 สูงเป็นพิกเซล) หรือคลิกที่นี่เพื่อเปิดในแท็บเบราว์เซอร์ใหม่ เมื่อรูปภาพเปิดขึ้นในหน้าต่างใหม่คุณอาจต้องคลิกที่ภาพเพื่อซูมเข้าและดู jpeg ขนาดเต็ม.

ดูหรือดาวน์โหลดไฟล์ PDF แผ่นชีท

ดาวน์โหลดไฟล์ PDF แผ่นชีทที่นี่ เมื่อมันเปิดขึ้นในแท็บเบราว์เซอร์ใหม่เพียงคลิกขวาที่ PDF และไปที่เมนูดาวน์โหลด.

สิ่งที่รวมอยู่ในสูตรโกงนี้

หมวดหมู่และรายการต่อไปนี้รวมอยู่ในสูตรโกง:

โมดูลการติดตั้งทั่วไปที่จำเป็น: PIP และ IDLE

PIP (ตัวติดตั้งแพ็คเกจ Python)

$ sudo apt-get install python-pip

IDLE (การพัฒนาแบบบูรณาการและสภาพแวดล้อมการเรียนรู้)

$ sudo apt-get install ว่าง

หลามเครือข่ายการเขียนโปรแกรมห้องสมุดบนสุด

Django

Python Web framework ระดับสูงเพื่อการพัฒนาอย่างรวดเร็วและในทางปฏิบัติ

pycos (asyncoro เดิม)

Python framework สำหรับอะซิงโครนัสพร้อมกันเครือข่ายการเขียนโปรแกรมแบบกระจายและการคำนวณแบบกระจาย

ดีเซล

API สะอาดสำหรับการเขียนไคลเอนต์เครือข่ายและเซิร์ฟเวอร์ รองรับ TCP และ UDP ลูกค้ารวมกลุ่มสำหรับ HTTP, DNS, Redis, Riak และ MongoDB.

พูลสาร์

วิธีง่ายๆในการสร้างโปรแกรมเครือข่ายที่ปรับขนาดได้

เป๋

เฟรมเวิร์กอิงเหตุการณ์สำหรับแอปพลิเคชันอินเทอร์เน็ต: ไคลเอนต์ HTTP และเซิร์ฟเวอร์, SSHv2 และ Telnet, IRC, XMPP, IMAPv4, POP3, SMTP, IMAPv4, POP3, SMTP, ฯลฯ.

ลูกระเบิดเชื้อเพลิง

Network Automation และความสามารถในการโปรแกรมได้ Abstraction Layer พร้อมรองรับ Multivendor – สำหรับจัดการกับผู้ขาย dvice

gevent

ไลบรารีเครือข่าย Python ของ coroutine ที่ใช้กรีนเล็ตเพื่อให้ API ซิงโครนัสระดับสูงด้านบนของเหตุการณ์วง libev หรือ libuv

ผักชีฝรั่ง

คิวงานแบบอะซิงโครนัส / คิวงานตามการส่งข้อความแบบกระจาย

Network forensics: python ไลบรารีและสคริปต์ที่จำเป็น

เครื่องมือ EDDIE

เอเจนต์การตรวจสอบระบบและเครือข่ายความปลอดภัยและเอเจนต์การวิเคราะห์ประสิทธิภาพสำหรับงู

pypcap

เครื่องมือการจับแพ็คเก็ตขนาดเล็กโดยใช้ python และ pcap

Paramiko

การใช้งานโปรโตคอล SSHv2 ซึ่งให้ทั้งการทำงานของไคลเอนต์และเซิร์ฟเวอร์

จุดเล็ก ๆ

แพ็คเกจติดตั้งสำหรับไพ ธ อน

Python แพ็คเกจดัชนี (PyPI)

คลังเก็บซอฟต์แวร์สำหรับ Python

คำสำคัญหลาม

>>> คำหลักนำเข้า
>>> พิมพ์ (keyword.kwlist)

Python 2.7.15+ [‘และ’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘ดำเนินการต่อ’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘ยกเว้น’, ‘exec’, ‘ ในที่สุด ‘,’ สำหรับ ‘,’ จาก ‘,’ ทั่วโลก ‘,’ ถ้า ‘,’ นำเข้า ‘,’ ใน ‘,’ คือ ‘,’ แลมบ์ดา ‘,’ ไม่ ‘,’ หรือ ‘,’ ผ่าน ‘,’ พิมพ์ ‘ , ‘เพิ่ม’, ‘กลับมา’, ‘ลอง’, ‘ในขณะที่’, ‘กับ’, ‘ผลผลิต’]

Python 3.8.0 [‘เท็จ’, ‘ไม่มี’, ‘จริง’, ‘และ’, ‘เป็น’, ‘ยืนยัน’, ‘async’, ‘รอ’, ‘หยุด’, ‘คลาส’, ‘ดำเนินการต่อ’, ‘def’, ‘ del ‘,’ elif ‘,’ else ‘,’ ยกเว้น ‘,’ สุดท้าย ‘,’ for ‘,’ จาก ‘,’ global ‘,’ if ‘,’ import ‘,’ in ‘,’ in ‘,’ lambda ‘ , ‘nonlocal’, ‘ไม่’, ‘หรือ’, ‘ผ่าน’, ‘เพิ่ม’, ‘กลับ’, ‘ลอง’, ‘ลอง’, ‘ในขณะที่’, ‘กับ’, ‘ผลผลิต’]

ประเภทข้อมูล

ข้อความ

str – x = "สวัสดีชาวโลก"

เป็นตัวเลข

int, float, complex

ลำดับ

รายการ tuple ช่วง

การทำแผนที่

Dict

ชุด

ตั้งค่าจำนวนมาก

บูลีน

บูล

ไบนารี่

ไบต์, bytearray, memoryview

ผู้ประกอบการทางคณิตศาสตร์

**

ตัวแทน 4 ** 2 = 16

%

โมดูลัส / ส่วนที่เหลือ 43% 5 = 3

//

การแบ่งจำนวนเต็ม 11 // 5 = 2

/

แผนก 11/5 = 2.2

* * * *

การคูณ 3 * 3 = 9

การลบ 8 – 3 = 5

+

ส่วนที่เพิ่มเข้าไป 2 + 2 = 4

==

เท่ากับ

!=

ไม่เท่ากับ

<

น้อยกว่า

>

มากกว่า

<=

น้อยกว่าหรือเท่ากับ

>=

มากกว่าหรือเท่ากับ

ความคิดเห็น

#

สามารถใช้ที่จุดเริ่มต้นของบรรทัดหรือจากภายในบรรทัดไปยังจุดสิ้นสุดของบรรทัด

การวิเคราะห์เครือข่ายด้วย Python

ใช้ NMAP กับเครื่องสแกนพอร์ต

$ pip ติดตั้ง python-nmap

คำสั่งให้เรียกใช้การสแกน NMAP

นำเข้า nmap
nmScan = nmap.PortScanner ()
nmScan.scan (’10 .1.0.0 ‘, ’25 -443’)

คำสั่ง NMAP ใช้กับ python

nmScan.scaninfo () # {‘tcp’: {‘services’: ‘25 -80 ’,’ method ‘:’ เชื่อมต่อ ‘}}
nmScan.all_hosts ()
nmScan [’10 .1.0.0′ ]. ชื่อโฮสต์ ()
nmScan [’10 .1.0.0′ ]. รัฐ ()
nmScan [’10 .1.0.0′ ]. all_protocols ()
nmScan [’10 .1.0.0 ‘] [‘ tcp ‘]. keys () # ผลลัพธ์ – [80, 25, 22, 135]
nmScan [’10 .1.0.0 ‘]. has_tcp (25) # ผลลัพธ์จริง / เท็จ
nmScan [’10 .1.0.0 ‘]. has_tcp (21) # ผลลัพธ์เท็จ / จริง

ไลบรารี dnspython

การติดตั้ง

$ pip ติดตั้ง dnspython

แบบสอบถาม DNS พื้นฐาน

นำเข้า dns.resolver
ชื่อ = ‘google.com’
สำหรับ qtype ใน ‘A’, ‘AAAA’, ‘MX’, ‘NS’, ‘TXT’, ‘SOA’:
answer = dns.resolver.query (ชื่อ, qtype, boost_on_no_answer = False)
ถ้า answer.rrset ไม่ใช่ None:
พิมพ์ (answer.rrset)

รับการกำหนดเป้าหมาย MX และการตั้งค่าชื่อ

นำเข้า dns.resolver

answer = dns.resolver.query (‘dnspython.org’, ‘MX’)
สำหรับ rdata ในคำตอบ:
พิมพ์ (‘โฮสต์’, rdata.exchange, ‘มีการตั้งค่า’, rdata.preference)

Socket Module (อินเตอร์เฟส Berkley API)

ฟังก์ชั่นหลักวิธีการ

ซ็อกเก็ต () • ind () •ฟัง () •ยอมรับ () •เชื่อมต่อ () • connect_ex () •ส่ง () • recv () •ปิด ()

ประเภทซ็อกเก็ต

SOCK_STREAM

สำหรับโปรโตคอล TCP •การส่งที่เชื่อถือได้•ลำดับแพ็คเก็ต•การเชื่อมต่อที่มุ่งเน้น•แบบสองทิศทาง

SOCK_DGRAM

สำหรับโปรโตคอล UDP •การส่งข้อมูลที่ไม่น่าเชื่อถือ•ไม่มีลำดับของแพ็กเก็ต•การเชื่อมต่อ (UDP) •ไม่ใช่แบบสองทิศทาง

การสร้าง Sockets

import socket # นำเข้าวิธีการ socket
socket.socket () # ฟังก์ชั่นที่สร้างซ็อกเก็ต
ซ็อกเก็ต = ซ็อกเก็ต (ตระกูลซ็อกเก็ตประเภทซ็อกเก็ตโปรโตคอล = ค่า)

ครอบครัวซ็อกเก็ต

AF_UNIX หรือ AF_INET

ประเภทซ็อกเก็ต

SOCK_STREAM หรือ SOCK_DGRAM สำหรับ TCP & UDP ตามลำดับ

• เช่น. TCP – UDP2 = ซ็อกเก็ต ซ็อกเก็ต (socket.AF_INET, ซ็อกเก็ต SOCK_DGRAM)

• เช่น. UDP – TCP2 = ซ็อกเก็ต ซ็อกเก็ต (socket.AF_INET, ซ็อกเก็ต SOCK_STREAM)

วิธีการซ็อกเก็ตลูกค้า

() เชื่อมต่อ

วิธีซ็อกเก็ตเซิร์ฟเวอร์

ผูก () •ฟัง (ค้าง) •ยอมรับ ()

วิธีซ็อกเก็ต TCP

s.recv () # รับแพ็กเก็ต TCP
s.send () #Send แพ็กเก็ต TCP

วิธีซ็อกเก็ต UDP

s.recvfrom () # รับแพ็กเก็ต UDP
s.sendto () # ส่งแพ็กเก็ต UDP

วิธีการซ็อกเก็ตเพิ่มเติม

ปิด()

ปิดการเชื่อมต่อซ็อกเก็ต

getHostName ()

ส่งคืนสตริงซึ่งรวมถึงชื่อโฮสต์ของพีซีปัจจุบัน

gethostbyname ()

ส่งคืนสตริงซึ่งรวมถึงชื่อโฮสต์และที่อยู่ IP ของพีซีปัจจุบัน

ฟัง()

ติดตั้งและเริ่มฟัง TCP

ผูก()

แนบ (ชื่อโฮสต์หมายเลขพอร์ต) เข้ากับซ็อกเก็ต

ยอมรับ()

การเชื่อมต่อไคลเอ็นต์ TCP รอ

() เชื่อมต่อ

เริ่มต้นการเชื่อมต่อเซิร์ฟเวอร์ TCP

วิธีการซ็อกเก็ต TCP
mysocket.accept ()

ส่งคืน tuple ด้วยที่อยู่ระยะไกลที่เชื่อมต่อ

mysocket.bind (ที่อยู่)

แนบที่อยู่ท้องถิ่นที่ระบุไว้กับซ็อกเก็ต

mysocket.connect (ที่อยู่)

ข้อมูลที่ส่งผ่านซ็อกเก็ตกำหนดให้กับที่อยู่ระยะไกลที่กำหนด

mysocket.getpeername ()

ส่งคืนที่อยู่ระยะไกลที่เชื่อมต่อซ็อกเก็ต

mysocket.getsockname ()

ส่งคืนที่อยู่ของจุดปลายทางท้องถิ่นของซ็อกเก็ต

mysocket.sendto (ข้อมูลที่อยู่)

บังคับให้แพ็กเก็ตข้อมูลไปยังที่อยู่ระยะไกลที่เฉพาะเจาะจง

การปิดกั้นซ็อกเก็ต

setblocking (1)

ตั้งค่าบล็อก

setblocking (0)

ลบ / ยกเลิกการติดตั้งบล็อก

รับหมายเลขพอร์ตโดยใช้ชื่อโดเมน

ซ็อกเก็ตนำเข้า
socket.getservbyname (‘ชื่อโดเมน’)

ตรวจสอบการสนับสนุนสำหรับ IPV6

ซ็อกเก็ตนำเข้า
socket.has_ipv6 # คำตอบคือ TRUE หรือ FALSE

getaddrinfo () – ผูกเซิร์ฟเวอร์เข้ากับพอร์ต

จากซ็อกเก็ตนำเข้า getaddrinfo
getaddrinfo (ไม่มี, ‘FTP’, 0, ซ็อกเก็ต SOCK_STREAM, 0, ซ็อกเก็ต AI_PASSIVE)
[(2, 1, 6, ”, (‘0.0.0.0’, 21)), (10, 1, 6, ‘, (‘ :: ‘, 21, 0, 0))

ตัวอย่างซ็อกเก็ต

ตัวอย่างซ็อกเก็ตฝั่งไคลเอ็นต์

ซ็อกเก็ตนำเข้า
s = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
โฮสต์ = socket.gethostname ()
พอร์ต = 1111
myserver.bind ((โฮสต์, พอร์ต)) # replace myserver และ myclient ด้วย IP ที่ทำซ้ำ
myserver.ฟัง (5)
ในขณะที่ True:
myclient,addr = myserver.accept ()
พิมพ์("เชื่อมต่อกับ {str (addr)}")
myclient.ส่ง (msg.encode ("ASCII"))
myclient.ปิด()

ตัวอย่างซ็อกเก็ตฝั่งไคลเอ็นต์พร้อมความคิดเห็น

# import ไลบรารีซ็อกเก็ต
ซ็อกเก็ตนำเข้า

# สร้างวัตถุซ็อกเก็ต
s = socket.socket ()
พิมพ์ ("สร้างซ็อกเก็ตแล้ว")

# สำรองพอร์ตบนคอมพิวเตอร์ซึ่งสามารถเป็นอะไรก็ได้
พอร์ต = 1111

# ผูกกับพอร์ต
# สตริงว่างในฟิลด์ IP แทน IP ทำให้เซิร์ฟเวอร์ฟังการร้องขอ
# มาจากคอมพิวเตอร์เครื่องอื่นบนเครือข่าย
s.bind ((”, พอร์ต))
พิมพ์ ("ซ็อกเก็ตเชื่อมโยงกับ% s" %(ท่าเรือ))

# ทำให้ซ็อกเก็ตเข้าสู่โหมดฟัง
s.listen (5)
พิมพ์ ("ซ็อกเก็ตกำลังฟัง")

# วนซ้ำจนกว่าผู้ใช้จะขัดจังหวะหรือมีข้อผิดพลาดเกิดขึ้น
ในขณะที่ True:

# สร้างการเชื่อมต่อกับลูกค้า.
c, addr = s.accept ()
พิมพ์ (‘เชื่อมต่อได้จาก’, addr)

# ส่งข้อความขอบคุณไปยังลูกค้า.
c.send (‘ขอบคุณสำหรับการเชื่อมต่อ’)

# ปิดการเชื่อมต่อ
c.close ()

ตัวอย่างสคริปต์

สร้างรายการอุปกรณ์

>>>อุปกรณ์ = [‘SW1’, ‘SW2’, ‘SW3’]

สร้างรายการพจนานุกรม VLAN

vlans = [{‘id’: ‘100’, ‘name’: ‘staff’}, {‘id’: ‘200’, ‘name’: ‘VOICE’},
{‘id’: ‘300’, ‘name’: ‘wireless’}]]

เขียนฟังก์ชั่นเพื่อรวบรวมคำสั่งและกดไปที่เครือข่าย

>>>def get_commands (vlan, ชื่อ):
คำสั่ง = []
บัญชาผนวก (‘vlan’ + vlan)
บัญชาผนวก (‘ชื่อ’ + ชื่อ)

ส่งคืนคำสั่ง

>>> def push_commands (อุปกรณ์คำสั่ง):
พิมพ์ (‘กำลังเชื่อมต่อกับอุปกรณ์:’ + อุปกรณ์)
สำหรับคำสั่ง cmd ใน:
พิมพ์ (‘คำสั่งส่ง:’ + cmd)

สร้าง VLAN ในสวิตช์หลายอันโดยใช้สคริปต์ไพ ธ อน

>>>สำหรับ vlan ใน vlans:
id = vlan.get (‘id’)
name = vlan.get (‘name’)
พิมพ์ ( ‘\ n’)
พิมพ์ (‘กำหนดค่า VLAN:’ + id)
คำสั่ง = get_commands (id, ชื่อ)
สำหรับอุปกรณ์ในอุปกรณ์:
push_commands (อุปกรณ์คำสั่ง)
พิมพ์ ( ‘\ n’)

การอ้างอิง: https://www.oreilly.com/library/view/network-programmability-and/9781491931240/ch04.html

ปิดการใช้งานอินเตอร์เฟสเราเตอร์โดยใช้คำสั่ง python

>>> จากการนำเข้าแบบพุช push_commands
อุปกรณ์ = ‘เราเตอร์ 2’
คำสั่ง = [‘อินเตอร์เฟส Eth0 / 1’, ‘ปิดระบบ’]
push_commands (อุปกรณ์คำสั่ง)

แยกโมดูล

argparse ()

โมดูล argparse ทำให้ง่ายต่อการเขียนอินเตอร์เฟสบรรทัดคำสั่งที่ใช้งานง่าย โปรแกรมกำหนดว่าต้องใช้อาร์กิวเมนต์อะไรและ argparse จะหาวิธีแยกวิเคราะห์ sys.argv เหล่านั้น

สร้าง parser

>>> parser = argparse.ArgumentParser (description = ‘ประมวลผลจำนวนเต็ม’)

การเพิ่มข้อโต้แย้ง

>>> parser.add_argument (‘จำนวนเต็ม’, metavar = ‘N’, พิมพ์ = int, nargs = ‘+’,
… help = ‘จำนวนเต็มสำหรับตัวสะสม’)
>>> parser.add_argument (‘- ผลรวม’, ปลายทาง = ‘สะสม’, การกระทำ = ‘store_const’,
… const = sum, default = max,
… help = ‘รวมจำนวนเต็ม (ค่าเริ่มต้น: หาค่าสูงสุด)’)

การแยกวิเคราะห์ข้อโต้แย้ง

>>> parser.parse_args ([‘- ผลรวม’, ‘7’, ‘-1′, ’42’])
Namespace (accumulate =, integers = [7, -1, 42])

About the author

Comments

  1. Im sorry, I cannot identify the appropriate language for this text. Please provide more context or specify the language.

Comments are closed.