<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://hlds.pl/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
		<id>http://hlds.pl/index.php?action=history&amp;feed=atom&amp;title=Wyciaganie_hasla_z_pliku_BLOB</id>
		<title>Wyciaganie hasla z pliku BLOB - Historia wersji</title>
		<link rel="self" type="application/atom+xml" href="http://hlds.pl/index.php?action=history&amp;feed=atom&amp;title=Wyciaganie_hasla_z_pliku_BLOB"/>
		<link rel="alternate" type="text/html" href="http://hlds.pl/index.php?title=Wyciaganie_hasla_z_pliku_BLOB&amp;action=history"/>
		<updated>2026-09-09T07:58:51Z</updated>
		<subtitle>Historia wersji tej strony wiki</subtitle>
		<generator>MediaWiki 1.18.1</generator>

	<entry>
		<id>http://hlds.pl/index.php?title=Wyciaganie_hasla_z_pliku_BLOB&amp;diff=6257&amp;oldid=prev</id>
		<title>KaszpiR o 22:23, 16 gru 2006</title>
		<link rel="alternate" type="text/html" href="http://hlds.pl/index.php?title=Wyciaganie_hasla_z_pliku_BLOB&amp;diff=6257&amp;oldid=prev"/>
				<updated>2006-12-16T22:23:15Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← poprzednia wersja&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Wersja z 22:23, 16 gru 2006&lt;/td&gt;
		&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 178:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 178:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;*/&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;*/&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; &amp;lt;/c&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; &amp;lt;/c&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[kategoria:steam]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[kategoria:oprogramowanie]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wiki-wiki:diff:version:1.11a:oldid:6256:newid:6257 --&gt;
&lt;/table&gt;</summary>
		<author><name>KaszpiR</name></author>	</entry>

	<entry>
		<id>http://hlds.pl/index.php?title=Wyciaganie_hasla_z_pliku_BLOB&amp;diff=6256&amp;oldid=prev</id>
		<title>Trawiator o 22:22, 16 gru 2006</title>
		<link rel="alternate" type="text/html" href="http://hlds.pl/index.php?title=Wyciaganie_hasla_z_pliku_BLOB&amp;diff=6256&amp;oldid=prev"/>
				<updated>2006-12-16T22:22:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Kod źródłowy programiku pozwalającego wyciągnąć hasło do [[Steam]]a z pliku blob.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
    Copyright 2005,2006 Luigi Auriemma&lt;br /&gt;
&lt;br /&gt;
    This program is free software; you can redistribute it and/or modify&lt;br /&gt;
    it under the terms of the GNU General Public License as published by&lt;br /&gt;
    the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
    (at your option) any later version.&lt;br /&gt;
&lt;br /&gt;
    This program is distributed in the hope that it will be useful,&lt;br /&gt;
    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
    GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
    You should have received a copy of the GNU General Public License&lt;br /&gt;
    along with this program; if not, write to the Free Software&lt;br /&gt;
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA&lt;br /&gt;
&lt;br /&gt;
    http://www.gnu.org/licenses/gpl.txt&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define VER     &amp;quot;0.1&amp;quot;&lt;br /&gt;
#define FIND    &amp;quot;Phrase&amp;quot; &amp;quot;\x01\x50&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
typedef int (WINAPI*_steam_dll_pwd)(u_char *phrase, int len, void *boh);&lt;br /&gt;
_steam_dll_pwd  steam_dll_pwd;&lt;br /&gt;
void std_err(void);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
    FILE        *fd;&lt;br /&gt;
    HINSTANCE   hLib;&lt;br /&gt;
    struct stat xstat;&lt;br /&gt;
    u_int       len;&lt;br /&gt;
    u_short     nlen;&lt;br /&gt;
    u_char      *buff,&lt;br /&gt;
                *p,&lt;br /&gt;
                *limit;&lt;br /&gt;
&lt;br /&gt;
    struct {&lt;br /&gt;
        u_int   boh1;&lt;br /&gt;
        u_char  *pass;&lt;br /&gt;
        u_int   boh2;&lt;br /&gt;
        u_int   boh3;&lt;br /&gt;
        u_int   boh4;&lt;br /&gt;
        u_int   passlen;&lt;br /&gt;
        u_int   boh5;&lt;br /&gt;
        u_int   boh6;&lt;br /&gt;
    } steam_pwd;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    setbuf(stdout, NULL);&lt;br /&gt;
&lt;br /&gt;
    fputs(&amp;quot;\n&amp;quot;&lt;br /&gt;
        &amp;quot;Steam password decoder &amp;quot;VER&amp;quot;\n&amp;quot;&lt;br /&gt;
        &amp;quot;by Luigi Auriemma\n&amp;quot;&lt;br /&gt;
        &amp;quot;e-mail: aluigi@autistici.org\n&amp;quot;&lt;br /&gt;
        &amp;quot;web:    aluigi.org\n&amp;quot;&lt;br /&gt;
        &amp;quot;\n&amp;quot;, stdout);&lt;br /&gt;
&lt;br /&gt;
    if(argc &amp;lt; 2) {&lt;br /&gt;
        printf(&amp;quot;\n&amp;quot;&lt;br /&gt;
            &amp;quot;Usage: %s &amp;lt;ClientRegistry.blob&amp;gt;\n&amp;quot;&lt;br /&gt;
            &amp;quot;\n&amp;quot;&lt;br /&gt;
            &amp;quot; NOTE: this password recovery tool works ONLY on the same computer in which\n&amp;quot;&lt;br /&gt;
            &amp;quot;       was located the ClientRegistry.blob file!\n&amp;quot;&lt;br /&gt;
            &amp;quot;\n&amp;quot;, argv[0]);&lt;br /&gt;
        fputs(&amp;quot;\n    Press RETURN to exit\n&amp;quot;, stdout);&lt;br /&gt;
        fgetc(stdin);&lt;br /&gt;
        exit(1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;- load %s in memory\n&amp;quot;, argv[1]);&lt;br /&gt;
    fd = fopen(argv[1], &amp;quot;rb&amp;quot;);&lt;br /&gt;
    if(!fd) std_err();&lt;br /&gt;
&lt;br /&gt;
    fstat(fileno(fd), &amp;amp;xstat);&lt;br /&gt;
    buff = malloc(xstat.st_size);&lt;br /&gt;
    if(!buff) std_err();&lt;br /&gt;
    fread(buff, xstat.st_size, 1, fd);&lt;br /&gt;
    fclose(fd);&lt;br /&gt;
&lt;br /&gt;
    limit = buff + xstat.st_size - sizeof(FIND);&lt;br /&gt;
    for(p = buff; p &amp;lt; limit; p++) {&lt;br /&gt;
        if(!memcmp(p, FIND, sizeof(FIND) - 1)) break;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(p &amp;lt; limit) {&lt;br /&gt;
        p += 30;&lt;br /&gt;
        nlen = *(u_short *)p;&lt;br /&gt;
        p += 2;&lt;br /&gt;
        len = *(u_int *)p;&lt;br /&gt;
        p += 4 + nlen;&lt;br /&gt;
&lt;br /&gt;
        printf(&amp;quot;\nEncoded:  %.*s\n&amp;quot;, len, p);&lt;br /&gt;
&lt;br /&gt;
        fputs(&amp;quot;\n- load the local STEAM.DLL file in memory\n&amp;quot;, stdout);&lt;br /&gt;
        hLib = LoadLibrary(&amp;quot;STEAM.DLL&amp;quot;);&lt;br /&gt;
        if(!hLib) std_err();&lt;br /&gt;
        steam_dll_pwd = (_steam_dll_pwd)0x20252397;&lt;br /&gt;
&lt;br /&gt;
        printf(&amp;quot;\n&amp;quot;&lt;br /&gt;
            &amp;quot;NOTE: now if the tool crashes means the password cannot be recovered since the\n&amp;quot;&lt;br /&gt;
            &amp;quot;      ClientRegistry.blob file has not been created on this computer (Steam\n&amp;quot;&lt;br /&gt;
            &amp;quot;      uses a ProductID based key).\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        memset(&amp;amp;steam_pwd, 0, sizeof(steam_pwd));&lt;br /&gt;
        steam_dll_pwd(p, len, &amp;amp;steam_pwd);&lt;br /&gt;
&lt;br /&gt;
        printf(&amp;quot;\nPassword: %s\n&amp;quot;, steam_pwd.pass);&lt;br /&gt;
        FreeLibrary(hLib);&lt;br /&gt;
&lt;br /&gt;
    } else {&lt;br /&gt;
        printf(&amp;quot;\n&amp;quot;&lt;br /&gt;
            &amp;quot;- Password not found, probably you have not saved it or have disabled the\n&amp;quot;&lt;br /&gt;
            &amp;quot;  storing of the local account informations through the Settings menu of Steam\n&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    free(buff);&lt;br /&gt;
    fputs(&amp;quot;\n    Press RETURN to exit\n&amp;quot;, stdout);&lt;br /&gt;
    fgetc(stdin);&lt;br /&gt;
    return(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void std_err(void) {&lt;br /&gt;
    perror(&amp;quot;\nError&amp;quot;);&lt;br /&gt;
    fputs(&amp;quot;\n    Press RETURN to exit\n&amp;quot;, stdout);&lt;br /&gt;
    fgetc(stdin);&lt;br /&gt;
    exit(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
This is the final part of the algorithm, I'm too lazy to implement&lt;br /&gt;
also the creation of the hash required for the decoding&lt;br /&gt;
&lt;br /&gt;
u_char *steam_pwd(u_char *phrase) {&lt;br /&gt;
    int     i,&lt;br /&gt;
            len;&lt;br /&gt;
    static u_char  *pwd;&lt;br /&gt;
    u_char  k[16],&lt;br /&gt;
            *p,&lt;br /&gt;
            al,&lt;br /&gt;
            bl;&lt;br /&gt;
&lt;br /&gt;
    len = strlen(phrase) &amp;gt;&amp;gt; 1;&lt;br /&gt;
    pwd = malloc(len + sizeof(char *)); // needed for direct sscanf&lt;br /&gt;
    p = phrase;&lt;br /&gt;
    for(i = 0; i &amp;lt; len; i++, p += 2) sscanf(p, &amp;quot;%02hhX&amp;quot;, &amp;amp;pwd[i]);&lt;br /&gt;
&lt;br /&gt;
    memcpy(k, HASH + PRODUCTID, 16);    // NOT implemented&lt;br /&gt;
&lt;br /&gt;
    for(i = 0; i &amp;lt; len; i++) {&lt;br /&gt;
        bl = pwd[i];&lt;br /&gt;
        al = k[i &amp;amp; 15];&lt;br /&gt;
        k[i &amp;amp; 15] = bl;&lt;br /&gt;
        pwd[i] = al ^ bl;&lt;br /&gt;
    }&lt;br /&gt;
    pwd[i] = 0;&lt;br /&gt;
&lt;br /&gt;
    return(pwd + (*pwd &amp;amp; 15) + 3);&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
 &amp;lt;/c&amp;gt;&lt;/div&gt;</summary>
		<author><name>Trawiator</name></author>	</entry>

	</feed>