
nerva v1.69.2
CLI سريع لتعريف الخدمات لأكثر من 170 بروتوكول (TCP/UDP/SCTP) - مبني بواسطة Praetorian
Nerva
Nerva: أداة سريعة لسطر أوامر لبصمة الخدمات
الميزات • التثبيت • البدء السريع • الاستخدام • البروتوكولات • المكتبة • حالات الاستخدام • استكشاف الأخطاء وإصلاحها
بصمة خدمات عالية الأداء مكتوبة بلغة Go. حدد أكثر من 170 بروتوكول شبكة عبر وسائط النقل TCP وUDP وSCTP مع استخراج غني للبيانات الوصفية.
تكتشف Nerva وتحدد بسرعة الخدمات التي تعمل على منافذ الشبكة المفتوحة. استخدمها إلى جانب ماسحات المنافذ مثل Naabu لبصمة الخدمات المكتشفة، أو دمجها في خطوط أنابيب الأمان لديك للاستطلاع الآلي.
الميزات
- أكثر من 170 إضافة بروتوكول — قواعد البيانات، الوصول عن بُعد، خدمات الويب، المراسلة، البروتوكولات الصناعية والاتصالات
- 76 أداة بصمة HTTP — اكتشف تقنيات الويب بما في ذلك جدران الحماية وقواعد البيانات وخوادم الذكاء الاصطناعي/LLM والمزيد
- كشف سوء التكوين الأمني — حدد المشكلات الأمنية الشائعة مثل واجهات API غير المصادق عليها والبروتوكولات النصية الصريحة (
--misconfigs) - دعم وسائط نقل متعددة — TCP (افتراضي)، UDP (
--udp)، وSCTP (--sctp، Linux فقط) - دعم الوكيل — وجّه حركة الفحص بشفافية عبر وكلاء SOCKS5 أو HTTP مع دقة DNS قابلة للتكوين
- بيانات وصفية غنية — استخرج الإصدارات والتكوينات والتفاصيل ذات الصلة بالأمان من كل خدمة
- الوضع السريع — افحص المنافذ الافتراضية فقط للاستطلاع السريع (
--fast) - إخراج مرن — تنسيقات JSON أو CSV أو قابلة للقراءة البشرية
- متوافق مع خطوط الأنابيب — استقبل المدخلات من Naabu أو Nmap أو أي أداة تُخرج
host:port - مكتبة Go — استوردها مباشرة في تطبيقات Go الخاصة بك
التثبيت
الإصدارات
حمّل ملفاً تنفيذياً جاهزاً من صفحة الإصدارات.
من GitHub```sh
go install github.com/praetorian-inc/nerva/cmd/nerva@latest
### من المصدر```sh
git clone https://github.com/praetorian-inc/nerva.git
cd nerva
go build ./cmd/nerva
./nerva -h
Docker```sh
git clone https://github.com/praetorian-inc/nerva.git cd nerva docker build -t nerva . docker run --rm nerva -h docker run --rm nerva -t example.com:80 --json
## البدء السريع
بصمة هدف واحد:```sh
nerva -t example.com:22
# ssh://example.com:22
احصل على بيانات JSON وصفية مفصلة:```sh nerva -t example.com:22 --json
{"host":"example.com","ip":"93.184.216.34","port":22,"protocol":"ssh","transport":"tcp","metadata":{...}}
التوجيه من ماسح منافذ:```sh
naabu -host example.com -silent | nerva
# http://example.com:80
# ssh://example.com:22
# https://example.com:443
المرجع الكامل — كل أمر فرعي واسم مستعار وعلم، بما في ذلك تلك المخفية من --help — يتم توليده في docs/CLI.md.
الاستخدام```
nerva [flags]
TARGET SPECIFICATION: Requires host:port or ip:port format. Assumes ports are open.
EXAMPLES: nerva -t example.com:80 nerva -t example.com:80,example.com:443 nerva -l targets.txt nerva --json -t example.com:80 cat targets.txt | nerva
### أمثلة
**أهداف متعددة:**```sh
nerva -t example.com:22,example.com:80,example.com:443
من الملف:```sh nerva -l targets.txt --json -o results.json
**فحص UDP** (قد يتطلب صلاحيات الجذر):```sh
sudo nerva -t example.com:53 -U
# dns://example.com:53
فحص SCTP (لينكس فقط):```sh nerva -t telecom-server:3868 -S
diameter://telecom-server:3868
**الوضع السريع** (المنافذ الافتراضية فقط):```sh
nerva -l large-target-list.txt --fast --json
توجيه الوكيل مع تحليل DNS عن بُعد:```sh nerva -t target.internal:80 --proxy socks5://127.0.0.1:1080 --dns-order p
### اكتشاف الأخطاء الأمنية في الإعدادات
يمكن لـ Nerva تحديد الأخطاء الأمنية الشائعة في الإعدادات عند تمكينها باستخدام `--misconfigs`:```sh
nerva -t example.com:2375 --misconfigs --json
التكوينات الخاطئة المكتشفة:
| معرّف النتيجة | الخطورة | الوصف |
|---|---|---|
docker-unauth-api | حرجة | واجهة Docker API متاحة دون مصادقة |
x11-unauth-access | حرجة | خادم X11 يسمح باتصالات غير موثّقة |
smb-signing-not-required | متوسطة | توقيع SMB غير مطلوب (خطر هجوم relay) |
telnet-cleartext | متوسطة | Telnet ينقل بيانات الاعتماد بنص صريح |
vnc-detected | متوسطة | تم اكتشاف VNC (غالبًا بمصادقة ضعيفة) |
ssh-password-auth | متوسطة | الخادم يسمح بالمصادقة بكلمة المرور |
ssh-weak-cipher | منخفضة | الخادم يوفّر شفرات ضعيفة (RC4، 3DES، Blowfish) |
ssh-weak-kex | منخفضة | الخادم يوفّر خوارزميات تبادل مفاتيح ضعيفة |
ssh-weak-mac | منخفضة | الخادم يوفّر خوارزميات MAC ضعيفة |
ftp-cleartext | منخفضة | FTP ينقل بيانات الاعتماد بنص صريح |
مثال على المخرجات مع التكوينات الخاطئة:```json { "host": "example.com", "port": 2375, "protocol": "docker", "anonymous_access": true, "security_findings": [ { "id": "docker-unauth-api", "severity": "critical", "description": "Docker API accessible without authentication", "evidence": "Successfully queried /version endpoint without credentials" } ] }
### دعم البروكسي
يدعم Nerva توجيه حركة الفحص عبر بروكسيات SOCKS5 وHTTP مع دقة DNS قابلة للتكوين.
**مخططات البروكسي المدعومة:**
- `socks5://` - بروكسي SOCKS5 مع دقة DNS محلية
- `socks5h://` - بروكسي SOCKS5 مع دقة DNS من جانب البروكسي (دائمًا)
- `http://` - بروكسي HTTP CONNECT
- `https://` - بروكسي HTTPS CONNECT
**مصادقة البروكسي:**```sh
# Inline authentication (URL format)
nerva -t example.com:80 --proxy socks5://username:[email protected]:1080
# Separate authentication flag
nerva -t example.com:80 --proxy socks5://127.0.0.1:1080 --proxy-auth username:password
استراتيجيات تحليل DNS (--dns-order):
| الخيار | الاستراتيجية | حالة الاستخدام |
|---|---|---|
l | محلي فقط | DNS محلي قياسي (افتراضي) |
p | وكيل فقط | فرض تحليل DNS من جانب الوكيل |
lp | محلي، مع الرجوع إلى الوكيل | جرّب المحلي أولاً، استخدم الوكيل عند الفشل |
pl | وكيل، مع الرجوع إلى المحلي | جرّب الوكيل أولاً، استخدم المحلي عند الفشل |
ملاحظة: مخطط socks5h:// يفرض تلقائياً تحليل DNS من جانب الوكيل (مكافئ لـ --dns-order p)
مثال فحص Tor:```sh
Scan .onion services through Tor (SOCKS5 proxy on port 9050)
nerva -t http://example.onion:80 --proxy socks5h://127.0.0.1:9050
**UDP عبر البروكسي:**```sh
# UDP scanning through SOCKS5 proxy (limited support)
nerva -t target.com:161 --proxy socks5://127.0.0.1:1080 --udp
⚠️ قيود UDP: دعم UDP عبر SOCKS5 محدود. لا تدعم جميع خوادم SOCKS5 اقتران UDP. قد يحدث الرجوع إلى UDP المحلي.
المسح المتوازي مع تحديد المعدل:```sh nerva -l large-target-list.txt -W 100 -H 5 -R 50 -v
**إيقاف التشغيل بلطف** (Ctrl+C يعيد نتائج جزئية):```sh
nerva -l huge-target-list.txt -W 50 -v
# Press Ctrl+C to stop — collected results are still printed
البروتوكولات المدعومة
أكثر من 170 إضافة لكشف الخدمات عبر TCP و UDP و SCTP:
وحدات بصمة HTTP (66)
كشف التقنيات لخدمات الويب، مُنظَّمة حسب الفئة:
الجدران النارية وأمن الشبكات (12)
| الوحدة | الوصف |
|---|---|
| Checkpoint | Check Point Security Gateway |
| Cisco ASA/FTD | Cisco firewall/VPN appliances |
| FortiGate | Fortinet firewall/VPN |
| GlobalProtect | Palo Alto Networks VPN |
| Juniper | Juniper SRX firewalls |
| OPNsense | OPNsense firewall |
| pfSense | pfSense firewall |
| SonicWall | SonicWall firewalls |
| AnyConnect | Cisco AnyConnect SSL VPN |
| Cisco Expressway | Cisco collaboration gateway |
| BigIP | F5 BIG-IP load balancer |
| WinRM | Windows Remote Management |
الذكاء الاصطناعي/LLM وتعلّم الآلة (6)
| الوحدة | الوصف |
|---|---|
| Ollama | Self-hosted LLM inference server |
| LocalAI | Self-hosted LLM inference (OpenAI-compatible) |
| Open WebUI | LLM web interface (ChatGPT-style) |
| Triton | NVIDIA Triton Inference Server |
| Weaviate | Vector database for AI |
| ChromaDB | Vector database |
قواعد البيانات ومخازن البيانات (12)
| الوحدة | الوصف |
|---|---|
| ArangoDB | Multi-model database |
| CockroachDB | Distributed SQL database |
| CouchDB | Apache document database |
| Elasticsearch | Search and analytics engine |
| etcd | Distributed key-value store |
| Milvus | Vector database |
| MinIO | S3-compatible object storage |
| Pinecone | Vector database |
| Redis Commander | Redis web management UI |
| TiDB | Distributed SQL database |
| YugabyteDB | Distributed SQL database |
| Qdrant | Vector database |
DevOps والبنية التحتية (14)
| الوحدة | الوصف |
|---|---|
| Artifactory | JFrog artifact repository |
| Consul | HashiCorp service mesh |
| Docker Registry | Container image registry |
| Gitea | Self-hosted Git service |
| Grafana | Observability platform |
| Harbor | Container registry |
| Jaeger | Distributed tracing |
| Jenkins | CI/CD automation |
| Kubernetes | Container orchestration API |
| Portainer | Docker management UI |
| Prometheus | Monitoring system |
| Swagger/OpenAPI | API documentation |
| TeamCity | CI/CD server |
| Vault | HashiCorp secrets management |
خوادم الويب وأطر العمل (10)
| الوحدة | الوصف |
|---|---|
| Apache HTTPD | Apache HTTP Server |
| Express.js | Node.js web framework |
| GoAhead | Embedded web server |
| Gotenberg | PDF generation service |
| Guacamole | Apache remote desktop gateway |
| SOAP | Web services |
| Tengine | Alibaba web server |
| Tomcat | Apache Tomcat |
| WordPress | CMS platform |
| UPnP | Universal Plug and Play |
المؤسسات والأعمال (8)
| الوحدة | الوصف |
|---|---|
| AEM | Adobe Experience Manager |
| Dynamics 365 | Microsoft Dynamics 365 / Power Apps |
| Oracle Service Cloud | Oracle CRM platform |
| SAP NetWeaver | SAP enterprise platform |
| Splunk | Log management platform |
| VMware Horizon | Virtual desktop infrastructure |
| QNAP QTS | NAS management |
| Exchange | Microsoft Exchange Server |
المنزل وإنترنت الأشياء (2)
| الوحدة | الوصف |
|---|---|
| Home Assistant | Home automation platform |
| UniFi/EdgeOS | Ubiquiti network devices |
أخرى (2)
| الوحدة | الوصف |
|---|---|
| Go pprof | Go profiling endpoints |
| NATS | Message broker |
قواعد البيانات (20)
| البروتوكول | النقل | المنافذ الافتراضية |
|---|---|---|
| PostgreSQL | TCP | 5432 |
| MySQL | TCP | 3306 |
| MSSQL | TCP | 1433 |
| Oracle | TCP | 1521 |
| MongoDB | TCP | 27017 |
| Redis | TCP/TLS | 6379, 6380 |
| Cassandra | TCP | 9042 |
| InfluxDB | TCP | 8086 |
| Neo4j | TCP/TLS | 7687 |
| DB2 | TCP | 446, 50000 |
| Sybase | TCP | 5000 |
| Firebird | TCP | 3050 |
| Memcached | TCP | 11211 |
| ZooKeeper | TCP | 2181 |
| Milvus | TCP | 19530, 9091 |
| CouchDB | HTTP | 5984 |
| Elasticsearch | HTTP | 9200 |
| ArangoDB | HTTP | 8529 |
| ChromaDB | HTTP | 8000 |
| Pinecone | HTTP | 443 |
الوصول عن بُعد (6)
| البروتوكول | النقل | المنافذ الافتراضية |
|---|---|---|
| SSH | TCP | 22, 2222 |
| RDP | TCP/TLS | 3389 |
| Telnet | TCP | 23 |
| VNC | TCP | 5900 |
| AnyDesk | TCP | 7070 |
| TeamViewer | TCP | 5938 |
الويب وواجهات API (2)
| البروتوكول | النقل | ملاحظات |
|---|---|---|
| HTTP/HTTPS | TCP | HTTP/2, tech detection via Wappalyzer |
| Kubernetes | TCP | API server detection |
المراسلة وقوائم الانتظار (10)
| البروتوكول | النقل | المنافذ الافتراضية |
|---|---|---|
| Kafka | TCP/TLS | 9092, 9093 |
| MQTT 3/5 | TCP/TLS | 1883, 8883 |
| AMQP | TCP/TLS | 5672, 5671 |
| ActiveMQ | TCP/TLS | 61616, 61617 |
| NATS | TCP/TLS | 4222, 6222 |
| Pulsar | TCP/TLS | 6650, 6651 |
| SMTP | TCP/TLS | 25, 465, 587 |
| POP3 | TCP/TLS | 110, 995 |
| IMAP | TCP/TLS | 143, 993 |
| SMPP | TCP | 2775, 2776 |
خدمات الملفات والمجلدات (7)
| البروتوكول | النقل | المنافذ الافتراضية |
|---|---|---|
| FTP | TCP | 21 |
| SMB | TCP | 445 |
| NFS | TCP/UDP | 2049 |
| Rsync | TCP | 873 |
| TFTP | UDP | 69 |
| SVN | TCP | 3690 |
| LDAP | TCP/TLS | 389, 636 |
خدمات الشبكة (11)
| البروتوكول | النقل | المنافذ الافتراضية |
|---|---|---|
| DNS | TCP/UDP | 53 |
| DHCP | UDP | 67, 68 |
| NTP | UDP | 123 |
| SNMP | UDP | 161 |
| NetBIOS-NS | UDP | 137 |
| STUN | UDP | 3478 |
| OpenVPN | UDP | 1194 |
| IPsec | UDP | 500 |
| IPMI | UDP | 623 |
| CoAP | UDP | 5683 |
| Echo | TCP/UDP | 7 |
أنظمة التحكم الصناعي (18)
| البروتوكول | النقل | المنافذ الافتراضية | ملاحظات |
|---|---|---|---|
| Modbus | TCP | 502 | SCADA/PLC |
| S7comm | TCP | 102 | Siemens PLC |
| EtherNet/IP | TCP | 44818 | Rockwell/Allen-Bradley |
| PROFINET | TCP | 34962-34964 | Siemens industrial |
| BACnet | UDP | 47808 | Building automation |
| OPC UA | TCP | 4840 | Industrial interop |
| OMRON FINS | TCP/UDP | 9600 | OMRON PLC |
| MELSEC-Q | TCP | 5006, 5007 | Mitsubishi PLC |
| KNXnet/IP | UDP | 3671 | Building automation |
| IEC 104 | TCP | 2404 | Power grid SCADA |
| DNP3 | TCP | 20000 | Power grid SCADA |
| Codesys | TCP | 1200, 2455 | PLC runtime |
| Fox | TCP | 1911 | Tridium Niagara |
| PC WORX | TCP | 1962 | Phoenix Contact |
| ProConOS | TCP | 20547 | PLC runtime |
| HART-IP | TCP | 5094 | Process automation |
| EtherCAT | UDP | 34980 | Motion control |
| Crimson v3 | TCP | 789 | Red Lion HMI |
| PCOM | TCP | 20256 | Unitronics PLC |
| GE SRTP | TCP | 18245 | GE PLC |
| ATG | TCP | 10001 | Tank gauges |
الاتصالات وVoIP (17)
| البروتوكول | النقل | المنافذ الافتراضية | ملاحظات |
|---|---|---|---|
| Diameter | TCP/SCTP | 3868 | LTE/5G AAA |
| M3UA | SCTP | 2905 | SS7 over IP |
| M2UA | SCTP | 2904 | MTP2 User Adaptation |
| M2PA | SCTP | 3565 | MTP2 Peer Adaptation |
| SGsAP | SCTP | 29118 | Circuit-switched fallback |
| X2AP | SCTP | 36422 | LTE inter-eNodeB |
| IUA | SCTP | 9900 | ISDN over IP |
| SIP | TCP/UDP/TLS | 5060, 5061 | VoIP signaling |
| MEGACO/H.248 | UDP | 2944, 2945 | Media gateway |
| MGCP | UDP | 2427, 2727 | Media gateway |
| H.323 | TCP | 1720 | Video conferencing |
| SCCP/Skinny | TCP | 2000, 2443 | Cisco IP phones |
| IAX2 | UDP | 4569 | Asterisk protocol |
| GTP-C | UDP | 2123 | GPRS control |
| GTP-U | UDP | 2152 | GPRS user plane |
| GTP' | UDP | 3386 | GPRS charging |
| PFCP | UDP | 8805 | 5G user plane |
VPN والأمن (11)
| البروتوكول | النقل | المنافذ الافتراضية |
|---|---|---|
| SSH | TCP | 22, 2222 |
| OpenVPN | UDP | 1194 |
| WireGuard | UDP | 51820 |
| IPsec/IKEv2 | UDP | 500, 4500 |
| L2TP | UDP | 1701 |
| SSTP | TCP | 443 |
| GlobalProtect | HTTP | 443 |
| AnyConnect | HTTP | 443 |
| FortiGate | HTTP | 443 |
| STUN/TURN | UDP | 3478, 5349 |
| Kerberos | TCP | 88 |
الوصول عن بُعد والإدارة (10)
| البروتوكول | النقل | المنافذ الافتراضية |
|---|---|---|
| RDP | TCP/TLS | 3389 |
| VNC | TCP | 5900 |
| Telnet | TCP | 23 |
| WinRM | HTTP | 5985, 5986 |
| IPMI | UDP | 623 |
| SNMP | UDP | 161 |
| Zabbix Agent | TCP | 10050 |
| NRPE | TCP/TLS | 5666 |
| Docker | TCP/TLS | 2375, 2376 |
| X11 | TCP | 6000-6063 |
أدوات المطوّرين (8)
| البروتوكول | النقل | المنافذ الافتراضية |
|---|---|---|
| HTTP/HTTPS | TCP | 80, 443, 8080, 8443 |
| Java RMI | TCP | 1099 |
| JDWP | TCP | 5005 |
| RTSP | TCP | 554 |
| Linux RPC | TCP | 111 |
| JetDirect | TCP | 9100 |
| CUPS/IPP | TCP | 631 |
| SonarQube | TCP | 9000 |
استخدام المكتبة
استورد Nerva في تطبيقات Go الخاصة بك:```go package main
import ( "context" "fmt" "log" "net/netip" "time"
"github.com/praetorian-inc/nerva/pkg/plugins"
"github.com/praetorian-inc/nerva/pkg/scan"
)
func main() { // Configure scan config := scan.Config{ DefaultTimeout: 2 * time.Second, FastMode: false, UDP: false, Proxy: "socks5://127.0.0.1:1080", // optional ProxyAuth: "username:password", // optional DNSOrder: "p", // resolver strategy }
// Create target
ip, _ := netip.ParseAddr("93.184.216.34")
target := plugins.Target{
Address: netip.AddrPortFrom(ip, 22),
Host: "example.com",
}
// Run scan
results, err := scan.ScanTargets(context.Background(), []plugins.Target{target}, config)
if err != nil {
log.Fatal(err)
}
// Process results
for _, result := range results {
fmt.Printf("%s:%d - %s (%s)\n",
result.Host, result.Port,
result.Protocol, result.Transport)
}
}
راجع [examples/service-fingerprinting-example.go](https://github.com/praetorian-inc/nerva/blob/main/examples/service-fingerprinting-example.go) للحصول على مثال كامل قابل للتشغيل.
## حالات الاستخدام
### اختبار الاختراق
البصمة السريعة للخدمات المكتشفة أثناء الاستطلاع لتحديد نواقل الهجوم المحتملة.
### خطوط أنابيب اكتشاف الأصول
ادمج مع Naabu أو Masscan لجرد الأصول على نطاق واسع:```sh
naabu -host 10.0.0.0/24 -silent | nerva --json | jq '.protocol'
فحص أمان CI/CD
دمج في خطوط أنابيب النشر للتحقق من أن الخدمات المتوقعة فقط هي المكشوفة.
استطلاع Bug Bounty
تعداد الخدمات بسرعة عبر أهداف النطاق للعثور على نقاط نهاية مثيرة للاهتمام.
تحليل شبكات الاتصالات
بصمة عقد Diameter في شبكات LTE/5G باستخدام نقل SCTP (Linux):```sh nerva -t mme.telecom.local:3868 -S --json
## البنية المعمارية```mermaid
graph LR
A[host:port input] --> B[Target Parser]
B --> C[Scan Engine]
C --> D{Transport}
D -->|TCP| E[TCP Plugins]
D -->|UDP| F[UDP Plugins]
D -->|SCTP| G[SCTP Plugins]
E --> H[Service Detection]
F --> H
G --> H
H --> I[Metadata Extraction]
I --> J[JSON/CSV/Text Output]
لماذا Nerva؟
مقابل Nmap
- إعدادات افتراضية أذكى: يتحقق Nerva من البروتوكول الأكثر احتمالاً أولاً بناءً على رقم المنفذ
- مخرجات منظمة: دعم أصلي لـ JSON/CSV لسهولة التحليل والتكامل مع خطوط الأنابيب
- مركّز: بصمة الخدمة فقط — اقرنه مع ماسحات المنافذ المخصصة للاستكشاف
مقابل zgrab2
- الكشف التلقائي: لا حاجة لتحديد البروتوكول مسبقاً
- استخدام أبسط:
nerva -t host:portمقابلecho host | zgrab2 http -p port
استكشاف الأخطاء وإصلاحها
لا توجد مخرجات
السبب: المنفذ مغلق أو لم يتم اكتشاف خدمة مدعومة.
الحل: تحقق من أن المنفذ مفتوح:```sh nc -zv example.com 80
### أخطاء المهلة الزمنية
**السبب**: المهلة الافتراضية البالغة ثانيتين قصيرة جدًا للخدمات البطيئة.
**الحل**: قم بزيادة المهلة:```sh
nerva -t example.com:80 -w 5000 # 5 seconds
خدمات UDP غير المكتشفة
السبب: فحص UDP معطّل افتراضيًا.
الحل: فعّله باستخدام العلامة -U (قد يتطلب صلاحيات root):```sh
sudo nerva -t example.com:53 -U
### SCTP لا يعمل
**السبب**: SCTP مدعوم فقط على Linux.
**الحل**: شغّله على نظام Linux أو حاوية:```sh
docker run --rm nerva -t telecom:3868 -S
المصطلحات
- الخدمة (Service): خدمة شبكية تعمل على منفذ (SSH، HTTP، PostgreSQL، إلخ)
- البصمة (Fingerprinting): اكتشاف وتحديد نوع الخدمة وإصدارها وتكوينها
- الإضافة (Plugin): وحدة كشف خاصة ببروتوكول معين
- الوضع السريع (Fast Mode): فحص المنفذ الافتراضي فقط لكل بروتوكول (تحسين 80/20)
- النقل (Transport): بروتوكول طبقة الشبكة (TCP، UDP، أو SCTP)
الدعم
إذا وجدت Nerva مفيدًا، يُرجى التفكير في منحه نجمة:
المساهمة
نرحب بالمساهمات! راجع CONTRIBUTING.md للحصول على الإرشادات.
الترخيص
Apache 2.0 — راجع LICENSE للحصول على التفاصيل.
شكر وتقدير
Nerva هو fork مُصان من fingerprintx، الذي طورته في الأصل دفعة المتدربين لعام 2022 في Praetorian: