From df056fb6887d901d2f2377b8e13c890774899a04 Mon Sep 17 00:00:00 2001 From: antisnatchor Date: Mon, 27 Aug 2012 16:10:40 +0100 Subject: [PATCH] Social Eng. extension: added configurable email templates --- extensions/social_engineering/config.yaml | 11 ++- .../mass_mailer/mass_mailer.rb | 92 +++++++++++------- .../templates/default/beef_logo.png | Bin 0 -> 13283 bytes .../mass_mailer/templates/default/mail.html | 19 ++++ .../mass_mailer/templates/default/mail.plain | 8 ++ 5 files changed, 94 insertions(+), 36 deletions(-) create mode 100644 extensions/social_engineering/mass_mailer/templates/default/beef_logo.png create mode 100644 extensions/social_engineering/mass_mailer/templates/default/mail.html create mode 100644 extensions/social_engineering/mass_mailer/templates/default/mail.plain diff --git a/extensions/social_engineering/config.yaml b/extensions/social_engineering/config.yaml index 98e2852d6..d5b3444b2 100644 --- a/extensions/social_engineering/config.yaml +++ b/extensions/social_engineering/config.yaml @@ -28,5 +28,14 @@ beef: port: 587 use_tls: true helo: "gmail.com" # this is usually the domain name - from: "yourmail@gmail.com" + from: "yourpass@gmail.com" password: "yourpass" + # available templates + templates: + default: + # images are by default inline, so if you want to attach something, see below + images: ["beef_logo.png"]#,"second_image.png"] + images_cids: + cid1: "beef_logo.png" + #cid2: "second_image.png" + attachment: [""] diff --git a/extensions/social_engineering/mass_mailer/mass_mailer.rb b/extensions/social_engineering/mass_mailer/mass_mailer.rb index 11c0e3aae..66a965f4f 100644 --- a/extensions/social_engineering/mass_mailer/mass_mailer.rb +++ b/extensions/social_engineering/mass_mailer/mass_mailer.rb @@ -23,22 +23,23 @@ module BeEF def initialize @config = BeEF::Core::Configuration.instance - @user_agent = @config.get('beef.extension.social_engineering.mass_mailer.user_agent') - @host = @config.get('beef.extension.social_engineering.mass_mailer.host') - @port = @config.get('beef.extension.social_engineering.mass_mailer.port') - @helo = @config.get('beef.extension.social_engineering.mass_mailer.helo') - @from = @config.get('beef.extension.social_engineering.mass_mailer.from') - @password = @config.get('beef.extension.social_engineering.mass_mailer.password') + @config_prefix = "beef.extension.social_engineering.mass_mailer" + @templates_dir = "#{File.expand_path('../../../../extensions/social_engineering/mass_mailer/templates', __FILE__)}/" - @subject = "Hi from BeEF" + @user_agent = @config.get("#{@config_prefix}.user_agent") + @host = @config.get("#{@config_prefix}.host") + @port = @config.get("#{@config_prefix}.port") + @helo = @config.get("#{@config_prefix}.helo") + @from = @config.get("#{@config_prefix}.from") + @password = @config.get("#{@config_prefix}.password") end # tos_hash is an Hash like: # 'antisnatchor@gmail.com' => 'Michele' # 'ciccio@pasticcio.com' => 'Ciccio' - def send_email(tos_hash) + def send_email(template, subject, tos_hash) # create new SSL context and disable CA chain validation - if @config.get('beef.extension.social_engineering.mass_mailer.use_tls') + if @config.get("#{@config_prefix}.use_tls") @ctx = OpenSSL::SSL::SSLContext.new @ctx.verify_mode = OpenSSL::SSL::VERIFY_NONE # In case the SMTP server uses a self-signed cert, we proceed anyway @ctx.ssl_version = "TLSv1" @@ -46,10 +47,10 @@ module BeEF # create a new SMTP object, enable TLS with the previous instantiated context, and connects to the server smtp = Net::SMTP.new(@host, @port) - smtp.enable_starttls(@ctx) unless @config.get('beef.extension.social_engineering.mass_mailer.use_tls') == false + smtp.enable_starttls(@ctx) unless @config.get("#{@config_prefix}.use_tls") == false smtp.start(@helo, @from, @password, :login) do |smtp| tos_hash.each do |mail, name| - message = compose_email(mail, name, @subject) + message = compose_email(mail, name, subject, template) smtp.send_message(message, @from, mail) end end @@ -58,23 +59,27 @@ module BeEF #todo sending to hostmonster the email is probably flagged as spam: # todo: error -> 550 550 Administrative prohibition (state 17 - def compose_email(to, name, subject) + def compose_email(to, name, subject, template) msg_id = random_string(50) boundary = "------------#{random_string(24)}" rel_boundary = "------------#{random_string(24)}" - plain_text = "Hi #{name},\nPlease be sure to check this link:\n" - @file_path = '/Users/morru/WORKS/BeEF/beef-44Con-code/extensions/social_engineering/mass_mailer/templates/default/' - file = 'beef_logo.png' + link = "http://127.0.0.1:3000/demos/basic.html" + linktext = "http://antisnatchor.com" header = email_headers(@from, @user_agent, to, name, subject, msg_id, boundary) - plain_body = email_plain_body(plain_text,boundary) + plain_body = email_plain_body(parse_template(name, link, linktext, "#{@templates_dir}#{template}/mail.plain"),boundary) rel_header = email_related(rel_boundary) - html_body = email_html_body(rel_boundary, file, plain_text) - image = email_add_image(file,rel_boundary) + html_body = email_html_body(parse_template(name, link, linktext, "#{@templates_dir}#{template}/mail.plain"),rel_boundary) + + images = "" + @config.get("#{@config_prefix}.templates.default.images").each do |image| + images += email_add_image(image, "#{@templates_dir}#{template}/#{image}",rel_boundary) + end + close = email_close(boundary) - message = header + plain_body + rel_header + html_body + image + close + message = header + plain_body + rel_header + html_body + images + close print_debug "Raw Email content:\n #{message}" message end @@ -119,35 +124,27 @@ EOF related end - def email_html_body(rel_boundary, file, plain_body) + def email_html_body(html_body, rel_boundary) html_body = < - -#{plain_body}
-
- #{file}
-
-Thanks - - +#{html_body} --#{rel_boundary} EOF html_body end - def email_add_image(file, rel_boundary) - file_encoded = [File.read(@file_path + file)].pack("m") # base64 + def email_add_image(name, path, rel_boundary) + file_encoded = [File.read(path)].pack("m") # base64 encoded + #todo: content-type must be determined at least from file extension, not hardcoded image = < +Content-ID: <#{name}> Content-Disposition: inline; - filename="#{file}" + filename="#{name}" #{file_encoded} --#{rel_boundary} @@ -162,6 +159,31 @@ EOF close end + # Replaces placeholder values from the plain/html email templates + def parse_template(name, link, linktext, template_path) + result = "" + img_config = "#{@config_prefix}.templates.default.images_cids" + img_count = 0 + File.open(template_path, 'r').each do |line| + # change the Recipient name + if line.include?("__name__") + result += line.gsub("__name__",name) + # change the link/linktext + elsif line.include?("__link__") + result += line.gsub("__link__",link).gsub("__linktext__",linktext) + # change images cid/name/alt + elsif line.include?("src=\"cid:__") + img_count += 1 + result += line.gsub("__cid#{img_count}__", + @config.get("#{img_config}.cid#{img_count}")).gsub("__img#{img_count}__", + @config.get("#{img_config}.cid#{img_count}")) + else + result += line + end + end + result + end + def random_string(length) output = (0..length).map{ rand(36).to_s(36).upcase }.join output diff --git a/extensions/social_engineering/mass_mailer/templates/default/beef_logo.png b/extensions/social_engineering/mass_mailer/templates/default/beef_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..24a718216bf0ce32eb57afe5514dd0dfad728f07 GIT binary patch literal 13283 zcmV<9GaSr`P)S!Y$zxKf=EYtXJBTS z`G4oTcjzGCfP>!icpis4ciO$*`<;G{46dP&s1;3Sd=uk;Fm9AC$JI@8=@PV~8yWwd z@l@$jNF)KIHK`fjB0hdz{97UkAQFi*f$=by%=CCR<3CH6L;{FJ%|vRI0&;d)4BY&9 zf$>D?vPb}tNT6`&jaV>aGW`9#fO?}lWU{x}aaZZmNC3IoNyRt_Is@j-o`nbQy#r`4 zfT>&4*zwn;%Oe5gYA1WfT6$1fS%nv#e+uI#j|8gfAlf2NNtZ|h$kj{=kx^1w#t*#y z%0HkDV5(M~9!%AGg&n$2x=a#4u2y3D6zUleP;jA;AGq$i>3II}hnVukE>pe1fgSpY z@gnI`NdUPTiNH|?g$(JLSuh%n{NU41J&cEceba&TR($v$EWP;#pr(P0b{BT&YsPm;m+WfLyB*x5tI$j#P{DY}6BMH@yU2_RQAm4Z@CWU}D=iV92`H3CD1gfu;= zRH?9J(L59t7bE_}X~1Y=2j!IgJ5dBlg>(refLzH$Nmw3i(a&uxt%1>O#L`<9wmN}8 zvWS61W-?)4LITX?wM@LI2D7K=#7xF#rOPM*ex{T4GnI0(#&hG zL1b_cj+{zFWnL-SC6t!33_=EQoTPF|0J)L@LdNE|<$k$N6zG%FZTrn9H!GEQckEnQ9tAXg%hs&of4!qw+8bKs$M#-vGOJ3P_b+lvFJ zp_o$L+T+fkL6^ z^aUXyfw+D7VumX@PMu3feNhFo>J`3_%ScBX#hB?~$dfLu1duC%Y8e+WzMV+|WTa)G zrn(yQ=FRHzMRs;}m^Et}W=tB7!jfW~&CC`e@OH{!3@Bv8`-sw{Qo6(vKn6OcF!q96 zJ`rX!;!Y*O-_0H4#*Mn@3j+fKaOdr}AlTOj89CV~%3@eEo7GIBOyQtovPG0q_0naQ z05Xt?T(&cq-V})11{^$b0^>(UVesJKZoPQSm=RdAa2`x%6H>FX1hq>ccVSXx(dbc{UqM`!1x%tp&n4nN9n~pm> zJ8{)){;cUJE-gWFb}l=)j?^x1$Yj)mYYyXL2;MWP7ncN(0Y_wuP-kx%a$(0$gm+epO=mN>1o3mSq)RRVWS~(JV`gn*F6>n(JfDZ7@h32Q)(p71x-^|cxm$U;1$g6~70AiT z!?bCWTD^%(CP!ps1a4n;6EqI?NXyAWRel+m0WW8&SGZ`O426)gQY>9|2_OTB4soMh zhKX=cAvY}taq&!&TsIvqEkF_#6@fv1zWCsiFY)PrzlD#7Cx#6RZ}mp@_V$=DV+t0| zyAIVgH8`D_Ddcsj6e9J0fV3K_z0mSBsyiGe9k6@ByD1jt1`8?u|AII#O(_5)qPRuyJ`>y3E zDJaBu->${?o3q&m3&m~AZ-%?p32E6`AUlWZ*&@3@bs#c?5J+;)W+C?2am=}{wM{~FIM7l7;h8SzU!w=g-4jR!g~E3@jKds$KNvN5$_TkpvK%C9(^4 zfILq!1d~mYmzK>WNj%T+b#-gqjFHNBhXw^=FMGa-8Tk9-;<0(hF3JGLs8LZ+wn$-d zb=Bgg#q%*fDiZ0L8OUSj^M1if1vR&$_NY|JNU;;i+a&?Srm33oR>tGW>=0~{9Jcu5 zFlE9x__T?Wj2JN-5rab!bL1FmN~=&@T!t;X_hE0$KKOWfBRqU?tMlpaTbC||(O^LQ z*|RW~)iB$HOA|6=D8I|Z_^|lDL=r%3R+8*$DM<=4^04p75nMZU5>JP3Ny8$-Flo#v z?2e5^Wl0sFu|sxh7Jk~f3n>Xn7{$~scaP?KLbdR7=gh=}=t!JSJBte$`4ovKwu8`t zemLWUB3LDo0AjO}WDDalj0Y1)iZctaW8VRc96k&op+T)q4h|lKG0{=jyf+4QlzQT- zfmzpp(-ARJW*G{4@edb$%(AB;z`eB+=2s;pgUt zEr()Zs;(D6A_HIaW}O~KW8<-B{{ajM4sMk}92OqR6DAKckX$&IXK@8naPdY_-I6?9 z5?Labi>_|8(RoH&$Fg3}hUR&bbk#nzA!MR+l zX41r1Q-_%|n`euXmu&v*Sv>xdm!55rBqVCCWxShlk#s90fY>rf_J|91szs6tf^;q$zdd%OvF^CV!62RQ6@YnIeXT096ELk z`RTb9kkCyX$9MyzJT3_!Hcl~QlY?r~+2SqDF2tF$srcPJx3xQwq(f1`1spqkg4-cH z)x<)gR7pup#cpP^jEaurRf`-XZZ4QUWfFEB*w5a-$tD>DYJw+#L?Q_wHcJ%5i-i!g z@Fg1~Gc6kieFLt)ZhE_uXJ0=Z@h20Ib~??n&|BOsIX_l-z5rWd_9E2ZpQp|fkwl7$ z7>bSTxURfLuw?|dGxg>=DcuGMAht}T=1?o4Te(y)G$J)S3v;iX)~+g%DiN=pHW}O4 zLN96dP_-s@tfsgEzwX@!Z>>vHjXZhDR1A(g_8p>GCKfeqGz8CDxpW&OfY>r+LP%c^ zfl7(m!U`yu+C+(rZAr`Q3tvw!tl7PXd$O90_LjsXL}O(gwjGLthuRSnCyo(qnF&Zr zOv0Iy$rf-?QkavZYDoaGb)q!+DcpFLGbz$wM2)@sJDZ4HK>2=OLu4a|66l zX2znq*TK)@B_ zb-scm`ANDBJtJuZTi+9{Y^n-e4VuGlAudFW&>K2$0zY_g2yR_;qcDer(%m~EGdu2R zkJ^HA{NG=nM|^xDKm5Q0_aY*4FhDArK-4*9vUEEnfY<_&&NPhiqY$bOe_-5Plum|v zg8{y7t_TSZ?DCD4EnNh+L7qbQldeeXfSj}({N?HAQB_%mfB=8oIC~baHxY>jklrEP z8VMl%L6jj#rLdIy5zY7-#?;^HNyeW-hoY z8WPH0(~WX;XEhGQ9KmzX|C|4L_nph(;_o4Roya8MQwHeOG{-_NF8VO>e^P-c zx120yf5v_yKzc`{*_cGzfp&1RBUB263=P74w=KhqFFf7tw{muJ?B-{hxzXNGSbi~n2_QWK2yJ6ja6>M@cnCoyN^~o|!hWl>2nNbgq7vD$A{acy z-M{-p5`h+@$-*KKC^$ztKRrjW3$|<9IjIri>Lqs z-6Tf`#KfJzk3X%))Txsg%$+OZ0K>-LI9E`|eLlH4-2z-3Jd-WsI(=w2lnkIaHx0OT%@BRDHCtu=| z4_}9$n-&Gxg%*Ge5+$ZI9? z(*p$=P1U&GB1-`2CO{}h=pa)KM%uBR@~f{t#*@#yh{Fft$t!Xr z9c~rBYj~$Nfl&kmZ_1{G(p3v5tqZhn9?-gb!_n0fcFu0FcXo%y-4}Jmx!Cp7N~VxB z;*kgM!+Y<(+^TbXU(y#}tip%i{Vb?!a#=HoyF<)iH&@i+ho66ehg&OCO5J0XQu1OU zhN)E#oleg}Sy=^kZ(EHe%YKht+xG)nbvWB_*bvniHgb^K}8eDAOWQ30IB9in+(wxic3(h)4@Tl=AM_2-~Bfh-T6lpkr%|t;SUg^ z#NS?~?@LDayNoBbvMor3V&G7Cdmtn{68^)+LK_ec1zYH5rY@0$Xl&4R+fhoYR^F+D zT(w%fbRllI;d-n85TntEqeo6)+xFkEeNPMyC#4Egr$}OG)y>AXHGFw3D-+qLh%8YL z077>nk9Mr`$|@8VmNfb5Cr%oRzd!mQo_y|AOA*eq5aJ~H{rEj8y8RU6XPfnBcGL9+ zE-};rz8DfU7QVwLK|f74)N+Lq#@b3`B%h?VhPd;#TdejYii=8kGU1M0 zdvWNQCQ; zgNR~WRnpS$IY9F1M%6XwQB_^j?!?#r^(^Agq@W<{0tLt(f{>wlypO*hxo*D@Jyp$8 zgDs@Mv12iG>W$EN2g6L#qTYJVI|?&sR*eZ$#*c-)on4P!OR5urV&kSA*n1$BU$eY| z5`er>3YpMB(dDvwS$9awzIOn*KmgIP8(dk@euEh~DhdzYa|d300I#R2H%-scJue|{QV`gzxifoG>rD0q|y)rQMs^|jKLfGSLCQs=0YmXm0 ziLK0@pq8Ntsp%-mD;DyvNJ>!Pkn9TCWxwCK5w zOH1MGz0HMK?&ph!6mL)$3=MV~fn(Ph#(W5bP-knf6xmi`6 zY6TFsK{QmB0@Zc!^7BGapntn_a07xeJx3kO9u$EfMtApuBvJtR+N{Uk4pCU$dQpv$7ao%iiOjs;Fq=A$Rk6EffQYT z=@P!jWYOmEX!2As{e9HjMFKeVI%aP4&y+DU89YofWEYiU;qrTtk;PQ@+6F;&a&;Ui zfM`jyc|9pD^Jq+$Q0do{ zjvh60E&?ac7hJgJ{+mxpZes_nJLC?cp-pKYiUHf#f?VWxF)ovqxwRw+u|kG2W`j_` z%R(;B&iH=qdgSM|_7MK%|Naa|KQ{p+G8x^B8+!2BWZkZW&=Ew0Xgxy5k4NaV#XR`e zU*I4iK`{`STmgGGU%0t@3f{AUNwm?Cck%a<slHOZDoLfi(_US*VO5dot4+D2l;sM zQ@>lY9z})4tzPid6A!{aEPyX?2<`UY#KqeQk3qy7aU`(Tf>tgX0#w&~4FEr6!f zGxcKDG~;YqbI^5AfG-mc3LXo{Nz28D zE52;^MsL6VPXvSw0xETu0-gIHOk4dLLc01P#_db<3`T@UkB8db4~>St*#PBoIphwG zsLV`4+|M83^o~t15ip!I%~NFu4ka`GgXj?1C@tas1xN-L)65P@Nk7-*$)bUg?v9Sa z=4z+F_rGpJ{PBb~2KyMi`|1nO1~41FqE_$%nYjcZKRm@rhPUc6C`u27ryKl-Phcix z-x%eTfXIvuWHWVY-|Ej%md<`6rI7F%?Ew|n$Ppzo&29S%S63HIn*j(F(-c!sEG;)5 zv9ZVaK{q!Sc)4nYAfDO|WjV!o?TruGz1i~Ri?Qyj6_{|%7@=`O6_X}a^&;zdO@xP+ z8+?2{gy)&`2n-E}qjw;TeIPxkww#Kn&TRb#3EO@Z8aX(&Ogm=}bOr&iGMg16lwb3? z2n@2_N~L9c`HXbB8S|MXKBR$3frzkBOq(`|Ei@HYulW_3mRa0vF;Thb(7-_$(IN$f zh=$$YbLTRIvFEg|PH^*dL2$4?#*B%^t;-hS(Fg9s;lsyJNC|)Jy@pS}0UFN$t9!1< zOGSx?CpUeCoMQ~=YWw!1%<2soJY*264F;H~skH5Rt};b+>MaQUlO^hBYU_?QapO-e zn?urK>&`vA2877p&ks%A2?Ke}G5N@c6E z)ivukS@O5w8xRURCpTt(7_Ik%6bhbjczV~5$R}_(b^wk#Jsg;1dz;xz!J$ET`l*NU zAd`Ar1+xva%%fKGI5$2|77TsI^!7}E@aPI(_5vqL)zYT$R@Rlyj1cw;2`G#JNA!9AHbqT^O_Dn z_Q)R*6c*TWWZC5+GRFQ2sdui;0))!-zT=OWDz)*q{fLV@hM7#28bUL@^(}ULF~jwZ zm0#kY|9tbJAGUk<0TdOLbK98r#Ptq>*-Q@Zw3(S80SiRH7c@`5g)U~qT97Usj3cB zrjN%vZ+2X|GN_YjvzI}=l4f_13T{!0 zM@XD%L_6>ItJdSdv3Sg#F%6?fM#06!nb&d@Tqwf6gK^j%cZ|2?r*c(SPhTkP9D3E< zts|pcUt5X9U29=3tK_O*D`SFekcv8l3=6@hAHELnPG)s9nrtG!&#&DP-aXRTv3*1; zq)H*JD^|r*w8Z7Y%;=_#J%q#s9EvOHAk0bvmI9D6hb?7aK2=)F9i1 zI(^X1WY4SITrhRXebD-c!Km+jt5~u-WX$e3wfReA9yua{qYYKp!z0iOt3G)T^XAR! z^u6XUxE_kigB*3VYFccIa zEp7+KE*WeYXVW`?s2q?RzXzF?SVvo8HU~|5{q(I@y9CFPBPVd|Op4&bzPv<(LjMNA z#mldkN+HLXF(WW^=#X|N`}_G0#7f5jZ-X@Ly`Vsq*&Ii1-Rz7!eDUKNCJ5}huC(Ks zfigi2vkZTcwb2>W4#>;QKuvKr&#vvQ-BDF=4kr(67d}JY<~vpD;2z+GFW!C?OP4O} z^1a@9cO^=*iv%!Vexmf8r!49rIWqKmy|h|wP=XLqlWNKu{gkOq3rmX21#nzyDJs3b zMh9JaF`RuvdyZ^{lF#!Pb^&D2)W(~b)0>?Z0 zGrQybf%Pa(P8EWIEe%>m3l?3E_uhUPVPS(ieIJU;yztLAug?QS#ymByqs)U^T|FvmYgNS+)$gFL!LGhRPpKxC%Y#534gbsFSvyY(a+_n67Zr&9 z3Fp!>GxS8^rY}n!-D4q?bPl!7w~(Qyp%5yOt;$Kk>BIXhMOrOgQP5~L2nh}f9&fCr;}V7jg8M;CV zuEFx&Sfpzq6zfpQ?ET^n(|Zx-pyuX7ceh7Aze87zQ@^cex2#quc4~R8n9WmHTaOi= zeTx;}uZFv`Biyx4Ok0ujt|evFH7KFimDLCyH5c3R{x~{nI0pv@V*L2gShj2tf#q3^ zMoq>$McDhh5rc!cXkGj9GfkanDddIe&-sd`-nwk4FrAXHDB@0|5GZe`XHhoVt(ie= z@8~KFyy>oLrLsrnfnQN}Hl1B6O~)GvpY3PIV+Uo$6(}n#6Qls?^5i@q`^PrAt#^yO zyl6xUFRP_Rx*YwRF?P9JWTtK&>q~09)TU1+U@o} z3i4WIB_laLPN*Hf7@7zOl=o$6DorkEQl;qlz_fcUCAJdvqrPViqWau_i9op%;A5jJ zyIj3&cXxI3fP>ZpCd0*Dn3SbU0mY-=MIbF_RA$_pkiVNCeq}##`?z6Bl{WxlULa8brLg=1I z36O&X^~%Ik(LI7Ax^-hIAXr_HfzwA1*mS?Dk5+tvRX?v|8@j587t74FJ_W9sI36#) z@K6VTv{Op1Z|Vj(=%}LXd)lq)^l^v zjJN~G;l!lKOD}cV=2%uzTq=8eT9=&bivb%sXl-PAYJI?&sLyi z6Tr)Fw`c|;K$bLP+z2}#PxwYogxS<}sV$|$>&gmn`tTkx1;e&oPkKJLoo!;3rk-o$ zq$V+GIeEgkE>DYzi9P$lXW!fem4X_7yIjK8B~d&<Ghg6-6=Sbc%?2S6y% zYG(5)G9V-(8V=MbuFEtN8N-7d>2cf8kY8xis+EOCkBY{uIn$X9V%I}#m|-%TxDE33 z(+_v4uExY1Xw=u~{{xMkixs~*^_Zpk7IPt_74?M3uB4{rwN{WM^m-~eUMZ@8y#Z_O zKm*7e5hOyQA2TZbhmF7J#3-e`14`23aXulw<1}^~q=z25k8@v9Rb|zI@7DaHWqU^u zkL7f3oHw>uEEcsxaS_8ciZSKUyxzmFMcw=#vf|G)h-zPN075&{YvS*gUm{Q`wd#|; z1_*u0vT^2^81s;k z5W4Cs=0-7IHD=TZ-Ok;I zfY8*P>zh8SK@Zr(pZf+k&; zk`b9v=^Hwnd!`yYF)n2)2Na!&L(Zwh7RiXR0RxhcKK=^d{I~}8J@jH()~%yPgPRu2 z!(X3%q{B1H%F0_e?(2B>z0`Zx)3kOnrk{Y&RQpns!YonrQ#Nord3?v30HH`O)l$zD zA3L#oE`z}!7}_4La199K?##~Y4t-TAlDJ{cHW6x9su%4P0*li2r_G)}pM~U;$-Td< zjg2^X;xvYa4aQANZs_1?n{1awk$7r$XA6;ZT3pl_v;mhE6QLVOW9_P~1rQp>NjX>k zyuU5oNQHvCXPrEJpw>9TCpa7qZaz%C>NsI#MENwx3gMrx4rBCyP?+zy{stJPhpZ#r=|H}!IHSds*5db88o z$SolCj68A0wxnWFoZ}lVG3pJ__<18JED~Dp00s^}*g3gEp>}4Qs*2A&H+P|ft2EB= z8a}y&yfvdyUyp{GN>pFSL}5k}ax>Fmq$Ujn5*w2$N=h@KLM_I<38cf$gh|mOF?Y_4 z4$q-EEnOsQQjQ8`Pgi&2zBY(PeP@PzPj_uw5^YLbdNW!F4|8xZbx7mygKKWS9~$pK zVPX`M3N&|+q(gU_!*MCnGB-;m)RC)QJ)v>;fluUQgq7wYH{k$M;t#XEuGXf4h=2Oy zU6^{!L?%gk4qS?+Ycy(%9Ww&Hem)(ZwG)Dt(se@WokEH zgkOIZ|oX@tIK;noI!#VdAO`0%9sEi~-y}hax0U_?R`66#aK%yD-*LNa4 zuI(W}$RYE`KKQv5^!&IN0I?}?WXGB6y=e}Jqn1kz3yfu?lgkzCUdnk(8#C`Q(pt%) zmv)qcNavE;Wo|SuVbmo6P8^NM;6XTZ>MY=_ zZW~RfU6-S#IgiEAROZ&)$P1LrMBMXcOZwbleR144c5yQ5r>~-^f7X=pBU7GZx^;uRn+` z=05OlUHq$sfnDjdC;qp(3 zM}Fcd>#JHKII60vQAv&GiuyQJiTx-aAFo;`XGgLliXgaf*E8P0Y`l6=KGKLRYLKyv zG5N;H_2n$8Q09v)B1#7*kWt(u20{X3dMD?XivX(WM{sCFRj=*upzD!|jyo&z8gleL z6S$L$VSTXv$S9f8Vj-Max0 z%R-}sMIA1l_oNnq*Pr=Obn_a}zFz)fofXaE^|IP`wN_BYS@e$dZF@>u^v)U>i%N0e z*KaZHW(C|sNAM|Cq;k0i4~MI-FDkNgtv|+qeRk1>vL-KGA5t~yb&tdzIkv9{uc;Tg zs1Lr6PGno429XDh4Z@u(jK35`efu51x4XHy3vH5WM5=0WWXlhjwoJ=xkU$O)Y7gWU z5R8iRS+HUQ`WB{dpJ!E6F?H@iG&F23EGmXXm!GU*&HkeuIH>Pcm5u|%juvxIok}!T zjT%df13xy%(fgFSi)Va)mT^@Jay4ObDsY%~Yr7 zM(s7z$K$W>iS67GZ=vF_jgN$S%>-#^5Ll3&`yQq6LF|3%3^=Yh1!#WGqW#|@m-AXMemvvNMyqR zxdxV$1zL|x9h%H`{H<%h#h>oK8@V}o_~5fI`C{*}XWGdg2`5vqVZ(NO^VLUq`q4iL zA7V7M7dODi|c658Bdbo2II z!j9i{|E5mt5Hnx&S$X*|GJ8bH9{-2gGx4XAa3T1;FrK7YUM;Oay z8$`ji1jgGLuVb7fExD^hf>58O;TEHO);M8Qn1%9k^O03>K^Sp%31k-2-H8GQ`Qx@F z3k6rJxxL*&_D8|llc*{wy_^6siM9kqrm5pOrIb_e+?OSATwM}`(xx@sQ^ah51@l{v zS-wzMj5}6AsN^@vb|U;r%baMOjHjYw*$hL6Zp?XU_<^Sp8>z z)QNzgCeWl0Qp^5S2qm9pX?b0}0HKJvJs+dy?u6kHVXdC@aCe10?c$cXfW1+%*!qeH zZ~eYO!GjRwImTxTqcA z?&03*NwP(PeSMIho+nhm^>|;_!^z(RH!oSx+VD{*T1k|)YE~bEgE|(jX8b=k0elM~R`EATfjkKyJs_$lNFZ0NuB;lVsqIS%+}+*q&41s= z;wAG1Tcom1$gOHH3S$t+1xyig0!39l+o$W`g_jXK}G`7PJ%RHZrAJ(oHq*32FsmKdOqH6oI#z{q030C#LrF( ziP17(*p`M23E|umDl9C*gOB_T>o@G=Ia+-nJxE&oopG|X93--q4PqghgPupOT(S-B z`^z(U?X~yNP;Z@X_}_oO4zm~BhV|>V3mL)I4FHm7fkfU?2^v)^FL4Ki_v3=FgjjL4g51dc$++nb^H&A6EUe4*QNL3iTi^R&NS-jPZkv zk4sBHqP_$O5w-pCWk&aFybj!C#?jc5IGUJ(uwZ|T9~q4i(UBNEDhgp?A#ihbXOVP=96biU$ouF&bqn4>+2BQhJG!LX&Cj<$phZd<* zE-GsW1F7cXB?u#nC6cIL0YdaX1UKocY++C1X&+AF?$6eFW4#_#bwWdm(!w&ashnt2 zSo&YJG%>6T4g&9E5N3f(B++F72obfap&SzmvfT}##ePszo|GlNr|Q>+1f)vc2fJfO=Mz{v zBN`h<$%Zs>H(t7}5)A|+y(dJe<$FXXFIN + + + + +Hi __name __,
+
+We would like to inform you that your BeEF order has been successful.
+You can check the status of your hook at the following link:
+ +__linktext__
+
+Regards,
+The BeEF team
+ +__img1__
+ + + \ No newline at end of file diff --git a/extensions/social_engineering/mass_mailer/templates/default/mail.plain b/extensions/social_engineering/mass_mailer/templates/default/mail.plain new file mode 100644 index 000000000..4b57cf16d --- /dev/null +++ b/extensions/social_engineering/mass_mailer/templates/default/mail.plain @@ -0,0 +1,8 @@ +Hi __name__, + +We would like to inform you that your BeEF order has been successful. +You can check the status of your hook at the following link: +__link__ + +Regards, +The BeEF team \ No newline at end of file