21-07-2005, 19:48
|
|
|
חבר מתאריך: 05.07.03
הודעות: 52
|
|
fread מתנהג מוזר
הקוד הבא הורץ ונתן לי תוצאה מוזרה: ה
dump
של קריאת התוכן השנייה - שהיא הקריאה הרביעית - הכיל 589 תווים, וזאת למרות שהועבר לפונקציית ה
fread
במפורש שעלייה לקרוא עד
0x126 = 294
תווים.
מצורף הפלט.
מישהו יכול לנחש למה?
קוד PHP:
$req = "\x2A\x01\x13\x5A\x00\x86\x00\x00\x00\x01\x00\x01\x 00\x09\x32\x34\x35\x36\x38\x37\x37\x31\x31\x00\x02 \x00\x08\xC2\x14\xB2\xF0\x0C\xB0\xEC\xAA\x00\x03\x 00\x33\x49\x43\x51\x20\x49\x6E\x63\x2E\x20\x2D\x20 \x50\x72\x6F\x64\x75\x63\x74\x20\x6F\x66\x20\x49\x 43\x51\x20\x28\x54\x4D\x29\x2E"; $fp = fsockopen("login.icq.com", 5190, $errno, $errst, 5); if(!$fp) warning("Couldn't connect to login.icq.com on port 5190"); else { fwrite($fp, $req); $i = 0; while(!feof($fp) && $i < 2) { $i++; debug("Reading a FLAP"); $flap_header = fread($fp, 6); if(strlen($flap_header) < 6) warning("Response shorter than FLAP header:\n" . strtoupper(bin2hex($flap_header))); else if((ord($flap_header{0}) != 0x2A)) warning("Unexpected FLAP header:\n" . strtoupper(bin2hex($flap_header))); else { $server_seq = (ord($flap_header{2})<<8) + ord($flap_header{3}); $response_len = (ord($flap_header{4})<<8) + ord($flap_header{5}); debug("Response lengh: " . strval($response_len)); $response = fread($fp, $response_len); debug("Responce:\nHeader:\n" . strtoupper(bin2hex($flap_header)) . "\n" . "Content:\n" . "\n" . strtoupper(bin2hex($response))); } } debug("End of communication"); }
פלט:
קוד:
DEBUG: Reading a FLAP
DEBUG: Response lengh: 4
DEBUG: Responce:
Header:
2A0184DC0004
Content:
00000001
DEBUG: Reading a FLAP
DEBUG: Response lengh: 294
DEBUG: Responce:
Header:
2A0484DD0126
Content:
000100093234353638373731310005001136342E31322E3234 2E3138303A35313930000601007F27D94F4DB92220767A73E5 C0E02A339D2907D551A228DC3C8EAA90A7A612C9FB76068815 995BC37C7BF041E15417A144164EF88DC6B43B198D47F08990 FD565CD26628EAA2B6644FBCE1F99D30791ADAE98E092F2F58 D099D41930470D7DF553BAB9288F95D9398E701574A8A14B78 1C19B85D2CE55B2C87B30C454F0A445FD39635C57A8D788A8D 1031E340E7AEC13516CB8F8AFBBABE68158985F7784A1F0C46 3AEB9141A7D660384D67AB48FE376B4C9800F49A7C96F2937C 3D338B61B12EB1E2EF35EBC37602DD374996623ABF4AB2CAE1 1829DF49CFAAC3467C6F67627A65D62EC84E1F046CA760A97C 6B5CFB9550783F662ADF6EA598288E6FEEE62E
DEBUG: End of communication
|