Bun (Wikipedie), tj. běhové prostředí (runtime) a toolkit pro JavaScript a TypeScript, alternativa k Node.js a Deno, byl vydán ve verzi 1.4. Představení novinek také na YouTube. Bun byl přepsán z programovacího jazyka Zig do Rustu. Pomocí Claude Fable 5.
Vývojáři KDE na Mastodonu oznámili vydání balíku aplikací KDE Gear 26.08. Přehled novinek i s náhledy a videi v oficiálním oznámení.
Společnost PINE64 kvůli nedostatku a vysokým cenám DRAM a eMMC dočasně pozastavuje výrobu linuxových zařízení. Výroba zařízení jako PineTime, PineVoice a Pinecil pokračuje.
Společnost Stripe se dohodla na akvizici společnosti OpenRouter. Za 7,5 miliardy dolarů.
Byla vydána nová verze 1.27 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.
V pátek 28. srpna se v Praze uskuteční již osmý Mobile Linux Hackday. Jako obvykle se potkáme v pražské pobočce SUSE v Karlíně na Křižíkově, takže kromě mobilního Linuxu je to tentokrát i příležitost přijít se podívat na nově zrekonstruované kanceláře. Začínáme v 10:00, ale dorazit můžete samozřejmě kdykoliv v průběhu dne. Setkáním vás provede David Heidelberg, vývojář GPU ovladačů v Mesa 3D a jeden z hlavních lidí české komunity kolem … více »
Představen byl Raspberry Pi Compute Module 5 Programming Jig. Jedná se o zařízení umožňující připravit Compute Module 5 do plně funkčního stavu bez nutnosti použití dalších vstupně / výstupních desek. Podporuje automatizaci pomocí nástroje rpi-sb-provisioner. Podrobnosti v dokumentaci.
Hackeři ve Francii ukradli data více než půl milionu daňových poplatníků. Je to jeden z největších hackerských útoků v dějinách země. O útoku z konce června informovala až teď daňová správa. Teprve od pondělí dotčeným občanům zasílá e-maily s instrukcemi, jak postupovat dál. Hackeři se sice nedostanou k penězům dotyčných, hrozí ale věrohodné podvody. Hackeři získali třeba celá jména, údaje o rodinných příslušnících nebo také údaje o
… více »Společnost Framework představila nový Framework Laptop 12 s Intel Core Series 3, Thunderbolt 4, Wi-Fi 7, volitelnou čtečkou otisků prstů a podsvícenou klávesnicí s open-source firmwarem ZMK. Objednat lze s předinstalovanou Fedorou 44 KDE Plasma.
Byl vydán Mozilla Firefox 154.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 154 bude brzy k dispozici také na Flathubu a Snapcraftu.
dd-čkem zkopíroval image na desktop, a sháněl něco čím to opravit. Nástrojů hafo (jak pro win tak pro lin), ovšem žádný nefungoval, tak jsem ho musel napsat sám.
Tento zápisek je pro případ, že by Windows Mobile 6 opět napadlo že zápis náhodného sektoru do root dir je dobrý nápad, a já bych to musel psát znovu. Algoritmus: načte se FAT, identifikují se konce chainů (0xffff marker), zpětně se dojde na začátek chainu, načte se cluster a otestuje se jestli je to začátek adresáře. Pokud ano a .. ukazuje na cluster 0, je tento chain adresářem odkazovaným z root dir. Takto nalezené adresáře se proto zapíšou jako nová root dir. Soubory v root dir mě nezajímají, to co jsem potřeboval bylo v adresářích. Jejich jména si skript samozřejmě musí vyvyslet.
Vážně by mě zajímalo co se vlastně stalo. FAT i data byly v pořádku, jen byl přepsán root dir. Taky jsem si všiml že poslední dva bajty boot sectoru nebyly jak má správně být 0xaa, 0x55 ale 0xff, 0x55.
from struct import unpack, pack
from string import split
from array import array
# read boot sec
f = open('image', 'r+')
bps, spc, res, fats, rdir, spf, secs, fat = \
unpack('<11xHBHBH3xH8xI18x8s450x', f.read(512))
fat = split(fat)[0]
if fat != "FAT16": raise
rdir = (rdir * 32 + bps - 1) / bps
clu0 = res + fats * spf + rdir
clus = (secs - clu0) / spc
print "DISK: %d + %d * %d %s + %d" % (res, fats, spf, fat, rdir)
print "DATA: %d * %d * %d" % (clus, spc, bps)
# read fat
prev = {}
f.seek(res * bps)
for i, x in enumerate(array("H", f.read(spf * bps))):
prev.setdefault(x, []).append(i)
# process chains
root = ''
for i in prev[0xffff]:
chain = []
while 1:
chain.append(i)
try: i, = prev[i]
except: break
if i < 2 or len(chain) > 5:
continue
# read first 2 dir entries
f.seek((clu0 + (i - 2) * spc) * bps)
n1, c1, s1, n2, c2, s2 = unpack('<' + '12s14xHI'*2, f.read(64))
if n1 == '. \x10' and c1 == i and s1 == 0 and \
n2 == '.. \x10' and c2 == 0 and s2 == 0:
root += 'DIR%-5d \x10' % i + pack('<14xHI', i, 0)
# write new root dir
if len(root) > rdir * bps: raise
f.seek((res + fats * spf) * bps)
f.write(root + '\0' * (rdir * bps - len(root)))
Tiskni
Sdílej: