Esempio n. 1
0
    def get_context_data(self, **kwargs):
        ctx = super(Create, self).get_context_data(**kwargs)

        # add vars infos
        ctx['template_vars'] = get_template_vars()

        return ctx
Esempio n. 2
0
    def test_global_vars(self):
        var_list = get_template_vars()
        date = datetime.now()

        # date
        var = self.search_var(var_list, 'date')
        self.assertIsNotNone(var)
        self.assertEqual(var['value'], date.strftime('%d/%m/%Y'))

        # time
        var = self.search_var(var_list, 'time')
        self.assertIsNotNone(var)
        self.assertEqual(var['value'], date.strftime('%H:%M'))
Esempio n. 3
0
    def test_target_vars(self):
        email_template = EmailTemplate.objects.create(
            name='email template name',
            email_subject='email template subject',
            from_email='*****@*****.**',
            text_content='content')
        var_list = get_template_vars(email_template=email_template)

        # email subject
        var = self.search_var(var_list, 'email_subject')
        self.assertIsNotNone(var)
        self.assertEqual(var['value'], 'email template subject')

        # from email
        var = self.search_var(var_list, 'from_email')
        self.assertIsNotNone(var)
        self.assertEqual(var['value'], '*****@*****.**')
Esempio n. 4
0
    def test_email_template_vars(self):
        target = Target.objects.create(
            email='*****@*****.**',
            first_name='John',
            last_name='Doe',
            group=TargetGroup.objects.create(name='test group'))
        var_list = get_template_vars(target=target)

        # email
        var = self.search_var(var_list, 'email')
        self.assertIsNotNone(var)
        self.assertEqual(var['value'], '*****@*****.**')

        # first name
        var = self.search_var(var_list, 'first_name')
        self.assertIsNotNone(var)
        self.assertEqual(var['value'], 'John')

        # last name
        var = self.search_var(var_list, 'last_name')
        self.assertIsNotNone(var)
        self.assertEqual(var['value'], 'Doe')
Esempio n. 5
0
 def get(self, name):
     return self._search_name(get_template_vars(), name)
Esempio n. 6
0
def landing_page(request, tracker_id):
    """Show landing page.

    :param request:
    :param tracker_id:
    :return:
    """
    # add infos
    tracker = get_object_or_404(Tracker, pk=tracker_id)
    tracker_infos = TrackerInfos.create(target_tracker=tracker,
                                        http_request=request)
    count = TrackerInfos.objects.filter(target_tracker=tracker).count()

    # update values
    tracker.value = 'opened'
    tracker.infos = count
    tracker.save()

    # return landing page
    try:
        campaign = tracker.campaign
        email_template = campaign.email_template
        landing_page = email_template.landing_page
        html = landing_page.html
        target = tracker.target

        for var in get_template_vars(campaign, target, email_template):
            html = html.replace(var['name'], var['value'] or '')

        # add navigator info script
        navigator_info = render_to_string(
            'phishing/landingpage_navigator_infos.html', {
                'tracker_id': tracker.pk,
            })
        html = html.replace('</body>', '%s</body>' % navigator_info)

        # replace the post tracker id
        if POST_TRACKER_ID in html:
            tracker_post = Tracker.objects.filter(
                campaign=campaign,
                target=target,
                key=TRACKER_LANDING_PAGE_POST).first()

            if tracker_post:
                value = str(tracker_post.pk)
            else:
                value = 'unknown'
                tracker_infos.raw = 'tracker_post_id of %s in unknown' % \
                                    tracker_id
                tracker_infos.save()

            html = html.replace(POST_TRACKER_ID, value)

        # replace the landing page domain
        if POST_DOMAIN in html:
            landing_page_hostname = request.META.get('HTTP_HOST') or \
                settings.HOSTNAME.split('//', 1)[-1].split('/')[0]
            html = html.replace(POST_DOMAIN, landing_page_hostname)

        landing_page.html = html
        landing_page_printed.send(sender=request,
                                  request=request,
                                  landing_page=landing_page)

        return HttpResponse(landing_page.html, content_type='text/html')
    except Exception as e:
        tracker_infos.raw = '%s: %s' % (e.__class__.__name__, e)
        tracker_infos.save()
        return HttpResponseRedirect('https://www.google.com/')