|
|
|
|
Wenn das OS die CPU nicht unterstützt, kann man neue Befehlssätze u.U. nicht benutzen (z.B. alles, was neue Register in die ISA einbaut) [das funktioniert dann schon korrekt, weil das OS ISA-Erweiterungen korrekt initialisieren muss, es gibt sie dann halt einfach nicht9. Für stabilen Betrieb wär ein aktueller Microcode ganz nice, aber den muss das OS in die CPU laden (wer spielt schon BIOS-Updates ein?) [0]. Damit Power-Management funktioniert, braucht das OS jedes mal neue Treiber, wenn es irgenwelche neuen C, S, T oder P-States gibt. Für neue Architekturen / Chips braucht der Scheduler u.U. Updates. Gibt bestimmt noch mehr Dinge, wo das OS die CPU explizit unterstützen muss, damit der Rechner anständig läuft.
[0] Das ist jetzt nicht so ganz unwichtig, in der Vergangenheit haben Microcode-Updates Dinge gefixt wie: Der ganze Rechner hängt sich auf, wenn irgendeine Anwendung einen bestimmten Befehl benutzt. Oder auch: Eine VM führt $dieseMagischeSequenz aus und kann damit im Speicher vom Hypervisor rumschreiben.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 16.03.2017 14:27]
|
|
|
|
|
|
Kam das bei Windows schon mal vor, dass die wirklich nen Cut gemacht haben und alte Betriebssysteme für neuere Hardware außen vor blieben?
|
|
|
|
|
|
|
| Zitat von csde_rats
Wenn es da noch mehr Stellen gibt... ZeroMQ (zmq_inproc) and be done with it. Wenn es nur die eine Stelle ist, ist das vielleicht ein bisschen Overkill.
| |
gibt nur diese eine stelle dafür.
|
|
|
|
|
|
|
| Zitat von theromi
Ich habe in letzter Zeit riesige I/O Probleme bei Netcup. Habe den Root mit SSD und bekomme teilweise nur ein paar Byte/s geschrieben.
Da nach einem Neustart alles wieder tutti ist (für ein paar Tage) gehe ich aktuell noch davon aus, dass ich was verbockt habe. Wie debugged man sowas?
| |
Hast du deren Image benutzt? Selber hochgezogen läuft wieder Bombe. *shrug*
|
|
|
|
|
|
|
| Zitat von GandalfDerPinke
Kam das bei Windows schon mal vor, dass die wirklich nen Cut gemacht haben und alte Betriebssysteme für neuere Hardware außen vor blieben?
| |
Soweit ich weiß nicht, es läuft halt nur nicht so gut, Hersteller liefern keine Treiber mehr etc.
Also ja, wenn die Frage ist, ob das (auch) eine MS-Drückerbandenstrategie ist, um Windows 10 dem Rachen der Leute runterzuforcieren, dann ist die Antwort ja.
| Zitat von kRush*
| Zitat von theromi
Ich habe in letzter Zeit riesige I/O Probleme bei Netcup. Habe den Root mit SSD und bekomme teilweise nur ein paar Byte/s geschrieben.
Da nach einem Neustart alles wieder tutti ist (für ein paar Tage) gehe ich aktuell noch davon aus, dass ich was verbockt habe. Wie debugged man sowas?
| |
Hast du deren Image benutzt? Selber hochgezogen läuft wieder Bombe. *shrug*
| |
#baremetal #selbstgehostet #masterrace
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 16.03.2017 15:04]
|
|
|
|
|
|
| Zitat von B0rG*
Mit openssh und SFTP geht das eigentlich ganz gut. Ich habe das einmal konfiguriert und fand es recht einfach und unproblematisch.
| |
Das scheint gar nicht übel zu sein, hat aber einige Mängel. Ich will folgendes erreichen: User legen Dateien in ein Verzeichnis /srv/dump, anschließend kann die Datei von einer Web-App (www-data) wegsortiert werden.
Wenn ich chroot auf /srv/dump mache, geht das nur, falls nur root /srv und /srv/dump schreiben kann. Ich muss also für die User ein schreibbares Subdirectory in /srv/dump erstellen, was unschön ist, weil sie bei sftp nicht direkt in dem Verzeichnis landen wo sie Dinge rein legen können.
Anschließend muss die Datei von www-data löschbar sein, aber ich denke, das lässt sich leicht einrichten.
/e: Mit einer Kombination von sshd ForceCommand und rssh geht es.
|
Code: |
Match group scponly
X11Forwarding no
AllowTcpForwarding no
ForceCommand /usr/local/bin/wrapper-shell
PasswordAuthentication yes
|
|
/usr/local/bin/wrapper-shell
|
Code: |
#! /bin/sh
rssh -c "$SSH_ORIGINAL_COMMAND"
|
|
|
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von Oli am 16.03.2017 15:37]
|
|
|
|
|
|
| Zitat von csde_rats
[0] Das ist jetzt nicht so ganz unwichtig, in der Vergangenheit haben Microcode-Updates Dinge gefixt wie: Der ganze Rechner hängt sich auf, wenn irgendeine Anwendung einen bestimmten Befehl benutzt. Oder auch: Eine VM führt $dieseMagischeSequenz aus und kann damit im Speicher vom Hypervisor rumschreiben.
| |
Das machen die nicht nur in der Vergangenheit, AMD wird wohl auch einen fuer Ryzen ausrollen. Im besten Fall, kommt das aber per BIOS-Update und nicht ueber das Betriebssystem.
| Zitat von GandalfDerPinke
Kam das bei Windows schon mal vor, dass die wirklich nen Cut gemacht haben und alte Betriebssysteme für neuere Hardware außen vor blieben?
| |
Im Consumermarkt kann ich mich nicht an so etwas erinnern es gibt auch keinen technischen Grund fuer diese laecherliche Fehlermeldung. Microsoft deaktiviert damit ja den bereits bestehenden Support.
csde_rats fuehrt da zwar eine Menge Punkte auf, aber das sind alle nicht entscheidend, es zaehlt nur X86_32 oder X86_64. Niemand auf der Welt hindert dich daran ein Debian 6 oder Windows XP auf Ryzen oder Core ix 7xxx zu installieren. Dann laeuft halt das Power-Management nicht so toll und im unguenstigsten Fall werden die IRQs oder was mit APIC ungeschickt verteilt. Was Microsoft da macht ist einfach nur gnadenlos Erpressung zu Windows 10! Huebschen neuen Prozessor haben Sie da? Waere doch Schade, wenn der mit Sicherheitsluecken zu kaempfen haette?
Loesung:
Windows 7 auf altem Intel Updaten, Platte raus und in neues System reinstecken? Aber dagegen haben sie ja die Softwareaktivierung ersonnen.
|
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von hoschi am 16.03.2017 15:28]
|
|
|
|
|
|
| Zitat von theromi
| Zitat von GandalfDerPinke
//@Omi:
Irgendwas voll? Arbeitsspeicher? Platte? Prozesse die alles klauen?
Was sagt atop?
| |
Ne, das ist ja das komische. CPU langweilt sich, RAM ist so 2GB (von 8GB). Swap ist leer.
I/O selbst muss ich mir mal angucken. Ein anderer Punkt wäre meine Festplattenvollverschlüsselung, aber der Entropiepool ist voll genug.
| |
Habe auch einen Root bei netcup, das Problem ebenfalls. Du könntest Mal mit "nosmp" booten, das hat bei mir geholfen. Netcup mag sich nicht dafür interessieren, meiner Meinung nach ist deren Hypervisor kaputt.
|
|
|
|
|
|
|
| Zitat von Madddi
| Zitat von theromi
| Zitat von GandalfDerPinke
//@Omi:
Irgendwas voll? Arbeitsspeicher? Platte? Prozesse die alles klauen?
Was sagt atop?
| |
Ne, das ist ja das komische. CPU langweilt sich, RAM ist so 2GB (von 8GB). Swap ist leer.
I/O selbst muss ich mir mal angucken. Ein anderer Punkt wäre meine Festplattenvollverschlüsselung, aber der Entropiepool ist voll genug.
| |
Habe auch einen Root bei netcup, das Problem ebenfalls. Du könntest Mal mit "nosmp" booten, das hat bei mir geholfen. Netcup mag sich nicht dafür interessieren, meiner Meinung nach ist deren Hypervisor kaputt.
| |
Dann habe ich aber nur noch einen Kern, oder?
|
|
|
|
|
|
|
|
|
|
|
Spoiler - markieren, um zu lesen:
Was mich bei xkcd immer weider wundert: Ich habe mich früher mal durch alle Comics durchgeklickt. Mehrmals. Aber trotzdem gibt es immer wieder alte Comics, die mir komplett neu sind?!
|
|
|
|
|
|
|
|
|
|
|
Ihre Wikimedia-Spendenbescheinigung war unrichtig - bitte nicht einreichen
Sie haben für Wikipedia und Freies Wissen im vergangenen Jahr gespendet oder Mitgliedsbeiträge geleistet. Durch einen Fehler unseres Versanddienstleisters hat es bei einer kleinen Gruppe von Unterstützenden, die Centbeträge mit in der Summe haben, ein Problem bei der Ausgabe dieser Summe gegeben. Dadurch haben Sie vor ein paar Tagen eine unrichtige Zuwendungsbescheinigung von uns per Post erhalten.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 17.03.2017 14:43]
|
|
|
|
|
|
als erstes mal, sorry das es etwas länger gedauert hat. kam was dazwischen.
ich zerpflück das mal kurz...
| Zitat von [KdM]MrDeath
müssten halt noch alle flags volatile deklariert sein oder?
| |
verwechsel das bitte nicht mit dem volatile aus java oder C#.
das sorgt in C/C++ "nur" dafür, dass der compiler da nichts an den markierten variablen umsortiert aka optimiert.
| Zitat von [KdM]MrDeath
das szenario ist so, dass für jede "netjack2-client-verbindung" ein eigenes objekt instantiiert wird, das ab dann in einem eigenen thread läuft.
| |
also fork-[join|exit] model? (nur halt mit threads, heisst da leider auch so)
| Zitat von [KdM]MrDeath
das ist aber nicht 100%ig zuverlässig (überraschung) weswegen da hässliche dinge entstehen können.
| |
ich tippe jetzt mal auf memory leaks in der der deluxe edition? potentiell auch noch hardware buffer leaks und co.
| Zitat von [KdM]MrDeath
hinzu kommt natürlich dass jackaudio natürlich auf windows, mac, linux und dort natürlich noch auf allem möglichen ARM gesockse läuft...
das ist codeintern auch schön in posix und nicht posix aufgeteilt aber halt dennoch nicht so einfach "nutz die spezialinstruktion und werd glücklich)
| |
das ist soweit nicht das problem, sofern da nicht gerade was ARMv5 mässiges auftaucht. sollte eher unwahrscheinlich sein, dass wäre dann pre-RPI 1/2 level hardware mit mehr als einem core.
wie schon gesagt die x86, POWER und ARMv7+ chips können das alle, bis auf das DCAS und das ist nur für die frühen x86_64 von AMD (Athlon 64 X2, Opteron 185) relevant gewesen. die dürften auch eher nicht mit in verwendung sein.
gelegentlich gabs da mal intel DOA boards, die da was im chipsatz vergeigt hatten und es daher nicht konnten. das wäre dann Core 2 und früher unter umständen gewesen.
du kannst da z.b. direkt alle leute ausschliessen, die Macs nutzen, die Windows >= 8.1 nutzen und vermutlich auch einen recht grossen teil der linux user, die irgendwas modernes mit multimedia kram aka spiele nutzen.
effektiv reden wir hier von hardware von vor mehr als 10 jahren!
auf den Load/Store architekturen wie POWER und ARM ist das so oder so anders und dort brauchst du diese DCAS sachen nicht, weil du dort die load-linked / store-conditional instruktionen hast, bei denen die SC instruktion abwürgt, sobald da zwischen dem LL und dem SC aufruf was mit dem speicher passierte, was nicht sollte.
| Zitat von [KdM]MrDeath
wenn diese verbindung nun in einen fehlerfall (im realtime zweig) läuft dann muss sie der master komponente (die nur einmal pro jack instanz läuft und für alle client verbindungen zuständig ist, d.h. diese instantiiert hat und auch wieder beenden muss) "irgendwie" signalisieren dass doch jetzt bitte alle sonstigen ressourcen freigegeben werden müssen und der destruktor des "netjack-client-verbindung-objekts" aufgerufen werden soll...
| |
also mehr oder weniger ne art GC für threads und deren resourcen?
die connection threads laufen im real-time bereich und der master nicht? das hab ich so richtig verstanden?
| Zitat von [KdM]MrDeath
ich such jetzt also ne möglichkeit wie diese client verbindungen (einmalig, da es ja um den destruktor geht) der master komponente signalisieren können "bitte beende mich" und das möglichst blockingfrei, da realtime.
| |
warum muss das noch non-blocking laufen, wenn die client verbindung tod ist und damit der thread nichts mehr zu tun hat?
irgendwie hab ich hier das gefühl, als wenn ich hier nen zusammenhang nicht sehe / kenne.
wenn die verbindungen jeweils mit einem worker thread gefahren werden und eine der verbindungen fertig ist, dann sollte doch vermutlich auch der thread eliminiert werden?
falls dem so ist, dann könnte man da einfach was aus der kategorie "atexit" für threads bauen, was die resourcen tilgt, kurz bevor sich der thread selbst terminiert. hier wären dann threads praktisch, die "detached" laufen, also sich selbst aus dem system entfernen, wenn sie fertig sind.
ich tippe jetzt mal drauf, dass da noch irgendwelche sachen in dem master teil verwaltet werden, auf das die client worker threads keinen zugriff haben bzw. nicht haben sollen.
| Zitat von [KdM]MrDeath
aktuell hab ich da was hingepfuscht(!) dass die clients bei sich nen flag setzen ob der destruktor aufgerufen werden soll oder nicht und die master komponente iteriert regelmässig über alle clients drüber und schaut bei welchen das flag gesetzt ist. da wir hier von audio verbindungen reden sind das auch eher so 1-jemals maximal 128 (seien wir grosszügug und sagen 1024...) also in der richtung "noch" nicht performancekritisch.
ich hatte mir schon was überlegt ala ne queue innerhalb der masterkomponente, für die jede verbindung ein element besitzt auf das diese selbst auch nen pointer haben.
dann noch zusätzlich ein "modified" flag.
wenn jetzt verbindungen aufgebaut/abgebaut werden dann modifiziert ja nur die master komponente (im nicht realtime zweig) die queue und kann da walten und schalten wie sie will.
die client verbindungen setzen dann zuerst(!) in ihrem queue element das "destruktor-flag" und dann das "queue-modified-flag" innerhalb der master komponente.
diese überprüft regelmäsig (oder per signal, da müsste man halt auch schauen wie das dann platformübergreifend non-blocking geht) das modified flag, wenn es gesetzt ist setzt es zurück und wandert dann durch die queue und ruft für alle elemente wo das "destruktor-flag" gesetzt ist eben den destruktor auf und entfernt das element.
aufgrund der reihenfolge wie das "modified-flag" gesetzt wird sollte sich da auch keine race condition auf tun in der dann ein element verschluckt wird, oder?
| |
die idee mit dem flag bzw. das zu registrieren und dann abzuarbeiten ist nicht so wirklich viel pfusch, wenn der rest nicht komplett umgestrickt werden soll. das ist effektiv das, was nen GC macht, nur in sehr viel komplizierter.
vorrausgesetzt ist sehe das alles richtig, dann brauchst du da keine queue.
der master erstellt die threads(?), denen kannst du parameter mit geben.
hier wäre es jetzt am einfachsten, wenn der master einfach nen stumpfes array hat, in dem er z.b. nen pointer zum destruktor hält, der array slot für jeden erstellten thread wird vom master zugewiesen und ändert sich nicht solange der thread existiert.
damit hast du nen 1:1 mapping zwischen array element und thread.
in dem array element kannst du halt ablegen was immer du willst. eine struktur mit nem func pointer zum destruktur und nen "cleanup" flag wären z.b. ne idee. das wäre effektiv das, was du da mehr oder weniger schon gedacht hast.
je nachdem ob der master jetzt ne spin loop hat oder blockt bis was passiert gibt hier jetzt zwei möglichkeiten:
spin:
bei jedem durchlauf scanst du das array nach gesetzten "cleanup" flags und rufst den destruktor auf, der dann seine sache macht. danach säuberst du das array element in dem du es auf z.b. NULL setzt. in C++ gäbs da was schöneres, was in C einfach sehr umfangreich würde.
event / blocking:
nen thread der fertig ist, setzt sein "cleanup" flag und setzt dann nen sync event (gibts auf unix nicht nativ, kann man aber recht einfach bauen*). der master wartet unter anderem auf dieses event und läuft dann weiter, wenn er das bekommt. ab hier kannst du dann effektiv das gleiche machen wie im spin teil.
(ein haken hier könnte sein, dass bei pthread nach wie vor keine möglichkeit gibt auf multiple events / conditions zu warten, wäre schön wenn es was wie Win32s WaitForMultipleObjects gäbe.)
die einzelnen array elemente können mit der zeit recycled werden. um da einen zu finden, den du nem thread zuweisen kannst scanst du einfach im master nach freien elementen und nutzt dann das erst beste. wichtig ist nur, dass die sich niemals ändern, so lange die threads aktiv sind.
das ist effektiv das gleiche wie ne handle table.
da in dem ganzen ausschliesslich der master die tabelle aka das array verwaltet und die threads lediglich mit ihren eigenen einträgen arbeiten brauchst du da effektiv gar nichts synchronisieren. keine atomics, kein gar nichts.
wichtig ist nur, dass sich in dem fall nichts an dem datenfluss ändert!
sobald irgendein anderer thread was and der tabelle ändert fliegt dir das um die ohren.
btw. die pthread TLS implementation (pthread_key*) nutzt effektiv nen array pro prozess und gibt jedem thread nen fixen slot in dem array, den dieser thread dann als seinen privaten bereich ansieht.
(siehe, erst bester treffer: https://github.com/lattera/glibc/blob/master/nptl/pthread_key_create.c)
----
* http://www.cs.wustl.edu/~schmidt/win32-cv-2.html
in C++ könnte man hier die von der handle table rausgegebenen handle in nen handle objekt wrappen, dass erlaubt dir als erstes mal, dass du da nen konkretes objekt hast mit dem du arbeitest und nicht nen integer, zweitens kannst du in der eigentlichen handle table ne referenz darauf mit ablegen, was es dir dann erlaubt die handle table zu verändern (grösser/kleiner machen, neu sortieren, etc) und dann die entsprechenden handle objekte zu aktualisieren.
damit kannst du den sachen effektiv die handle im live zustand neu zuweisen.
das ist in C ein wenig fugly bis nicht direkt machbar.
|
|
|
|
|
|
|
noch mal auf meine constexpr sache zurück zu kommen... ich brauch da mal ein etwas grösseres sample set:
|
Code: |
#include <cstdio>
#include <cstdint>
class StringLiteral
{
const char* m_Str;
size_t m_Size;
uint32_t m_Hash;
static constexpr uint32_t kFnvPrime32 = 16777619UL;
static constexpr uint32_t kFnvOffsetBasis32 = 0x811C9DC5UL;
constexpr uint32_t Fnv1Hash32(const char* data, size_t length)
{
uint32_t hash = kFnvOffsetBasis32;
for (size_t i = 0; i < length; ++i)
{
hash *= kFnvPrime32;
hash ^= data[i];
}
return hash;
}
public:
template<size_t N>
constexpr StringLiteral(const char(&str)[N])
: m_Str(str)
, m_Size(N - 1)
, m_Hash(Fnv1Hash32(str, N - 1))
{
}
constexpr char operator[](unsigned int index) const
{
return index < m_Size ? m_Str[index] : '\0';
}
constexpr size_t Size() const { return m_Size; }
constexpr const char* CString() const { return m_Str; }
constexpr uint32_t hash() const { return m_Hash; }
};
void func(const StringLiteral& s)
{
printf("String: %s, Length: %d, Hash: 0x%08X\n", s.CString(), s.Size(), s.hash());
}
int main(int argc, char* argv[])
{
func("hello world 132");
return 0;
}
|
|
übersetze ich das mit MSVC (v141 [vs2017] / v140 [vs2015]) ([x86|x64] release) bekomme ich da folgenden ASM output:
|
Code: |
29: uint32_t hash = kFnvOffsetBasis32;
01231040 mov eax,811C9DC5h
30: for (size_t i = 0; i < length; ++i)
01231045 xor ecx,ecx
01231047 nop word ptr [eax+eax]
31: {
32: hash *= kFnvPrime32;
33: hash ^= data[i];
01231050 movsx edx,byte ptr [ecx+1232120h]
01231057 imul eax,eax,1000193h
0123105D xor edx,eax
0123105F movsx eax,byte ptr [ecx+1232121h]
01231066 imul edx,edx,1000193h
0123106C xor edx,eax
0123106E movsx eax,byte ptr [ecx+1232122h]
01231075 imul edx,edx,1000193h
0123107B xor edx,eax
0123107D movsx eax,byte ptr [ecx+1232123h]
01231084 imul edx,edx,1000193h
0123108A xor edx,eax
0123108C imul eax,edx,1000193h
01231092 movsx edx,byte ptr [ecx+1232124h]
01231099 add ecx,5
0123109C xor eax,edx
0123109E cmp ecx,0Fh
012310A1 jb StringLiteral::Fnv1Hash32+10h (01231050h)
34: }
35:
36: return hash;
37: }
012310A3 ret 8
--- XYZXYZXYZXYZXYZXYZXYZXYZXYZXYZ -----------------------------
65: func("hello world 132");
012310B0 sub esp,8
012310B3 call StringLiteral::Fnv1Hash32 (01231040h)
012310B8 push eax
012310B9 push 0Fh
012310BB push 1232120h
012310C0 push 12320F8h
012310C5 call printf (01231010h)
012310CA add esp,10h
66:
67: return 0;
012310CD xor eax,eax
68: }
012310CF ret
|
|
das bedeutet effektiv, dass der compiler nicht in der lage ist, die constexpr zur compile-time aufzulösen. da er bei 012310B3 die hash funktion normal aufruft. kurioserweise kann er aber den rest sauber umsetzten.
mach ich das gleiche jetzt mit clang/c2 (ebenfalls vs 2017 v141), bekomme ich folgendes:
|
Code: |
65: func("hello world 132");
00AD1010 push 0D52DEC71h
00AD1015 push 0Fh
00AD1017 push dword ptr ds:[0AD2128h]
00AD101D push offset string "String: %s, Length: %d, Hash: 0x"... (0AD20F0h)
00AD1022 call printf (0AD1030h)
00AD1027 add esp,10h
66:
67: return 0;
00AD102A xor eax,eax
00AD102C ret
|
|
der wert bei 00AD1010 ist der zur compile-time berechnete hash wert. der rest wurde dann auch hier sauber umgesetzt.
was ich jetzt wissen will ist, ob das auch bei anderen compilern und in anderen versionen sauber fluppt und der msc compiler mal wieder was hat.
wäre schön, wenn ihr mir da vielleicht kurz feedback geben könntet, ob das sauber zur compile-time umgesetzt wird oder nicht. (ich brauche den asm output dazu nicht reicht, wenn ihr das identifizieren könnt, falls nicht, schickt mir das ergebnis vielleicht besser per PM, ansonsten wird das hier sehr viel und lang)
soweit ich das aus dem standard entnehmen kann (ja, ich hab es nachgelesen), sollte das eigentlich zur compile-time umgesetzt werden und nicht zur run-time, wie es microsofts compiler da macht.
ihr müsstet euch dazu den assembler output anschauen, weil die compiler da leider keine meldung zu produzieren, ob sachen wirklich zur compile-time ablaufen oder zur run-time.
das ist auch was, was die im standard irgendwie ein wenig verhauen haben. das wäre halt schon gut zu wissen, ob das zeugs jetzt compile- oder run-time evaluiert wurde/wird.
|
|
|
|
|
|
|
Our day started with the folks from 360 Security (@mj0011sec) attempting a full virtual machine escape through Microsoft Edge. In a first for the Pwn2Own competition, they absolutely succeeded by leveraging a heap overflow in Microsoft Edge, a type confusion in the Windows kernel, and an uninitialized buffer in VMware Workstation for a complete virtual machine escape. These three bugs earned them $105,000 and 27 Master of Pwn points. They won’t say exactly how long the research took them, but the code demonstration needed only 90 seconds.
http://blog.trendmicro.com/results-pwn2own-day-three/
Jemand baut Borg Binaries für ARMv4t (u.a. ARM7TDMI) und ARMv5... scheint nicht ganz so selten zu sein. Aber unwahrscheinlich, dass man da so ausversehen drüber stolpert in nem SBC oder sowas.
--
https://www.levenez.com/unix/unix.pdf
--
Sprachassistent: Google Home spielt unaufgefordert Werbung ab
*Schulterzuck* Wer sich sowas ins Haus stellt, hat eh irgendein Problem unterm Schädeldach.
|
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von csde_rats am 18.03.2017 16:20]
|
|
|
|
|
|
Hrhr. Ich habe hier gerade so eine lustige Netzwerkkamera aufm Schreibtisch, die mal neu konfiguriert werden müsste. Challenge 1: Das Ding hat keinen Reset-Knopf. Auch nicht im Gehäuse (dafür da aber stolze 3 FPGAs und nen 8051er). Challenge 2: Das Ding macht von sich aus keinen Traffic im Netzwerk. Also Port-Mirroring + Wireshark anmachen um zu schauen, für wen es sich hält, scheidet aus. Challenge 3: Der Hersteller hat eine Windows-EXE, wo man die MAC der Kamera eintippert und das Teil dann eine neue IP vergeben kann. Das geht aber nicht. Warum geht das nicht? Wireshark hält den ausgehenden Broadcast für TFTP mit einem fiktiven Opcode. Genaueres Hinsehen zeigt aber: Der fiktive Opcode sind die ersten zwei Bytes vom Herstellernamen, der Rest der Payload der Rest vom Namen, plus die aktuelle Software-Suite. Danach kommt dann eine 0x02, die sechs MAC-Bytes und dann die vier IPv4-Bytes. Auf eine Antwort scheint das Programm gar nicht zu warten - die erboste Antwort eines TFTP-Servers im Netzwerk ("Error Code, Code: Illegal TFTP Operation, Message: illegal (unrecognized) tftp operation") kommt gar nicht mehr an, da der Port bereits zu ist ("Destination unreachable (Port unreachable)").
Hm.
|
|
|
|
|
|
|
ist der hersteller zufällig eine firma namens axis?
pack da nen eintrag in deine lokale arp table and be done with it.
oh, vergiss bitte nicht die wieder zu entfernen.
|
|
|
|
|
|
|
Ne, ist ein bisschen länger, amerikanisch, mag es seine Initialen in jede Produktbezeichnung zu tun, und scheint weite Teile seiner Tools in AutoIt zu schreiben
// Ich bin inzwischen soweit, dass die Kamera sogar die IP anzunehmen scheint, aber obwohl Port 80 offen ist, mag sie nicht so recht HTTP sprechen.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 18.03.2017 22:44]
|
|
|
|
|
|
| In this paper, we demonstrate fine-grained software-based side-channel attacks from a malicious SGX [Software Guard Extensions] enclave targeting co-located enclaves. Our attack is the first malware running on real SGX hardware, abusing SGX protection features to conceal itself. Furthermore, we demonstrate our attack both in a native environment and across multiple Docker containers. We perform a Prime+Probe cache side-channel attack on a co-located SGX enclave running an up-to-date RSA implementation that uses a constant-time multiplication primitive. The attack works although in SGX enclaves there are no timers, no large pages, no physical addresses, and no shared memory. In a semi-synchronous attack, we extract 96% of an RSA private key from a single trace. We extract the full RSA private key in an automated attack from 11 traces within 5 minutes. | |
https://arxiv.org/abs/1702.08719
|
|
|
|
|
|
|
Kann es an einem fehlenden SPF record in den Zone Files meiner Domain liegen, dass Emails ausgehend von meinem Server von Gmail automatisch in den Spam Ordner sortiert werden?
|
|
|
|
|
|
|
Wenn in deinem Namen viel Spam verschickt wird kann ein entsprechender Record vermutlich zumindest dazu beitragen, dass das aufhört und Gmail die Mails eher durchlässt.
Ich würde gleich SPF und DMARC kombinieren, wenn du das DMARC Reporting aktivierst weißt du auch wieviel Spam da reinkommt. Google unterstützt das.
/e:
| The buffer size must not exceed the size of an atomic write to a disk file. | |
http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log
Als da wäre?
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von TheRealHawk am 22.03.2017 17:40]
|
|
|
|
|
|
Ich habe im X220 momentan den buendig mit dem Gehaeuse abschliessenden Akku mit vier Zellen, also den kleinsten mit 28,9 Wh. In X260 sind zwei davon eingebaut und ueblicherliche Weise verwendet man im X220 den mit sechs Zellen und 63 Wh.
Kein Powertop, mittlere Displayhelligkeit und WLAN an. Zum Glueck hat der nachfolgende Entladungszyklus gezeigt, dass der Akku in Ordnung ist. Boese CPU - so hungrig.
|
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von hoschi am 22.03.2017 18:25]
|
|
|
|
|
|
<2h auf Leer kann aber auch anstrengend werden.
|
|
|
|
|
|
|
SSLLabs so: weakdh, capped at B
den Shit gemacht, meckert immer noch Ist deren eigener Guide nicht mehr aktuell?
/e: fuckthishitgoinghome
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von kRush* am 22.03.2017 19:45]
|
|
|
|
|
|
| Zitat von kRush*
SSLLabs so: weakdh, capped at B
den Shit gemacht, meckert immer noch Ist deren eigener Guide nicht mehr aktuell?
| |
service neugestartet?
aktueller scan und nicht aus dem cache?
|
|
|
|
|
|
|
kT
|
[Dieser Beitrag wurde 4 mal editiert; zum letzten Mal von kRush* am 22.03.2017 19:46]
|
|
|
|
|
|
in dem alten edit stand was von lighttp - je nach maschine lohnt sich vielleicht auch einfach der umstieg auf nginx. der macht einfach nur spass zu konfigurieren <3
|
|
|
|
|
|
|
nginx-Konfiguration ist so einfach, dass sogar ich das kann.
|
|
|
|
|
|
|
|
|
|
Thema: Der Linux-Thread 100 // 0x23 ( const int MAX_POST = 30 * 100; // 0x23 ) |
|