स्थापित OSX tun/नल ड्राइवर काम करने के लिए लगता है का उपयोग कर रहा: यह मूल रूप से
f = os.open("/dev/net/tun", os.O_RDWR)
मैं निम्नलिखित त्रुटि मिलती है चल रहा था पर थोड़ा सा अंतर। लिनक्स उदाहरण गतिशील रूप से एक ट्यून इंटरफ़ेस आवंटित करता है, जो कम से कम उसी तरह ओएसएक्स में काम नहीं करता है।
मैंने एक स्व-चयनित ट्यून डिवाइस का उपयोग करके ओएसएक्स पर ट्यून का उपयोग कैसे किया जा सकता है, इस बारे में एक बुनियादी उदाहरण बनाने के लिए कोड को तोड़ दिया, प्रत्येक पैकेट को कंसोल पर प्रिंट करना। मैं बहुत मुद्रण के लिए एक निर्भरता के रूप में Scapy जोड़ा है, लेकिन यदि आप एक कच्चे पैकेट डंप से यह जगह ले सकता है अगर आप चाहते हैं:
import os, sys
from select import select
from scapy.all import IP
f = os.open("/dev/tun12", os.O_RDWR)
try:
while 1:
r = select([f],[],[])[0][0]
if r == f:
packet = os.read(f, 4000)
# print len(packet), packet
ip = IP(packet)
ip.show()
except KeyboardInterrupt:
print "Stopped by user."
आप या तो रूट के रूप में इस चलाने के लिए है, या एक sudo chown your_username /dev/tun12
करना होगा खोलने के लिए अनुमति दी जा उपकरण।
एक बिंदु से बिंदु इंटरफेस के रूप में यह कॉन्फ़िगर करने के लिए, टाइप करें:
$ sudo ifconfig tun12 10.12.0.2 10.12.0.1
ध्यान दें कि tun12
इंटरफ़ेस केवल उपलब्ध हो जाएगा, जबकि /dev/tun12
खुला है, अर्थात, जबकि कार्यक्रम चल रहा है। यदि आप प्रोग्राम को बाधित करते हैं, तो आपका ट्यून इंटरफ़ेस गायब हो जाएगा, और अगली बार जब आप प्रोग्राम चलाते हैं तो आपको इसे फिर से कॉन्फ़िगर करना होगा।
अब आप अपने अंतिम बिंदु को पिंग हैं, तो आपके पैकेट कंसोल के लिए मुद्रित किया जाएगा:
$ ping 10.12.0.1
पिंग ही अनुरोध समय समाप्ति प्रिंट होगा, क्योंकि ऐसा कोई सुरंग endpoint अपने पिंग अनुरोधों पर प्रतिक्रिया है।
अत्यधिक सिर scratching से अपनी खोपड़ी सहेजने के लिए::
f = os.open("/dev/tun12", os.O_RDWR)
यह मेरे लिए काम किया है, तो आप 'सेरर का अनुभव करते हैं: [Errno 2] ऐसी कोई फ़ाइल या निर्देशिका नहीं: स्क्रिप्ट चलाने पर'/dev/tun12'' ', आपने शायद अभी तक TUN/TAP ड्राइवर स्थापित नहीं किया है। –
ट्यून के बजाय टैप के लिए आप इसे कैसे करते हैं? –