بدست آوردن IP کاربر در تلگرام با یک تماس
اگر تا به حال از خود پرسیده اید که چگونه اپلیکیشن های پیام رسان مانند تلگرام و واتس اپ در حین مکالمه در پشت صحنه کار می کنند، این مقاله برای شما مناسب است. ما با استفاده از ابزار قدرتمند Wireshark، یک ابزار تجزیه و تحلیل ترافیک شبکه، راهی برای بدست آوردن ای پی (IP) کاربر در تلگرام که در حال تماس با آن هستیم، کشف خواهیم کرد.
بدست آوردن آی پی دیگران در تلگرام
مرحله ۱: دانلود Wireshark
قبل از شروع، باید Wireshark را دانلود و بر روی کامپیوتر خود نصب کنید. می توانید نسخه دانلودی را در وب سایت رسمی Wireshark پیدا کنید .
مطمئن شوید که نسخه سازگار با سیستم عامل خود را انتخاب کنید.
مرحله ۲: فیلتر کردن ترافیک STUN
پس از باز کردن Wireshark، رابطی را مشاهده خواهید کرد که ترافیک شبکه بلادرنگ را ضبط می کند. بیایید ترافیک STUN را که پروتکلی است که تلگرام برای ارتباط استفاده می کند، فیلتر کنیم. در نوار فیلتر، روی نماد جستجو کلیک کنید تا گزینه جستجو باز شود. سپس گزینه “String” را انتخاب کرده و در قسمت جستجو عبارت “XOR-MAPPED-ADDRESS” را تایپ کنید.
مرحله ۳: شروع ضبط داده
اکنون، ما آماده ایم تا شروع به گرفتن داده ها کنیم. مطمئن شوید که Wireshark در حال اجرا است و از طریق تلگرام با کاربری که می خواهید آدرس IP او را پیدا کنید تماس بگیرید. هنگامی که کاربر به تماس پاسخ داد، Wireshark شروع به نمایش داده های گرفته شده می کند. به دنبال اطلاعات مربوط به پروتکل STUN در لیست بگردید و آدرس IP کاربری که تماس را دریافت کرده است را خواهید یافت.
مرحله ۴: شناسایی آدرس IP
برای تسهیل شناسایی آدرس IP مورد نظر، از عملکرد جستجوی Wireshark استفاده کنید. بر روی گزینه “Find” کلیک کنید و “XOR-MAPPED-ADDRESS” را در قسمت جستجو تایپ کنید. آدرس IP کاربر بلافاصله بعد از این رشته ظاهر می شود.
خودکارسازی با Golang
با استفاده از زبان برنامه نویسی Golang، می توانیم کل فرآیند توضیح داده شده در بالا را خودکار کنیم. در زیر یک کد Golang وجود دارد که این کار را به طور موثر و قابل اعتماد انجام می دهد:
package mai import ( "fmt" "log" "os" "os/exec" "strings" ) func main() { const CAP_PATH = "/tmp/tg_cap.pcap" // Temporary path for pcap capture file const CAP_TEXT = "/tmp/tg_text.txt" // Temporary path for text file with information const CAP_DURATION = "5" // Capture duration in seconds // Get the external IP address of the device ipCmd := exec.Command("curl", "-s", "icanhazip.com") ipOutput, err := ipCmd.Output() if err != nil { log.Fatal("Failed to get IP address:", err) } MY_IP := strings.TrimSpace(string(ipOutput)) // Check if Wireshark is installed _, err = exec.LookPath("tshark") if err != nil { log.Println("[-] Wireshark not found. Try installing Wireshark first.") log.Println("[+] Debian-based: sudo apt-get install -y tshark") log.Println("[+] RedHat-based: sudo yum install -y tshark") os.Exit(1) } fmt.Println("[+] Discovering User's IP Address on Telegram using Golang") fmt.Println("[+] Starting traffic capture. Please wait for", CAP_DURATION, "seconds...") // Start traffic capture with Wireshark captureCmd := exec.Command("tshark", "-w", CAP_PATH, "-a", "duration:"+CAP_DURATION) captureOutput, err := captureCmd.CombinedOutput() if err != nil { log.Fatal("Traffic capture error:", err) } fmt.Println("[+] Traffic captured.") // Convert pcap file to readable text file convertCmd := exec.Command("tshark", "-r", CAP_PATH) convertOutput, err := convertCmd.Output() if err != nil { log.Fatal("Error converting pcap file to text:", err) } err = os.WriteFile(CAP_TEXT, convertOutput, 0644) if err != nil { log.Fatal("Error writing text file:", err) } fmt.Println("[+] Pcap file successfully converted to text.") // Check if Telegram traffic is present in the text file if strings.Contains(string(convertOutput), "STUN 106") { fmt.Println("[+] Telegram traffic found.") // Extract the IP address from the text extractCmd := exec.Command("cat", CAP_TEXT, "|", "grep", "STUN 106", "|", "sed", "'s/^.*XOR-MAPPED-ADDRESS: //'", "|", "awk", "'{match($0,/[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+/); ip = substr($0,RSTART,RLENGTH); print ip}' | awk '!seen[$0]++'") extractOutput, err := extractCmd.Output() if err != nil { log.Fatal("Error extracting IP address:", err) } TG_OUT := strings.TrimSpace(string(extractOutput)) IP_1 := strings.Fields(TG_OUT)[0] IP_2 := strings.Fields(TG_OUT)[1] var IP string // Check if the IP address is ours or the recipient's if MY_IP == IP_1 { IP = IP_2 } else if MY_IP == IP_2 { IP = IP_1 } else { IP = "[-] Sorry. IP address not found." os.Exit(1) } // Get host information for the IP address hostCmd := exec.Command("host", IP) hostOutput, err := hostCmd.Output() if err != nil { log.Fatal("Error getting host information:", err) } fmt.Println("[+]") fmt.Println("[+] IP Address:", IP) fmt.Println("[+] Host:", strings.TrimSpace(string(hostOutput))) fmt.Println("[+]") // Clean up temporary files err = os.Remove(CAP_PATH) if err != nil { log.Fatal("Cleanup error:", err) } err = os.Remove(CAP_TEXT) if err != nil { log.Fatal("Cleanup error:", err) } fmt.Println("[+] Cleanup completed.") } else { fmt.Println("[-] Telegram traffic not found.") fmt.Println("[!]") fmt.Println("[!] Run this script only >>>AFTER<<< the response.") fmt.Println("[!]") os.Exit(1) } fmt.Println("[?]") fmt.Print("[?] Run whois", IP, "? (Y/N): ") // Check if the user wants to run the whois command var answer string fmt.Scanln(&answer) if strings.ToUpper(answer) == "Y" { whoisCmd := exec.Command("whois", IP) whoisOutput, err := whoisCmd.Output() if err != nil { log.Fatal("Error running whois command:", err) } fmt.Println(string(whoisOutput)) } else { fmt.Println("[+] Goodbye!") os.Exit(0) } }
نتیجه
با استفاده از Wireshark و تجزیه و تحلیل ترافیک STUN در تلگرام، میتوانیم آدرس IP کاربری که با آن در حال تعامل هستیم را کشف کنیم. این اطلاعات می تواند برای اهداف مختلفی مانند بررسی موقعیت جغرافیایی کاربر یا شناسایی مشکلات احتمالی شبکه مفید باشد. حالا بعد از بدست آوردن آدرس IP یک کاربر در تلگرام میتونید مقاله های کاربردی و جالب زیر رو در لرن پارسی دنبال کنید.
با این حال، مهم است که به یاد داشته باشید که حریم خصوصی کاربر همیشه باید رعایت شود. استفاده از این تکنیک ها باید از نظر اخلاقی و در محدوده قانونی انجام شود.
سلام میشه ادمین یک گروه رو در تلگرام پیدا کرد؟شماره تلفن یا مکانش؟ ممنون کلاه برداری کرده .اگه کمک کنید خیلی ممنون میشم