Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def hy_init_attack_params(attack):
- """
- Initializes the given attack parameter structure and applies the default values.
- """
- attack.ip_v_asm = HY_AD_T_IP_V4
- attack.ip_ttl = 128
- attack.pay = None
- attack.icmp_unr_code = ICMP_UNREACH_NET
- attack.pppoe_disc_code = HY_PPPOE_CODE_PADI
- attack.hsrp_state_code = HY_HSRP_STATE_INIT
- def hy_get_attack_type_value(name):
- """
- Returns the type value of the given attack name.
- """
- if name == "arp-request":
- return HY_AT_T_ARP_REQUEST
- elif name == "arp-reply":
- return HY_AT_T_ARP_REPLY
- elif name == "pppoe-discover":
- return HY_AT_T_PPPOE_DISCOVER
- elif name == "icmp-echo":
- return HY_AT_T_ICMP_ECHO
- elif name == "icmp-unreach-tcp":
- return HY_AT_T_ICMP_UNREACH_TCP
- elif name == "tcp":
- return HY_AT_T_TCP
- elif name == "udp":
- return HY_AT_T_UDP
- elif name == "dns-query":
- return HY_AT_T_DNS_QUERY
- elif name == "dhcp-discover":
- return HY_AT_T_DHCP_DISCOVER
- elif name == "dhcp-request":
- return HY_AT_T_DHCP_REQUEST
- elif name == "dhcp-release":
- return HY_AT_T_DHCP_RELEASE
- elif name == "hsrp-hello":
- return HY_AT_T_HSRP_HELLO
- elif name == "hsrp-coup":
- return HY_AT_T_HSRP_COUP
- elif name == "hsrp-resign":
- return HY_AT_T_HSRP_RESIGN
- else:
- return HY_AT_T_UNKNOWN
- def hy_get_attack_name(type):
- """
- Returns the name of the given attack type.
- """
- if type == HY_AT_T_ARP_REQUEST:
- return "arp-request"
- elif type == HY_AT_T_ARP_REPLY:
- return "arp-reply"
- elif type == HY_AT_T_PPPOE_DISCOVER:
- return "pppoe-discover"
- elif type == HY_AT_T_ICMP_ECHO:
- return "icmp-echo"
- elif type == HY_AT_T_ICMP_UNREACH_TCP:
- return "icmp-unreach-tcp"
- elif type == HY_AT_T_TCP:
- return "tcp"
- elif type == HY_AT_T_UDP:
- return "udp"
- elif type == HY_AT_T_DNS_QUERY:
- return "dns-query"
- elif type == HY_AT_T_DHCP_DISCOVER:
- return "dhcp-discover"
- elif type == HY_AT_T_DHCP_REQUEST:
- return "dhcp-request"
- elif type == HY_AT_T_DHCP_RELEASE:
- return "dhcp-release"
- elif type == HY_AT_T_HSRP_HELLO:
- return "hsrp-hello"
- elif type == HY_AT_T_HSRP_COUP:
- return "hsrp-coup"
- elif type == HY_AT_T_HSRP_RESIGN:
- return "hsrp-resign"
- else:
- return "Unknown"
- def hy_get_attack_result_string(result):
- """
- Returns a string containing a result comparison based on the given attack results.
- """
- sec = 0
- msec = 0
- ret = ""
- ret += str(result.pkt_cnt) + " packets sent "
- if not result.tc_flg & HY_TC_PKT_CNT:
- ret += "(" + str(result.tot_byt) + " bytes) "
- if result.dur_msec > 0:
- sec = result.dur_msec // 1000
- msec = result.dur_msec - (sec * 1000)
- ret += "in " + str(sec) + "." + str(msec) + " seconds"
- else:
- ret += "in less than 0.1 seconds"
- return ret
- def hy_attack(attack, pcap_dsc, is_remote_call, result):
- """
- Executes the given attack.
- """
- prm = hy_attack_loop_t()
- prm.pkt_lmt = 0
- prm.dsc = pcap_dsc
- prm.att = attack
- prm.res = result
- prm.pkt_buf = None
- prm.run_stat = HY_RUN_STAT_RUNNING
- result.ret = HY_ER_OK
- if is_remote_call == 0:
- hy_output(stdout, HY_OUT_T_TASK, 0, "Launching attack")
- if attack.cld_run == 1:
- hy_output(stdout, HY_OUT_T_NOTE, 0, "This is a cold run, no data will be sent")
- result = hy_attack_result_t()
- if attack.type == HY_AT_T_UNKNOWN:
- result.ret = HY_ER_AT_T_UNKNOWN
- return
- if len(attack.src_pat.src) == 0:
- result.ret = HY_ER_NO_SRC_PT_GIVEN
- return
- if len(attack.dst_pat.src) == 0:
- result.ret = HY_ER_NO_DST_PT_GIVEN
- return
- if attack.type == HY_AT_T_ARP_REPLY or attack.type == HY_AT_T_ARP_REQUEST or attack.type == HY_AT_T_ICMP_UNREACH_TCP:
- if len(attack.sec_src_pat.src) == 0:
- if attack.type == HY_AT_T_ARP_REPLY or attack.type == HY_AT_T_ARP_REQUEST:
- result.ret = HY_ER_NO_SND_PT_GIVEN
- return
- elif attack.type == HY_AT_T_ICMP_UNREACH_TCP:
- result.ret = HY_ER_NO_TCP_SRC_PT_GIVEN
- return
- elif attack.type == HY_AT_T_HSRP_HELLO or attack.type == HY_AT_T_HSRP_COUP or attack.type == HY_AT_T_HSRP_RESIGN:
- result.ret = HY_ER_NO_VIR_PT_GIVEN
- return
- else:
- result.ret = HY_ER_UNKNOWN
- return
- if attack.type == HY_AT_T_ARP_REPLY or attack.type == HY_AT_T_ARP_REQUEST or attack.type == HY_AT_T_ICMP_UNREACH_TCP or attack.type == HY_AT_T_DHCP_REQUEST or attack.type == HY_AT_T_DHCP_RELEASE:
- if len(attack.sec_dst_pat.src) == 0:
- if attack.type == HY_AT_T_ARP_REPLY or attack.type == HY_AT_T_ARP_REQUEST:
- result.ret = HY_ER_NO_TRG_PT_GIVEN
- return
- elif attack.type == HY_AT_T_ICMP_UNREACH_TCP:
- result.ret = HY_ER_NO_TCP_DST_PT_GIVEN
- return
- elif attack.type == HY_AT_T_DHCP_REQUEST or attack.type == HY_AT_T_DHCP_RELEASE:
- result.ret = HY_ER_NO_SRV_IP_GIVEN
- return
- else:
- result.ret = HY_ER_UNKNOWN
- return
- if attack.min_cnt > 0 or attack.max_cnt > 0:
- prm.pkt_lmt = hy_random(attack.min_cnt, attack.max_cnt)
- if prm.pkt_lmt < 1:
- prm.pkt_lmt = 1
- else:
- prm.pkt_lmt = 0
- if thr = hy_win32_attack_loop(prm) == None:
- result.ret = HY_ER_CREATE_THREAD
- return
- hy_handle_attack_blocking(prm)
- if prm.pkt_buf != None:
- free(prm.pkt_buf)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement