- 65 milliárd dollárt költ AI-ra idén a Meta; készül Trump AI-akcióterve
- Trump lesöpörte Elon Musk kritikáját, vége az együttműködésnek?
- Trump tárgyal, 30 napon belül dönthet a TikTokról
- Külsős játékokat hoz a saját áruházába az Epic
- Leszámolt a jegybanki digitális pénzekkel Trump, készülnek a kriptotörvények
Új hozzászólás Aktív témák
-
"A pontok szóközöket helyettesítenek, csak a fórummotor kiszedi őket..."
Nem szóközök, hanem nullás bájtok, amiknek nincs (olvasható) karakteres megfelelője. És nem a fórum motor, hanem a HTML "szedi ki őket", valójában pedig csak összevonja a white space-eket. A HTML alapú megjelenítés sok szempontból nem szerencsés ilyen esetben, de a hexadecimális formátum sokat tud ebben segíteni. Hasonló okból barátai a fejlesztőknek a hexa editorok.
-
Inhouse
őstag
válasz cinemazealot #14 üzenetére
Köszi! Nem az olvashatóság volt a gondom, hanem, hogy nem adott egy akármilyen karaktert a tartományon kívülről, nem voltak az elején a üres (vagy egyéb értelmezhetetlen, stb...) karakterek a 0x00-k (v. 0x03) miatt. Lepróbáltam újra és most a onecompiler oldal is úgy adja vissza, hogy vezető semmikkel és a hosszellenőrzés szerint is 8, így már érthetőbb lenne...de mi történt tegnap óta?
Tegnap is csak bemásoltam a prg-d, és amikor egy változó kapott értéket, akkor kiírattam.
De lehet, hogy saját magam vezettem meg valamiért...echo-val néztem.
Ahogy látom voltak változások a PHP verziókban ebben a függvényben is, a onecompiler meg nem írja, hogy mennyire frisset futtat. A https://www.w3schools.com/ oldal is levágja a 0x00-kat, mint tegnap még a onecompiler. Tudom, telepítsek. Ma már megtaláltam a var_dump() függvényt...
onecompiler:
var_dump(hex2bin("000000000048656c6c6f")). "\n"; -> string(10) ".....Hello"
w3schools:
var_dump(hex2bin("000000000048656c6c6f")). "\n"; -> string(10) "Hello"
A pontok szóközöket helyettesítenek, csak a fórummotor kiszedi őket...[ Szerkesztve ]
Üdv Inhouse
-
"Ez a hex2bin() meg csak párat."
Ugye nem a képernyőről próbálod leolvasni hány bájtot gyárt a függvény? Mondom, bármit is kapsz ennek kimenetéül, azt ne próbáld szövegként elolvasni!
Egyébként rém egyszerű a működése, mert a függvény hexadecimális bemenetének és bináris kimenetének hossza (bájt- vagy ha úgy tetszik, karakterszáma) között egy 2-es osztó áll: beadsz neki n (páros) számú hexadecimális karaktert string formájában és kiad n/2 számú bájtot szintén string formájában. Amit csak akkor tudsz olvasni, ha mindegyik bájt értéke a 32...127 (hexadecimálisan 0x20...0x7f) tartományban van, ami jelen esetben nagy eséllyel nincs így.
-
Inhouse
őstag
Ja, korai volt az örömöm, a bin2hex() csak visszaalakítja a korábbi hexa alakba, a hex2bin() inverze (triviális, csak elsőre nem esett le), a hexáig jó vagyok HB-ban is. Csak ott az ennek megfelelőnek vélt függvény annyi karaktert gyárt, amennyi kijön a hexa értékből. Ez a hex2bin() meg csak párat. Gyanús, hogy ez így nem lesz jó...lehet, hogy 01... olvasható formátumban kéne valahogy megnézzem a kapott értéket, mindkét platformon...
[ Szerkesztve ]
Üdv Inhouse
-
Inhouse
őstag
válasz cinemazealot #8 üzenetére
A bin2hex() ötlet jónak tűnik, majd kipróbálom. Köszi!
Nyilvánvaló, hogy egy ilyet kiírni szövegként teljességgel értelmetlen volna, mert az csak egy bájtsor...
Nem is az értékekre voltam kíváncsi, összehasonlítási alap lett volna az enyémmel, ezen hasalt itt el a dolog. Idáig sem volt olyan egyszerű, nekem a PHP 0 tudásommal, de utána néztem, és megkerestem a megfelelőjét HB-ban. UNIX time-ot nem találtam, azt pl. megírtam.
Igen, este idáig jutottam, utána írtam ide....ha igény van rá, este leírom egy hsz-ben az egész program működését sorról-sorra.
Van, van! Köszi!
Főleg, mert ezután jön az a rész, amit megint nem igazán értek még...néztem az operátorokat és a ^ jel sem volt köztük, illetve ez a többsoros ord()-os rész is ködös, de ebből itt van a Skori megoldása is, hátha...
Mindenesetre már sokat segítettél és köszönöm az elkövetkezőket is.
Rám is vár még egy Base32 függvény írása, mert az nincs HB-ban, nem találtam. Base64 van beépített, meg írtam egy sajátot is tanulásképpen.Üdv Inhouse
-
ekkold
őstag
válasz cinemazealot #4 üzenetére
Csak javaslat, de szerintem építsd be a base32 dekódoló függvényt a php fájlodba, így nem kellene külső 3. fél által gyártott kódot meghívnod.
http://skory.gylcomp.hu/ http://www.skory.z-net.hu/ https://skori.hu/ https://skori.spacetechnology.net/
-
válasz cinemazealot #8 üzenetére
"Mert ha jól sejtem, tegnap 18:23:30-kor futtattad."
Bocs, 18:23:30 és 18:23:59 között.
-
Még egyszer: a hex2bin() kimenete nem egy hétköznapi (olvasható) string, hanem egy (jelen pillanatban 8 karakter, azaz 8 bájt hosszú) 64 bites integer string-ként tárolva. Pusztán azért, mert így kényelmesebb vele dolgozni. Ne próbáld megfejteni "00|00|00|00|03|73|f2|a7" bájtsorozat (string) szöveges jelentését, mert nincs neki olyan. Ez nem más, mint az 57930407 értékű egész szám big-endian ábrázolása, ami a 1737912210/30 matematikai művelet eredményeként született. Mert ha jól sejtem, tegnap 18:23:30-kor futtattad.
Online szerintem ne akarj PHP-t futtatni, inkább telepíts fel egyet magadnak, futtasd a programot parancssorból és itt-ott állítsd meg, hogy "kiechózd" egyik-másik változót. Viszont kiechózni sem lehet mindent, pl. a bináris tartalom parancssorban is szarul mutatna. Ahhoz előbb érdemes beletenni a bináris tartalmat egy bin2hex()-be, csak hogy hexadecimálisan olvasható legyen.
Még egy gondolat a stringekhez: a PHP-ban minden bináris tartalom (pl. hang, kép, videó, Excel tábla, Word vagy PDF dokumentum) betölthető stringbe. Nyilvánvaló, hogy egy ilyet kiírni szövegként teljességgel értelmetlen volna, mert az csak egy bájtsor, aminek elemei bőven túlmutathatnak az ASCII kódtáblán.
Szerk.: Most melózom, de ha igény van rá, este leírom egy hsz-ben az egész program működését sorról-sorra.
[ Szerkesztve ]
-
Inhouse
őstag
válasz cinemazealot #6 üzenetére
Szia!
Köszi, hogy válaszoltál. Láttam ezeket, amiket linkeltél, de a te gyakorlati megvalósításod nagyon megtetszett és soronként szerettem volna megérteni és átültetni. De valószínűleg ez mégsem ilyen egyszerű, meghaladja az én képességeim.
Engem az zavar a hex2bin()-ben, hogy nem értem az eredményét, miért csak (látszólag?) azt a 2 értéket alakítja át?
00|00|00|00|03|73|f2|a7 -> s�
Vagy az echo nem ír ki olyat, ami nem olvasható string? De akkor miért nincs 0xA7, alias § nálam, ž netes környezetben? Csak az angol ABC és számok?
A másik problémám, hogy megnéztem a hash részt, a HB-s változat hexaban ugyanazt az eredményt adja, a RAW opcióval meg csak talán, az értelmesen olvasható ASCII része stimmel, a többit egyelőre nem tudom...lehet, hogy csak megjelenítési gond, ugyanúgy megenné és kiköpné az eredményt... az online PHP futtatós oldal ebben nem barátom.[ Szerkesztve ]
Üdv Inhouse
-
Szia Inhouse!
A hex2bin() pontosan azt teszi, amit a neve sugall, illetve amit a manual ír róla: egy bináris stringet hoz létre. Ennek azonban nem feltétele, hogy a string ember által olvasható is legyen. Ha megfigyeled, az eredménye csupán egy 64 bites (8 bájtos) "big-endian" integer, aminek alapja a 30 másodpercenkénti számláló, kiegészítve balról nulla karakterekkel (!). Mivel az alapja integer, amúgy sem lenne string formában olvasható, de nem is ez a cél, hanem hogy bekerüljön a h() függvénybe, ahol a jobbról nulla bájtokkal (!) kiegészített és aztán jól "meg-scramble-zött" kulcshoz hozzáfűzve ráeresztjük az SHA1-et... aztán mégegyszer egy másik pad bájttal.
Olvasd el a linkelt szabványt... illetve az abban hivatkozott RFC 4226 és RFC 2104 szabványokat, utóbbiban lesz jobban kifejtve ez a fenti eljárás.
-
Inhouse
őstag
Szia cinemazealot !
Engem is foglalkoztatott, hogy megcsinálom. Nem vagyok PHP programozó, a legfejlettebb nyelv a Harbour, amiben dolgozok, ez egy Clippert magában foglaló modernizált C alapú nyelv.
Gondoltam elegendő lesz, vannak fejlett szövegfeldolgozó függvények, számrendszer konvertálás, sha1, stb...
Néztem a kódod, elakadtam a hex2bin() függvénynél. Azt látom, hogy ez nem az aminek a neve mutatná, hanem a hexa adatból ASCII karakterek lesznek. De a netes példákban nem kezdődik 9 nullával, mint itt. Van egy ilyen függvény HB-ban, HB_HexToStr(), de az fogja és végigmegy, és minden pár byte-ból próbál karaktert gyártani. Ezért az őeredménye a 0x00-k miatt üresekkel kezdődik, aztán a 0x03 egy szivecske 1250-es kódkészletnél, stb...
Példa:
PHP:
000000000373f2a7 -> s�
HB:
000000000373f2a7 -> ♥sň§
Weben próbáltam https://onecompiler.com/php/-el. Miért csak a 0x73(s) és az 0xF2(ň) van látszólag benne. Gondolom a 0xF2 azért más, mert erre nincs felkészítve a webes felület megjelenítésben, vagy más a kódlap...[ Szerkesztve ]
Üdv Inhouse
-
Szuper, örülök.
#2 ekkold
Olvastam a megoldásodról, irigykedtem is, hogy megelőztél. De azon túl, hogy egy bagatell problémán akadtam fenn, én kizárólag a TOTP magjára fókuszáltam. Aztán ha valaki olyan összkomfortos megoldást akar, mint a Tiéd, az legfeljebb körülbástyázza az áhított védelmi és kényelmi funkciókkal.#3 Doky586
Nem beszélve arról a pár ezer forintos kínai switch-ről, amit a minap tettem a hálózatra. -
"Az igazsághoz persze hozzátartozik, hogy ez a program is behúz egy 3. fél által gyártott kódot, ami"...
A teljes bizonyossághoz még ellenőrizni kellene a
- windows forráskódját
- a böngésző forráskódját
- a hálókártya driver forráskódját
- minden mást is ami futhat...
Hogy teljes biztonságban legyünk. -
ekkold
őstag
Hasonlót gyártottam én is, persze jelszavas védelemmel kiegészítve.
Több kulcsot kezel, és egy táblázatban jeleníti meg, valahogy így:
Hogy ne kelljen külső dekódert használni azt is beemeltem a php kódba:
$map = array(
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', // 7
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', // 15
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', // 23
'Y', 'Z', '2', '3', '4', '5', '6', '7', // 31
'=' // padding char
);
$flippedMap = array(
'A'=>'0', 'B'=>'1', 'C'=>'2', 'D'=>'3', 'E'=>'4', 'F'=>'5', 'G'=>'6', 'H'=>'7',
'I'=>'8', 'J'=>'9', 'K'=>'10', 'L'=>'11', 'M'=>'12', 'N'=>'13', 'O'=>'14', 'P'=>'15',
'Q'=>'16', 'R'=>'17', 'S'=>'18', 'T'=>'19', 'U'=>'20', 'V'=>'21', 'W'=>'22', 'X'=>'23',
'Y'=>'24', 'Z'=>'25', '2'=>'26', '3'=>'27', '4'=>'28', '5'=>'29', '6'=>'30', '7'=>'31'
);
function decode($input) {
global $map;
global $flippedMap;
if(empty($input)) return;
$paddingCharCount = substr_count($input, $map[32]);
$allowedValues = array(6,4,3,1,0);
if(!in_array($paddingCharCount, $allowedValues)) return false;
for($i=0; $i<4; $i++){
if($paddingCharCount == $allowedValues[$i] &&
substr($input, -($allowedValues[$i])) != str_repeat($map[32], $allowedValues[$i])) return false;
}
$input = str_replace('=','', $input);
$input = str_split($input);
$binaryString = "";
for($i=0; $i < count($input); $i = $i+8) {
$x = "";
if(!in_array($input[$i], $map)) return false;
for($j=0; $j < 8; $j++) {
$x .= str_pad(base_convert($flippedMap[@$input[$i + $j]], 10, 2), 5, '0', STR_PAD_LEFT);
}
$eightBits = str_split($x, 8);
for($z = 0; $z < count($eightBits); $z++) {
$binaryString .= ( ($y = chr(base_convert($eightBits[$z], 2, 10))) || ord($y) == 48 ) ? $y:"";
}
}
return $binaryString;
}//fv
/*
function encode($input, $padding = true) {
global $map;
global $flippedMap;
if(empty($input)) return "";
$input = str_split($input);
$binaryString = "";
for($i = 0; $i < count($input); $i++) {
$binaryString .= str_pad(base_convert(ord($input[$i]), 10, 2), 8, '0', STR_PAD_LEFT);
}
$fiveBitBinaryArray = str_split($binaryString, 5);
$base32 = "";
$i=0;
while($i < count($fiveBitBinaryArray)) {
$base32 .= $map[base_convert(str_pad($fiveBitBinaryArray[$i], 5,'0'), 2, 10)];
$i++;
}
if($padding && ($x = strlen($binaryString) % 40) != 0) {
if($x == 8) $base32 .= str_repeat($map[32], 6);
else if($x == 16) $base32 .= str_repeat($map[32], 4);
else if($x == 24) $base32 .= str_repeat($map[32], 3);
else if($x == 32) $base32 .= $map[32];
}
return $base32;
}
*/[ Szerkesztve ]
http://skory.gylcomp.hu/ http://www.skory.z-net.hu/ https://skori.hu/ https://skori.spacetechnology.net/
-
PSti
tag
Tökéletesen működik, nagyon köszönöm!
[ Szerkesztve ]
Új hozzászólás Aktív témák
- Nők, nőügyek (18+)
- Samsung Galaxy Z Fold4 - egyre megy, honnan nézed
- SD memóriakártyák (SD, SDHC, SDXC, micro SD)
- Autóápolás, karbantartás, fényezés
- Ukrajnai háború
- Trump lesöpörte Elon Musk kritikáját, vége az együttműködésnek?
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- SSD kibeszélő
- Óra topik
- Bemutatkozott a Poco X7 és X7 Pro
- További aktív témák...
Állásajánlatok
Cég: Marketing Budget
Város: Budapest