Gabriele “Charlie” Guizzardi

03 Mar, 2010

Non scegliete provider improvvisati!

Posted by: Gabriele Guizzardi In: Altro| Software

Vi confesso che sono molto demoralizzato dalla mancanza di professionalità di alcuni provider o forse meglio dire dalla loro improvvisazione nel settore della fornitura di servizi e spazi web. Mi spiego riportando due esempi.

Qualche tempo fa, per un cliente, ho realizzato un ecommerce (tenete a mente il tipo di applicazione) su un provider toscano (ce ne sono tanti da quella regione quindi è inutile cercare di capire chi sia). Ci siamo accorti subito che non era possibile fare l’upload delle immagini poiché le cartelle del sito non avevano i permessi in scrittura, neanche i permessi privati.

Va bene, ho pensato ad una svista e infatti con una telefonata e alcuni email le cartelle necessarie sono state rese “scrivibili”. Non mi era mai capitato ma ci sta.

Qualche altra prova e vedo che ancora non è possibile fare upload di file usando il comando “move_upload_file()“. Fortunatamente nel mio ecommerce c’è un ben strutturato sistema di debug degli errori e noto l’impossibilità di scrivere nella cartella temporanea di PHP, quella indicata nella variabile “upload_tmp_dir” nel file “php.in“.

Lo faccio presente con un mail al reparto tecnico del provider e sapete cosa mi hanno risposto (faccio copia e incolla del mail):

Con la presente siamo a confermarLe l’avvenuta attivazione della cartella temporanea “upload_tmp_dir” necessaria per il corretto funzionamento del “file upload” tramite programmi php, con permessi di scrittura.

Avete letto bene, mi avevano creato una cartella “upload_tmp_dir” nella root! Devo ammettere che se non avessi dovuto consegnare a breve il lavoro mi sarei fatto anche una sana risata.

Nel frattempo avevano tolto tutti i permessi a tutte le cartelle riportando la situazione alla fase iniziale. Per farla breve, per poter risolvere la cosa, ho cancellato la mia cartella che richiedeva accessi in scrittura e ho rinominato la loro cartella “upload_tmp_dir” con il nome di quella che serviva a me acquisendo così i suoi permessi.

Ciliegina sulla torta? C’è c’è, vi ricordate che avevo scritto di prendere nota che il sito è un ecommerce? Bene, cosa fanno gli ecommerce quando si compra? Vi mandano un mail di conferma! Questo provider aveva pensato bene di disabilitare l’invio di posta dal server e, quando ha sbloccato la cosa dietro invio di mail, ha comunque impedito di inviare mail formattate HTML pertanto, le converme d’ordine, arrivano in HTML trasformato in testo. Un casino incomprensibile di caratteri.

Altro esempio. Un paio d’anni fa un altro cliente si serviva di un provider nella provincia di Terni rappresentato da un buffo omuncolo che si era improvvisato (e atteggiato) esperto in sicurezza. Talmente esperto che un giorno ho scoperto, per puro caso ( ;) ), che era possibile navigare liberamente dentro tutte le cartelle di tutti i domini all’interno del server. In pratica bastava usare le classiche istruzioni del PHP “dir”, “readdir” e “opendir” per navigare liberamente su tutto il server, cancellando, rinominando e volendo attuando la totale devastazione dei siti o ancora peggio l’inserimento di codice malevole.

In conclusione, quando scegliete un provider, cercate di controllarne prima le competenze chiedendo specifiche caratteristiche e permessi sul dominio che andate a registrare/realizzare. Fate girare diverso codice che impegni un po tutti gli aspetti e le attività che vi farete “girare” sopra. Cercate inltre di trovarne due o più di questi provider che soddisfino le vostre esigenze per avere una alternativa pronta e anche una differenza di prezzi da presentare ai vostri clienti.

Infine, quando il cliente vi dice “…ho già tutto io…” telefonate a casa che farete tardi!

Invia l'articolo in formato PDF a PDF Download

01 Mar, 2010

Gli errori di Windows

Posted by: Gabriele Guizzardi In: Altro| Pillole di Saggezza| Software

Ecco un elenco degli errori presentati da Windows in un message box:

1 Incorrect function.
2 The file specified.
3 The path specified.
4 The system can not open the file.
5 Access is denied.
6 Invalid descriptor
7 The control blocks of memory have been destroyed.
8 Not enough space to process this command.
9 Address of control block storage invalid.
10 Environment incorrect.
11 Attempt to load a program incorrect format.
12 Access code is invalid.
13 Data not valid.
14 Insufficient memory for this operation.
15 The reader specified.
16 Unable to delete the directory.
17 Unable to move the file to a different disk drive.
18 There are no more file.
19 Media write protected.
20 The device specified.
21 The device is not ready.
22 The device does not recognize the command.
23 Data Error (cyclic redundancy check).
24 The program issued a command length incorrect.
25 The reader can not find area or specific track on the disc.
26 Unable to access the disk or the disk specified.
27 The reader can not find the sector requested.
28 The printer is out of paper.
29 Writing on the device not specified.
30 playback on the device specified.
31 A device attached to system not functioning properly.
32 The process can not access the file because it is used by another process.
33 The process can not access the file because another process has locked a portion.
34 The reader does not contain the correct diskette. Insert xxx (serial number of volume: xxx) xxx in the drive.
36 Too many files opened for sharing.
38 End of File reached.
39 The disk is full.
50 This claim is not supported.
51 Windows can not find the network path. Verify that the network path is correct and the destination computer is not busy or turned off. If Windows still can not find the network path, contact your network administrator.
52 You were not connected because there was a duplicate name on the network. Go to System in Control Panel and change the computer name and try again.
53 The network path was not found.
54 The network is busy.
55 The resource or device specified network is no longer available.
56 The network BIOS command limit has been reached.
57 A network adapter error occurred.
58 The specified server can not perform the requested operation.
59 Unexpected network error.
60 The card is not compatible remote.
61 The queue of the printer is saturated.
62 The server does not have enough space to store the file to print.
63 Your file waiting to be printed was deleted.
64 The specified network name is no longer available.
65 Network access is denied.
66 The network resource type is incorrect.
67 Network name not found.
68 The name limit for the network adapter on the local computer has been exceeded.
69 Exceeding the limit of NetBIOS sessions.
70 The remote server has been paused or is in phase.
71 It is possible to connect to this remote computer at this time because there are already as many connections as the computer can accept.
72 The printer or device specified disk has been suspended.
80 The file exists.
82 Unable to create directory or file.
83 Fail on the interruption 24.
84 Not enough memory to process this request.
85 local device name already in use.
86 The network password specified is invalid.
87 The parameter is incorrect.
88 Error writing to the network.
89 The system can not run another process at this time.
100 Can not create another system semaphore.
101 Another process has the exclusive semaphore.
102 The semaphore is set and can not be closed.
103 The semaphore can not be restored.
104 Can not request exclusive semaphores at a break.
105 The semaphore is no longer the owner.
106 Insert the diskette for the reader xxx.
107 The program stopped because you have not inserted on the other disk.
108 The disk is either in use or locked by another process.
109 The communication channel has been closed.
110 Unable to open the device or file specified.
111 Filename too long.
112 Not enough space on the disk.
113 There is more internal file identifiers available.
114 The internal file identifier is incorrect target.
117 The IOCTL call made by the application is not correct.
118 The value of verification in writing is invalid.
119 The system does not support the requested command.
120 This function is not supported by the system.
121 The timeout period has expired semaphore.
122 The data area passed to a system call is insufficient.
123 Syntax of the file name, directory or volume incorrect.
124 The system call level is incorrect.
125 The disk has no volume name.
126 The specified module could not be found.
127 The specified procedure could not be found.
128 There are no child processes to wait.
129 The application xxx can not be executed in Win32 mode.
130 Attempt to use a file descriptor on an open disk partition for an operation different from a disk I / O flow.
131 Attempt to move the file pointer before the beginning of the file.
132 Unable to establish the file on the device or file specified.
133 JOIN or SUBST command can not be used for a drive that already contains readers joints.
134 Attempt to use a JOIN or SUBST command on a drive that has already been attached.
135 Attempt to use a JOIN or SUBST command on a drive that has already been substituted.
136 The system tried to delete the join of a drive not included.
137 The system tried to delete the substitution of a drive not substituted.
138 The system tried to join a drive to a directory on a joined drive.
139 The system tried to substitute a drive to a directory on a substituted drive.
140 The system tried to join a drive to a directory on a substituted drive.
141 The system tried to substitute a drive to a directory on a joined drive.
142 Operation JOIN or SUBST impossible now.
143 The system can not join or substitute a drive to a directory on that drive.
144 The directory is not a subdirectory of the root directory.
145 The directory is not empty.
146 The specified path is used in a substitution.
147 Insufficient resources to process this command.
148 Can not now use the path specified.
149 Attempt to join or substitute a drive to a directory which is the target of a previous substitute.
150 Either the trace information system were not specified in your CONFIG.SYS file, the track is prohibited.
151 The number of specified semaphore events for DosMuxSemWait is not correct.
152 DosMuxSemWait did not execute. Too many semaphores are already set.
153 List DosMuxSemWait incorrect.
154 The volume label entered exceeds the limit of characters in the file system destination.
155 Can not create another thread.
156 The recipient process has refused the signal.
157 The segment is already discarded and can not be locked.
158 Segment already unlocked.
159 The address of the thread ID is incorrect.
160 One or more arguments are invalid.
161 The specified path is invalid.
162 A signal is already pending.
164 The system can not create more threads.
167 Unable to lock a portion of a file.
170 The requested resource is in use.
173 No application lock was waiting for the cancellation.
174 The file system does not support atomic changes to the type of lock.
180 The system detected a segment number incorrect.
182 The operating system can not run xxx.
183 Can not create a file that already exists.
186 The past is incorrect indicator.
187 The name of the semaphore system specified was not found.
188 The operating system can not run xxx.
189 The operating system can not run xxx.
190 The operating system can not run xxx.
191 xxx Unable to run in Win32 mode.
192 The operating system can not run xxx.
193 xxx is not a valid Win32 application.
194 The operating system can not run xxx.
195 The operating system can not run xxx.
196 The operating system can not run this application program.
197 Currently, the operating system is not configured to run this application.
198 The operating system can not run xxx.
199 The operating system can not run this application program.
200 The code segment can not be greater than or equal to 64 K.
201 The operating system can not run xxx.
202 The operating system can not run xxx.
203 The system could not find the environment option specified.
205 No process in the sub-tree of the order has a signal handler.
206 File name or extension is too long.
The stack 207 of the ring 2 is currently used.
208 Wildcards (* or?) Were specified incorrectly or too many.
209 The signal being posted is incorrect.
210 The signal handler can not be established.
212 The segment is locked and can not be reallocated.
214 Too many dynamic link modules are attached to this program or dynamic link module.
215 Can not nest calls to LoadModule.
216 The image file xxx is valid, but it is for a different kind of computer from the current computer.
230 The status of the communication channel is not valid.
All 231 instances of the communication channels are occupied.
232 The communication channel is about to be closed.
233 There is no process at the other end of the channel.
234 More data are available.
240 The session was canceled.
254 The name extended attribute (EA) specified was not valid.
255 The extended attributes (EA) are inconsistent.
258 timed out waiting.
259 No data are available.
266 The copy functions can not be used.
267 The directory name is invalid.
275 The extended attributes (EA) are not in the buffer.
276 The extended attribute file on the mounted file system is damaged.
277 The file of the table of extended attributes (EA) is full.
278 The descriptor extended attributes (EA) specified is invalid.
282 The mounted file system does not support extended attributes.
288 Attempt to release mutex which the appellant does not own.
298 A semaphore has been over-subscribed.
299 Only part of a request ReadProcessMemory or WriteProcessMemory was made.
300 Oplock request is denied.
301 Receipt of invalid Oplock was received by the system.
302 The volume is too fragmented to complete this operation.
303 The file can not be opened because it is being removed.
317 The message text associated with the number 0xxxx is not in the message file for xxx.
487 Attempt to access invalid address.
534 Arithmetic results exceeding 32 bits.
535 There is a process at the other end of the canal.
536 The system waits for a process opens the other end of the canal.
994 Access to the extended attribute (EA) has been refused.
995 The operation of input / output has been abandoned due to the discontinuation of a thread or at the request of an application.
996 The input / output overlap is not in a reported condition.
997 An operation of input / output overlap is running.
998 Access to this memory location is invalid.
999 Error during a paging operation.
1001 Recursion too deep, stack overflowed.
1002 The window can not act on the message sent.
1003 Could not perform this function.
1004 Indicators invalid.
1005 The volume does not contain a file system known. Check that all file system drivers are loaded and necessary if the volume is not damaged.
1006 The open file is no longer valid because the volume that contains it has been damaged externally.
1007 The requested operation can not be performed in full screen mode.
1008 Attempt to reference a token that does not exist.
1009 The configuration registry is damaged.
1010 The registry configuration key is invalid.
1011 Unable to open registry configuration key.
1012 Unable to read registry configuration key.
1013 Could not write registry key configuration.
1014 One of the files in the Registry database has to be restored.
1114 An initialization routine of a dynamic library (DLL) failed.
1115 A system shutdown is in progress.
1116 The system is not being stopped, it is impossible to cancel the system shutdown.
1117 Unable to meet demand due to an error device I / O
1118 Failed to initialize the serial device. The serial driver will be unloaded.
1119 Unable to open a device that shares an interrupt (IRQ) with other devices. At least one other device that uses that IRQ was already opened.
1120 An operation of input / output port was completed by another write to the serial port. (The IOCTL_SERIAL_XOFF_COUNTER reached zero.)
1121 An operation of input / output port has been completed since the waiting period has expired. (The IOCTL_SERIAL_XOFF_COUNTER has not reached zero.)
1122 No sign of address ID has been found on the floppy.
1123 Discordance between the field ID of the disk sector address and track controller floppy drive.
1124 The floppy disk controller reported an error not recognized by the floppy disk driver.
The 1125 controller floppy returned inconsistent results in its registers.
1126 While accessing the hard disk, a recalibrate operation failed despite several attempts.
1127 While accessing the hard disk, a disk operation failed even after several tests.
1128 While accessing the hard drive, reset the necessary disk controller has proved impossible.
1129 Meeting of the physical end of tape.
1130 Not enough memory on the server to process this command.
1131 A fatal embrace potential was detected.
1132 The base address or offset in the file is not properly aligned.
A 1140 attempt to change the power state of the system has encountered the veto of another application or another driver.
The BIOS 1141 tried unsuccessfully to change the power state of the system.
1142 An attempt to create a number of links exceeds the maximum number allowed by the file system was made.
1150 The specified program requires a newer version of Windows.
1151 The specified program is not a Windows or MS-DOS.
1152 Unable to start multiple instances of the specified program.
1153 The specified program was written for an earlier version of Windows.
1154 One of the libraries required to run this application is damaged.
1155 No application is associated with the specified file for this operation.
1156 An error occurred while sending the command to the application.
1157 One of the libraries required to run this application can not be found.
1158 The current process has used all its share allocated by the system of descriptors for the objects of the Manager window.
1159 The message can be used only with synchronous operations.
1160 The indicated source element has no media.
1161 The indicated destination element already contains media.
The 1162 does not exist.
1163 The indicated element is part of a magazine that is not present.
1164 The indicated device requires reinitialization due to errors.
1165 The device has indicated that cleaning is required before further operations are attempted.
1166 The device has indicated that its door is open.
1167 The device is not connected.
1168 Element not found.
No correspondence in 1169 for the key indicated in the index.
1170 All the properties are not specified on the object.
1171 The past GetMouseMovePoints is not in the buffer.
1172 The tracking (workstation) is not running.
1173 identifier volume could not be found.
1175 Unable to delete the file to replace.
1176 Unable to move the replacement file to the file replace. The file to be replaced has retained its original name.
1177 Unable to move the replacement file to the file replace. To replace the file has been renamed using the backup name.
The 1178 amendment to the log volume is being removed.
The 1179 amendment to the log volume is not active.
1180 A file was found, but it is perhaps not the correct file.
1181 The log entry has been removed from the newspaper.
1200 The specified device name is invalid.
The 1201 device is not currently connected but it is a stored connection.
1202 The local device name has a remembered connection to another network resource.
1203 No network accepted the given network path.
1204 The network software name specified is invalid.
1205 Unable to open network connection profile.
1206 The network connection profile is damaged.
1207 Unable to enumerate an object that is not a container.
1208 An extended error has occurred.
1209 The format of the specified group name is invalid.
1210 The format of the computer name specified is invalid.
1211 The format of the specified event name is invalid.
1212 The format of the domain name specified is invalid.
1213 The format of the service name specified is invalid.
1214 The format of the specified network name is invalid.
1215 The format of the specified share name is invalid.
1216 The format of the specified password is invalid.
1217 The format of the specified message name is invalid.
1218 The format of the specified message destination is invalid.
1219 Several connections to a server or a shared resource by the same user, using more than one user name are not allowed. Remove all previous connections to the server or shared resource and try again.
A 1220 attempt to establish a session with a network server took place while the maximum number of sessions on this server was already outdated.
1221 The name of the workgroup or domain is already in use by another computer on the network.
1222 Either there is no network, the network has not started.
1223 The operation was canceled by the user.
1224 The requested operation could not be performed on a file with a user mapped section open.
1225 The remote system refused the network connection.
1226 The network connection was gracefully closed.
1227 The endpoint of the transport network has an address associated with it.
1228 An address has not yet been associated with the network termination point.
1229 An operation was attempted on a network connection that does not exist.
1230 An invalid operation was attempted on an active network connection.
1231 The network location can not be achieved. For information concerning the resolution of problems of the network, see Windows Help.
1232 The network location can not be achieved. For information concerning the resolution of problems of the network, see Windows Help.
1233 The network location can not be achieved. For information concerning the resolution of problems of the network, see Windows Help.
1234 No service operates on the network termination point of destination of the remote system.
1235 The request was aborted.
1236 The network connection was adopted by the local system.
1237 The operation could not be completed. A new test should be performed.
1238 A connection to the server could not be performed because the maximum number of simultaneous connections has been reached.
1239 Attempt to logon for a slot or a day not allowed for this account.
1240 The account is not authorized to login from this station.
1241 The network address could not be used for the operation required.
1242 The service is already registered.
1243 The specified service does not exist.
1244 The requested operation was not performed because the user was not authenticated.
1245 The requested operation was not performed because the user is not connected to the network. The specified service does not exist.
1246 More work in progress.
1247 Attempted execution of an operation of initialization when the initialization has already occurred.
1248 No additional device available.
1249 The specified site does not exist.
1250 A domain controller with the specified name already exists.
1251 This operation is only supported when connected to the server.
1252 The structure of the group policy should call the extension even if there was no change.
1253 The specified user does not have a valid profile.
1254 This operation is not supported on a Microsoft Small Business
1255 The server is being stopped.
1256 The remote system is not available. For information about network troubleshooting, see Windows Help.
1257 The security identifier provided does not come from a domain account.
1258 The security identifier provided does not have a domain component.
The 1259 dialogue was canceled AppHelp which prevents the application startup.
1260 Windows can not open this program because it was prevented by a software restriction. For more information, open the event or contact your system administrator.
1261 A program is trying to use a registry value is invalid, usually caused by an uninitialized register. This error is specific to Itanium systems.
1262 The share is currently offline or does not exist.
1263 The Kerberos protocol encountered an error while validating the KDC certificate during logon through smart card.
1264 The Kerberos protocol encountered an error when trying to use the sub-system of the smart card.
1265 The system detected a possible attempt to breach of security. Verify that you can contact the server that authenticated you.
1266 The smartcard certificate used for authentication has been revoked. Please contact your system administrator. There may be additional information in the event log.
An 1267 untrusted certificate authority was detected While processing the smartcard certificate used for authentication. Please contact your system administrator.
1268 The revocation status of the smartcard certificate used for authentication could not be determined. Please contact your system administrator.
1269 The smartcard certificate used for authentication was not trusted. Please contact your system administrator.
1270 The smartcard certificate used for authentication has expired. Please contact your system administrator.
1271 The computer was locked and can not be stopped without the force option.
1273 A recall of application sent invalid data at the time of the call.
1274 The structure strategy group should call the extension in the update of the strategy first phase.
Loading the 1275 driver has been blocked
1276 A dynamic link library (DLL) referenced a module that is not a DLL or executable image of a process.
1300 The appellant does not enjoy all privileges referenced.
1301 A mapping between account names and security IDs was done.
1302 No limit quota system has been specifically defined for this account.
1303 No encryption key is available. A known encryption key was returned.
1304 The password is too complex to be converted into a password LAN Manager. The term LAN Manager password returned is a null string.
1305 Version number unknown.
1306 Indicates two version numbers are incompatible.
1307 This security ID may not be assigned as the owner of this object.
1308 This security ID may not be assigned as the main group of an object.
1309 A thread that does not present the identity of a customer has tried to act on a token impersonation.
The 1310 group can not be disabled.
1311 No server access is currently available to process the application logon.
1312 A specified logon session does not exist. It may already be over.
1313 A specified privilege does not exist.
1314 The client does not have a required privilege.
1315 The name provided is not a properly formed account name.
1316 The specified user already exists.
1317 The specified user does not exist.
1318 The specified group already exists.
1319 The specified group does not exist.
1320 Either the specified user account is already a member of specified group or it is impossible to delete the specified group because it contains a member.
1321 The specified user account is not member of specified group.
1322 You can not disable or delete the last remaining administration account.
1323 Unable to update the password. The value provided as the current password is incorrect.
1324 Unable to update the password. The new password provided contains values not allowed in passwords.
1325 Unable to update the password. The value provided by the new password does not meet the specifications of length, complexity or history of the area.
1326 Logon failure: unknown user name or password incorrect.
1327 Logon failure: Restriction of user account. Possible reasons are blank passwords not allowed, restrictions on hours Logon or restriction strategy was applied.
1328 Logon failure: violation of restriction of hours of access.
1329 Logon failure: user not authorized to log on to this computer.
1330 Logon failure: the password for the specified account has expired.
1331 Logon failure: account currently disabled.
1332 No mapping between account names and security IDs was done.
1333 Too many local user identifiers (LUID) were requested at the same time.
1334 There is more local user identifier (LUID) available.
1335 Part-under authority of a security ID is invalid for this particular purpose.
1336 Structure of the list of access control (ACL) is invalid.
1337 Structure of security ID is invalid.
1338 Structure of security descriptor is invalid.
1340 Unable to build the access control list (ACL) or the heading of access control (ACE) inherited.
1341 The server is currently disabled.
1342 The server is currently enabled.
1343 The value provided is not valid for an identifier authority.
1344 There is more memory available for the updates of safety information.
1345 The specified attributes are invalid or inconsistent with the attributes defined for the group as a whole.
Either a 1346 impersonation level required was not provided, the impersonation level provided is invalid.
1347 Can not open a security token for a limited level.
The 1348 class of validation information requested is not valid.
1349 The type of token is inappropriate for such use.
1350 Unable to perform a security operation on an object that no security was involved.
1351 The configuration information could not be read from the domain controller because the computer is not available or access was denied.
The server 1352 SAM (security account manager) or LSA (Local Security Authority) was not appropriate in the state to achieve the security operation.
1353 The area was not in proper condition to perform the security operation.
1354 This operation is allowed only for the primary domain controller.
1355 The specified domain does not exist or could not be contacted.
1356 The specified domain already exists.
Tentative 1357 exceeded the maximum number of domains per server.
1358 The requested operation is not possible due to irreparable failure of the media or the alteration of a data structure on disk.
1359 An internal error has occurred.
1360 The generic types of access that should already be mapped to the types of non-generic access have been encountered in an access mask.
1361 A security descriptor is not in the right format (absolute or self-relative).
1362 Only the logon process can use the action requested. The calling process has not registered as a logon process.
1363 Unable to open a new session with an ID already in use.
1364 A specified authentication package is unknown.
The session opened in 1365 is not compatible with the requested operation.
1366 The Logon ID is already used.
1367 An application log contains a value of connection type is invalid.
1368 Unable to borrow an identity by using a named pipe so that no data has been read into this channel.
1369 The transaction state of a subtree in the registry is incompatible with the requested operation.
1370 A database of internal security is damaged.
1371 Unable to perform this action on accounts.
1372 Unable to perform this action on the panel predefined.
1373 Unable to perform this action on this special user preset.
1374 User can not be excluded from the group because it is currently his main group.
1375 The token is already used as a primary token.
1376 The specified local group does not exist.
1377 The specified account name is not a member of the local group.
1378 The specified account name is already a member of the local group.
1379 The specified local group already exists.
1380 Logon failure: the user does not type logon requested on this computer.
1381 The maximum number of secrets that can be stored in a single system was exceeded.
1382 The length of a secret exceeds the maximum allowed.
1383 The database LSA (Local Security Authority) shows an internal inconsistency.
1384 During a logon attempt, the security context of the user has accumulated too many security IDs.
1385 Logon failure: the user does not type logon requested on this computer.
1386 A password coded crossover is required to change the user password.
1387 Unable to add or remove a member of the local group because the member does not exist.
1388 A new member can be added to the local group because the member has an incorrect type.
1389 Too many security IDs have been specified.
1390 A password coded crossover is required to change the password for this user.
1391 Indicates an ACL contains no heritable components.
1392 The file or directory is corrupted and unreadable.
1393 The disk structure is corrupt and unreadable.
1394 There is no user session key for the specified logon session.
1395 The service you are accessing is dismissed for a particular number of connections. It is not possible to establish connections to the service at this time because there are already as many connections as the service can accept.
1396 Logon failure: the target account name is incorrect.
1397 Mutual Authentication failed. The password server is deprecated on the domain controller.
1398 The time and date are not the same between the client and the server.
1399 This operation can not be performed on the current domain.
1400 window handle invalid.
1401 menu descriptor invalid.
1402 Cursor descriptor invalid.
1403 descriptor table accelerators invalid.
1404 Descriptor hook invalid.
Descriptor 1405 to a structure of multiple windows is invalid.
1406 Unable to create child window above.
1407 Class window found.
1408 Invalid window, part of another thread.
1409 Hot Key is already included.
1410 Class already exists.
1411 Class does not exist.
1412 It remains open windows in that class.
1413 Invalid index.
1414 descriptor Icon invalid.
1415 Using words dialog private.
1416 Identifier box found.
1417 No wildcards.
1418 Thread does not have clipboard open.
1419 Hot Key is not included.
1420 The window is not a valid dialog window.
1421 Control ID not found.
1422 Invalid message for a combo box because it has no edit control.
1423 The window is not a box.
1424 The height must not exceed 256.
1425 descriptor device context (DC) is invalid.
1426 type of hook procedure invalid.
1427 The hook procedure is invalid.
1428 Unable to establish a non-local hook without a module descriptor.
1429 This hook procedure can only be defined globally.
1430 The journal hook procedure is already installed.
1431 The hook procedure is not installed.
1432 Invalid message for a list box to a single selection.
1433 LB_SETCOUNT sent to a list box active.
1434 The list box does not allow tab stops.
1435 Can not destroy object created by another thread.
1436 Child windows can not have menus.
1437 The window has no menu system.
1438 style message box is invalid.
1439 Parameter scope system (SPI_ *) invalid.
1440 Screen already locked.
1441 All descriptors windows in a structure of multiple windows should have the same parent.
1442 The window is not a child window.
1443 Order GW_ * invalid.
1444 thread identifier is invalid.
1445 Unable to process a message from a window that window is not an MDI (multiple document interface).
1446 pulldown menu already active.
1447 The window does not scroll bars.
1448 interval scroll bar can not exceed MAXLONG.
1449 Unable to display or remove the window in the manner specified.
1450 Insufficient system resources exist to complete the requested service.
1451 Insufficient system resources exist to complete the requested service.
1452 Insufficient system resources exist to complete the requested service.
1453 Insufficient quota to complete the requested service.
1454 Insufficient quota to complete the requested service.
1455 The paging file is insufficient to complete the process.
1456 No menu item found.
1457 descriptor keyboard configuration is invalid.
1458 Hook type not allowed.
1459 This operation requires an interactive Windows station.
1460 This operation ended because the waiting period has expired.
1461 screen descriptor invalid.
1500 The event log file is corrupted.
1501 The event log file could not be opened, the registration of events did not start.
1502 The event log file is full.
1503 The event log file has changed between read operations.
1601 Unable to access the Windows Installer service. This can occur if you run Windows in Safe Mode. Contact your support personnel for assistance.
1602 The user canceled the installation.
1603 Fatal error during installation.
1604 Installation suspended, not ended.
1605 This action is only valid for products currently installed.
1606 identifier feature is not included.
1607 identifier component is not registered.
1608 Unknown property.
1609 The descriptor is in an invalid state.
1610 The configuration data of this product are damaged. Contact your technical support.
1611 Component qualifier not present.
1612 The installation source for this product is not available. Verify that the source exists and that you can access.
1613 This installation package can not be installed by the Windows Installer service. You must install a service pack that contains a newer version of the Windows Installer service.
1614 Product is uninstalled.
1615 SQL query syntax invalid or unsupported.
Section 1616 of the recording does not exist.
The 1617 device has been removed.
1618 Another installation is already underway. Finish in to perform this installation.
1619 Unable to open the installation package. Verify that the package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer package.
1620 Unable to open the installation package. Contact the application vendor to verify that this is a valid Windows Installer package.
1621 An error occurred while starting the user interface of the Windows Installer service. Contact your technical support.
1622 Error opening installation log file. Verify that the location specified log file exists and is writable.
1623 The language of this installation package is not supported by the system.
1624 Error applying transforms. Verify that the specified transform paths are valid.
1625 This installation is forbidden by system policy. Contact your system administrator.
1626 Unable to perform.
1627 Function failed during execution.
1628 The table specified is invalid or unknown.
The 1629 data have a type error.
1630 The data of this type are not supported.
1631 The Windows Installer service failed to start. Contact your technical support.
1632 The drive that contains the temporary directory is full or inaccessible. Free up space on the drive or verify that you have access permission in writing to the temporary directory.
1633 This installation package is not supported by this processor type. Contact the retailer of your product.
1634 Component not used on this computer.
1635 Unable to open this patch package. Verify that the patch package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer patch package.
1636 Unable to open this patch package. Contact the application vendor to verify that this is a valid Windows Installer patch package.
1637 This patch package is not executable by the Windows Installer service. You must install a service pack that contains a version of Windows Installer service later.
1638 Another version of this product is already installed. The installation of this version can not continue. To configure or remove the existing version of this product, use Add / Remove Programs from Control Panel.
1639 Argument command line invalid. See the Development Kit Windows Installer for a detailed help from the command line.
1640 Only administrators have the right to add, delete, or configure software on the server during a remote session Terminal Server. If you want to install or configure software on the server, contact your network administrator.
1641 The requested operation was completed successfully. The computer will be restarted to reflect the changes.
The 1642 patch upgrade can not be installed by the Windows Installer service because they lack the program to upgrade, patch or upgrade is intended for a different version of the program. Verify that the program to be upgraded exists on your computer and your patch upgrade is correct.
1643 The patch package is not permitted by software restriction policies.
1644 One or more customizations are not permitted by software restriction policies.
1700 Link chain invalid.
1701 The handle link is to an invalid type.
1702 Handle liaison invalid.
1703 The RPC protocol sequence is not supported.
1704 The RPC protocol sequence is invalid.
1705 The universal unique identifier (UUID) of the channel is not valid.
1706 endpoint format is invalid.
1707 The network address is invalid.
End of 1708 found.
1709 Value sunset invalid.
1710 universally unique identifier of the object (UUID) not found.
1711 The universal unique identifier of the object (UUID) has already been registered.
1712 The universal unique identifier of type (UUID) has already been registered.
1713 The RPC server is already listening.
1714 No protocol sequences have been registered.
1715 The RPC server is not listening.
1716 Type Manager unknown.
1717 Interface Unknown.
1718 There is no connection.
1719 There are no protocol sequences.
1720 Unable to create the endpoint.
1721 Insufficient resources to perform this operation.
1722 The RPC server is unavailable.
1723 The RPC server is too busy to complete this operation.
1724 Options network invalid.
1725 There are no remote procedure call active in this thread.
1726 Failed to remote procedure call.
1727 The remote procedure call failed and did not execute.
1728 An RPC protocol error occurred.
1730 The transfer syntax is not supported by the RPC server.
1732 The type universal unique identifier (UUID) was not recognized.
1733 Symbolic Name invalid.
1734 Limits table invalid.
1735 The binding does not contain a name heading.
1736 Syntax name is invalid.
1737 The name syntax is not supported.
1739 No network address is available to construct a universal unique identifier (UUID).
1740 The endpoint is a duplicate.
1741 Authentication type unknown.
1742 The maximum number of calls is not enough.
1743 Chain too long.
1744 RPC protocol sequence found.
1745 Procedure number out of range.
1746 The binding does not contain any authentication information.
1747 Authentication Service Unknown.
1748 Level Authentication unknown.
1749 Security Context invalid.
1750 Service Authority unknown.
Section 1751 is invalid.
1752 The server endpoint can not perform the operation.
1753 The endpoint mapper has no endpoint available.
1754 No interfaces have been exported.
1755 Name Topic incomplete.
1756 Option version invalid.
1757 There is no longer a member.
1758 There are no export cancel.
1759 The interface was not found.
Section 1760 already exists.
1761 Item not found.
1762 The name service is unavailable.
1763 The network address family is invalid.
1764 The requested operation is not supported.
1765 There is no security context available to allow impersonation.
1766 An internal error occurred during a remote procedure call (RPC).
1767 The RPC server attempted an integer division by zero.
1768 Error addressing the RPC server.
1769 A floating point operation performed by the RPC server caused a division by zero.
1770 A floating point operation performed by the RPC server caused a negative overshoot.
1771 A floating point operation performed by the RPC server caused excess capacity.
1772 The list of RPC servers available for connection of self-descriptors is exhausted.
1773 Unable to open the file of the translation table of characters.
1774 The file containing the translation table of characters is less than 512 bytes.
1775 A null context handle was passed from client to the host during a remote procedure call (RPC).
1777 The context handle changed during a remote procedure call (RPC).
The 1778 handles liaison moved to a remote procedure call do not match.
1779 The stub is unable to get the handle remote procedure call (RPC).
1780 A null reference pointer was passed to the stub.
1781 enumeration value out of range.
1782 The number of bytes is not enough.
1783 The relay has received incorrect data.
1784 The supplied user buffer is invalid for the requested operation.
1785 The disk media is not recognized. It may not be formatted.
1786 The workstation does not have a secret clearance.
1787 The security database on the server does not have a computer account for the relationship with this workstation.
1788 The relationship between the primary domain and trusted domain failed.
1789 The trust relationship between this workstation and the primary domain failed.
1790 Logon Failure on the network.
1791 A remote procedure call is already underway for this thread.
1792 A logon attempt took place while the service network logon was not started.
1793 The user account has expired.
1794 The redirector is in use and can not be unloaded.
1795 The specified printer driver is already installed.
1796 The specified port is unknown.
1797 Printer driver unknown.
1798 Print Processor unknown.
1799 The specified separator file is invalid.
1800 The specified priority is invalid.
1801 The printer name is invalid.
1802 The printer already exists.
1803 Printer Command invalid.
1804 The data type specified is invalid.
1805 The environment specified is invalid.
1806 There is no more connection.
1807 The account used is an inter-domain account. Use your global user account or local level to access this server.
1808 The account used is a computer account. Use your global user account or local level to access this server.
1809 The account used is a server for approval. Use your global user account or local level to access this server.
1810 The name or security ID (SID) of the domain specified is inconsistent with the approval information for this domain.
1811 The server is in use and can not be unloaded.
1812 The specified image file did not contain a resource section.
1813 The specified resource type can be found in the image file.
1814 The specified resource name can not be found in the image file.
1815 The language ID specified resource can be found in the image file.
1816 insufficient quota available to process this command.
1817 No interfaces have been registered.
1818 The remote procedure call was canceled.
1819 The connection handle does not contain all the necessary information.
1820 failed communication when calling a remote procedure.
1821 The requested authentication level is not supported.
1822 No principal name said.
1823 The error specified is not an error code Windows RPC correct.
1824 A UUID identifier that is valid only on this computer has been allocated.
1825 An error specific security package has occurred.
1826 Thread not canceled.
1827 Operation invalid handle the encoding / decoding.
1828 Incompatible version of the serializing package.
1829 Incompatible version of the RPC stub.
1830 The RPC channel object is invalid or corrupted.
1831 An invalid operation was attempted on an object given RPC channel.
1832 The version of the RPC channel is not supported.
1898 The group member was not found.
1899 Unable to create the entry of the database of the endpoint mapper.
1900 The universal unique identifier of the object (UUID) is invalid UUID.
1901 The specified time is invalid.
1902 The specified form name is invalid.
1903 The specified form size is invalid.
1904 Someone is already waiting on the descriptor specified printer.
1905 The specified printer was deleted.
1906 The printer status is not valid.
1907 The password of the user must be changed before opening a session for the first time.
1908 Unable to find a domain controller for this domain.
1909 The referenced account is currently locked and may not be possible to connect to it.
1910 The object exporter specified was not found
1911 The object specified was not found.
1912 The solver object specified.
1913 The rest of the data to be sent in the buffer request.
1914 Handle remote procedure call asynchronous invalid.
1915 Handle for asynchronous RPC call invalid for this operation.
1916 The RPC channel object has already been closed.
1917 The RPC call was completed before the channels are treated.
1918 No more data available in the RPC channel.
1919 No site name is available for this computer.
1920 The system can not access the file.
1921 The file name can not be solved by the system.
1922 The entry type is incorrect.
1923 Unable to export all objects UUID to the specified entry.
1924 Unable to export the interface to the specified entry.
1925 Unable to add the specified profile.

Invia l'articolo in formato PDF a PDF Free

26 Jan, 2010

PSPAD come IDE per Python 2.6

Posted by: Gabriele Guizzardi In: Pillole di Saggezza| Programmazione| Python| Software

Python è sicuramente un linguaggio ormai maturo e potente per eseguire molti tipi di codice, soprattutto script rapidi e di test su innumerevoli aspetti della programmazione. Purtroppo però ho notato una certa difficoltà, ancora oggi, a definirsi un preciso ambiente di sviluppo. Per esempio, provando IronPython non mi sono trovato estremamente bene, la gestione dei progetti non è molto “chiara” ma ovviamente, come per le automobili, anche gli ambienti di sviluppo sono relativi alle proprie sensazioni.

Ecco quindi che ho voluto trovare una alternativa rapida e alla portata di tutti, anche a chi inizia a programmare, per potersi avvicinare a Python. Si tratta dell’editor gratuito PsPad che uso regolarmente. Ironia della sorte, anche sul forum di PsPad la sua configurazione per supportare Python non è chiarissima e ha inoltre un piccolo errore su una variabile d’ambiente.

Gli attori in gioco sono:

- PsPad ver. 4.5.4

- Python ver. 2.6

Il tutto su Windows XP SP3 italiano.

Installate entrambi lasciando i valori di default e poi aprite PsPad e andate in Configurazione –> Evidenziazione Sintassi. Scegliete Python dall’elenco ed inserite i seguenti parametri nella sezione “Compilatore”:

Compilatore:

C:\Python26\python.exe

Parametri:

“%File%”

Mettete il segno di spunta sul parametro “Finestra messaggio di uscita del programma” ed inserite la seguente stringa nella casella “Analizza sintassi Log:”

*file %F *line %L*

Uscite da PsPad e riapritelo, alcune volte non si accorge delle modifiche applicate. Siamo ora pronti a scrivere il nostro primo programma in Python, il classico “Hello World”. Per far questo aggiungete questa riga nell’editor di testo:

print “Hello, World!”

Dal menù “File” selezionate “Compila” (oppure la combinazione di tasti: CTRL + F9) e nella finestra di Log in basso avrete il risultato del programma con visualizzata la stringa di benvenuto.

NOTA: fate attenzione se usate il copia-incolla per i parametri e la linea di codice poiché il carattere virgolette potrebbe non essere quello corretto da usare. Se avete errori nella compilazione ridigitate le virgolette usando SHIFT + 2.

Invia l'articolo in formato PDF a PDF Free

06 Jan, 2010

htaccess e il reindirizzamento invisibile

Posted by: Gabriele Guizzardi In: Apache| Programmazione| Sicurezza| Vulnerabilità

Alcune volte anche le soluzioni e i comandi realizzati per aiutare nella creazione di siti Intenet possono ritorcersi contro gli utenti e gli sviluppatori stessi. Un caso che mi viene in mente è quello dei files di configurazione distribuita .htaccess usati in Apache. Questi files di testo possono contenere direttive eseguite dal server web ed applicate a directory e sotto-directory.

All’interno possono essere inseriti comanti e direttive per far fare al server svariati lavori che risolvono immediatamente anche grandi problematiche di gestione come per esempio gli reindirizzamenti. Supponiamo di voler reindirizzare l’utente alla classica pagina d’errore nel caso la pagina che lui cerca non esista. L’errore è il 404. Per far questo basta scrivere nel file .htaccess questo comando:

ErrorDocument 404 /errore404.html

Ecco che gli utenti verranno reindirizzati alla pagina di errore specifica. Con questa soluzione potete realizzare pagine di errore ad hoc per ogni codice oppure rimandare tutti gli errori alla home page.

Ma le direttive fornite da Apache sono tante e potenti e un codice come quello qui riportato mette in evidenza possibili vulnerabilità:

RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.*$ [NC,OR]
RewriteCond .* http://79.123.1.1/index.php?d=malware [R,L]

Noterete che tutte le richieste provenienti da Google saranno reindirizzate ad un certo host che potrebbe contenere codice malevole. Se, un possibile attacco al sito riuscisse ad inserire tali istruzioni nel file .htaccess oppure inserisse il file per intero (tecnica del “file inclusion”) ecco che tutti i visitatori provenienti da Google sarebbero reindirizzati. Potreste addirittura non accorgervene subito poiché se digitate l’indirizzo del sito direttamente questo si aprirà senza problemi quindi, per voi, tutto funziona.

Se aggiungiamo una riga per ogni motore di ricerca (per esempio .*yahoo.*) conosciuto e magari da altri popolari siti Internet ecco che produrremmo un reindirizzamento di massa non indifferente, soprattutto se il sito che lo subisce è un sito altamente trafficato.

Il consiglio è quindi quello di controllare saltuariamente la corretta visualizzazione del vostro sito usando percorsi differenti, cioè raggiungendolo anche da ricerche, link da altre pagine, ecc.

Invia l'articolo in formato PDF a PDF

29 Dec, 2009

Honeypot e Mail trappola anti-spam in PHP

Posted by: Gabriele Guizzardi In: PHP| Programmazione| Sicurezza| Spamming

Se fosse per me ci sarebbe già da parecchi anni, in Italia, una Legge severissima sugli spammer, con pene simili allo stalking e paragonabili a quelli sulla violenza e l’abuso. Chi invia sistematicamente (non parliamo delle offerte di mercato che un’azienda invia un paio di volte l’anno solo ai propri clienti) mail e messaggi senza esplicita richiesta del destinatario e per pubblicizzare materiale assolutamente fuori luogo sempre per il destinatario (mi riferisco per esempio a messaggi in inglese riguardanti la vendita di viagra indirizzati a casalinghe o minorenni che ritengo difficile abbiamo asplicitamente richiesto tali informazioni) dovrebbe essere interdetto dall’uso di Internet. E’ molto complesso ovviamente mettere in pratica questo ma qualche sforzo in più si potrebbe fare.

Lo spam, per chi non lo sapesse, genera, inoltre, traffico di rete e conseguente rallentamento delle operazioni, potrebbe capitare, per esempio, che un vostro mail di lavoro (penso a chi lavora con titoli di borsa o con banche) raggiunga il destinatario ormai troppo tardi a causa del rallentamento dei server di gestione della posta elettronica. Rallentamento dovuto alla mole di messaggi di spam da processare.

Come fanno i programmi che scandagliano la rete a trovare il vostro indirizzo mail e a scrivervi il tutto automaticamente? Per fare questo sono stati realizzati software che si collegano ai siti Internet e leggono il contenuto delle pagine web alla ricerca di indirizzi di posta o di siti.

Per divertirsi a combattere gli spammer con le loro stesse armi possiamo realizzare diversi sistemi-trappola, ne descrivo un paio qui di seguito.

Honeypot eMail

Un honeypot email (esistono anche gli honeypot server) è sostanzialmente un email trappola (mail fake), cioè un indirizzo mail realizzato appositamente per farsi catturare dagli spammer e raccogliere informazioni su di loro. Un software che raccoglie indirizzi mail navigando in rete difficilmente è programmato per riconoscere honeypot (barattoli di miele) quindi tende a registrare tutti gli indirizzi che trova.

L’honeypot viene quindi strutturato per riportare alcune informazioni basilari sullo spammer come per esempio l’indirizzo IP e il momento della cattura, ecco un esempio:

<?php
// Esempio di Honeypot in PHP
// Scritto da Gabriele Guizzardi, Brain & Bytes, 2009.
echo '<a href="mailto:ipspam-'.$REMOTE_ADDR.'-'.
date('l-d-M-y-H-i-s-T').
'@dominio.it">Scrivimi</a>';
?>

che crea sul vostro sito un link al seguente indirizzo:

ipspam-79.123.1.1-Tuesday-29-Dec-09-01-02-54-GMT@dominio.it

Noterete la particolare formattazione della data che riporta informazioni sufficienti a comprendere quando è stato catturato l’indirizzo da parte dello spammer. Il dominio invece deve essere reale così che i futuri mail di spam siano correttamente inviati e ricevuti. Potete ovviamente modificare tale sintassi aggiungendo altre informazioni oppure, nel caso della data, aiutandovi con quanto messo a disposizione dalle classi del PHP:

http://www.php.net/manual/en/class.datetime.php

Ricordate ovviemente di sostituire la punteggiatura non supportata dagli indirizzi email che per esempio non digeriscono gli slash.

Bene, a questo punto abbiamo sulla pagina del nostro sito un email fasullo generato ad ogni visualizzazione con i dati del momento. Passiamo ora a realizzare un server di posta elettronica. Per far questo potete configurare un computer con Microsoft Exchange Server oppure con IceWarp oppure ancora Kerio MailServer.

Fake eMail

Un secondo metodo, se non vi interessa analizzare le attività di spamming o creare dati statistici sulla posta-spazzatura generata visitando le vostre pagine web, può essere la creazione di email fasulli da riempire i database degli spammer e creargli un flusso dati di ritorno da posta inevasa che possa quanto meno disturbarne l’operato.

Il codice qui sotto riportato genera 10 indirizzi email falsi ma sintatticamente corretti per i motori di raccolta dati degli spammer, i cosidetti spambot:

<?php
// Esempio di FakeMail in PHP
// Scritto da Gabriele Guizzardi, Brain & Bytes, 2009.
$n_mail = 10; //numero di email da visualizzare
//calcolo casualità
function mailfake()
 {
 $seed = (integer) md5(microtime());
 mt_srand($seed);
 $word = mt_rand(1,99999999);
 $word = substr(md5($word), mt_rand(0, 19), mt_rand(6, 12));
 return $word;
 }
$dominio = mailfake();
$id = mailfake();
//compone l'indirizzo mail casualmente
for($i = 0;$i <= $n_mail; $i++)
 {
  {
  $nome = array( "nome1",
                 "nome2",
                 "nome3",
                 "nome4",
                 "nome5",
                 "nome6",
                 "nome7",
                 "nome8",
                 "nome9",
                 "nome10" );
  $n = $nome[(int)rand(0, 9)];
  }
  {
  $cognome = array( "cognome1",
                    "cognome2",
                    "cognome3",
                    "cognome4",
                    "cognome5",
                    "cognome6",
                    "cognome7",
                    "cognome8",
                    "cognome9",
                    "cognome10" );
  $c = $cognome[(int)rand(0, 9)];
  }
  {
  $estensione = array( "com",
                       "net",
                       "it",
                       "org" );
  $est = $estensione[(int)rand(0, 3)];
  }
  ?>
  <table>
   <tr>
    <td>
     <? echo "<a href=\"mailto:$n$c@$dominio.$est\">
                               $n$c@$dominio.$est</a>"; ?>
    </td>
   </tr>
  </table>
 <?
 }
 ?>

Potete variare il numero di email generate e i dati in esso contenuti cambiando gli array dai quale attinge la funzione per comporre l’indirizzo.

Se posizionate lo script per esempio in fondo ad una pagina web e cambiando magari il colore degli indirizzi con lo stesso colore di fondo per renderli “invisibili” agli utenti ma non agli spambot avrete una serie di indirizzi email intercettabili dagli spammer ma che non disturberanno i navigatori umani della pagina. Il risultato sarà quello di riempire i database degli spammer con email inesistenti e conseguente traffico di ritorno di email inevase.

Invia l'articolo in formato PDF a PDF Creator

17 Dec, 2009

Facebook, successo immeritato!

Posted by: Gabriele Guizzardi In: Altro

Lo so, lo so, avevo detto a tutti che non mi sarei iscritto a Facebook ma per capire qualcosa spesso bisogna provarla. E poi in televisione ci hanno talmente massacrato i cosiddetti anche i telegiornali che alla fine uno si incuriosisce. Adesso che l’ho provato faccio una grande fatica a comprendere perché abbia avuto tutto sto successo. Mi spiace, ma a me non piace, sotto diversi punti di vista anche se ovviamente, per le mie conoscenze, mi permetto di analizzarlo solo da un punto di vista tecnico/informatico.

Vediamone alcuni:

1) Da quando ho pubblicato informazioni sul mio blog di programmazione, postando i link di alcuni articoli, ho ricevuto (e ricevo tutt’ora) una media di circa 5 commenti di puro spam al giorno, tutti stranamenti in lingua russa (con IP 188.92.nn.nn) prontamente bloccati dall’anti-spammer di Wordpress Akismet (un plauso all’autore). Sono abbastanza certo sia colpa della pubblicazione si Facebook poiché ricevono spam solo gli articoli con il corrispondente link sul Social Network, gli altri articoli no.

E’ chiaro che un social network che conta 350 milioni di utenti è soggetto ad attacchi e scan delle proprie pagine in modo massiccio, ma è altrettanto vero che questo nei forum normali non avviene o comunque è molto più contenuto.

2) Volendo testare un po tutto Facebook ho dovuto mio malgrado giocare anche a tutti i giochetti Flash messi a disposizione (le cose vanno fatte bene :D ). Ho fatto un record al giochino Biotronic e la finestrella di pubblicazione del punteggio mi ha dato un errore non permettendomi di documentarlo (succede spesso). Al di la del punteggio del gioco, penso che Facebook abbia parecchi problemi di gestione degli eventi, probabilmente dovuti al traffico congestionato.

Ho fatto l’esempio del gioco per metterla sul piano della simpatia ma è anche vero che ho riscontarto questo genere di … chiamiamola “disfunzione” … anche per altre operazione di iterazione. Ogni tanto compare il messaggio “Si è verificato un problema, ecc. ecc.”.

fb-agg-privacy-10dic

Guardate per esempio l’immagine che allego qui sopra, è la risposta che ho avuto alla presa visione delle nuove norme sulla privacy che Facebook ha inviato a tutti gli utenti il 10 dicembre 2009.

3. Per iscrivermi ci è voluto 10 minuti per un errore di connessione network inesistente e ogni tanto il tempo di passaggio tra una attività ed un’altra è abissale.

Ora, come dicevo, sono sicuro che il traffico di rete sviluppato da così tanti utenti crei agli autori di Facebook non pochi problemi ma mi indica anche che il lavoro svolto è costantemente un inseguimento delle prestazioni del servizio, non mi pare si faccia nulla per anticiparne le esigenze.

Sapendo, per esempio, che il trand di aumento dell’utenza è stimato in un certo numero la settimana (i dati sono costantemente monitorati) si dovrebbe pensare ad una programmazione degli aggiornamenti seria e più performante. Google, non ha gli stessi ritardi, eppure gestisce molti più dati, basti pensare che oltre al motore di ricerca esistono almeno altre decine di servizi.

E’ chiaro che questo è un punto alquanto delicato e difficile da risolvere pienamente, se calcoliamo infatti che basta avere una trentina di “amici” che ogni giorno “postano” anche solo 5 o 6 messaggi a testa ecco che moltiplicato per centinaia di migliaia di utenti ci troviamo a gestire database dalle grandezze spropositate che necessariamente devono essere potenti ed equilibrati nella gestione per fornire risposte in tempi accettabili.

Credo anche che, oltre ad essere stati un po colti impreparati (chi avrebbe mai pensato ad un successo simile?) si stia anche pensando ad un possibile crollo o ridimensionamento dell’utenza, che, seguendo le mode, potrebbe spostarsi su altri siti e novità di settore.

4) La pubblicazione di una informazione può essere condivisa con il resto della comunità anche 24h dopo la pubblicazione. Evidentemente il numero di messaggi e pensieri è talmente alto da generare code di pubblicazione smaltibili solo dopo parecchie ore. Questo, oltre alla lentezza e pesantezza del sistema, lo vedo soprattutto come una inutilità del servizio, si pubblicano infatti messaggi che probabilemente non saranno mai letti poiché fagocitati dalla mole di altri messaggi e dal fatto che saranno “persi” in base all’orario di presentazione. Dopo 24h una informazione potrebbe addirittura essere obsoleta per il resto della comunità.

Per ultima, una nota non tecnica. Facebook è proprio il catino e l’apoteosi dell’ignoranza. Mai così tanti imbecilli hanno mai scritto in un sito (dovrebbero metterlo nel Guinness) contemporaneamente. Esistono i “gruppi” più incredibili (dove addirittura si augura la morte di altri), dove le persone si spacciano per quello che non sono, consigliando il prossimo ed elargendo perle di ignoranza devastanti.

Qui, la mia formazione scientifica, si scontra con l’oppurtunità di libertà data al genere umano di confrontarsi. Un conto è la possibilità di esprimersi, un conto è sparare cazzate al prossimo spacciandole per verità assolute.

Basta, mi fermo qua, mi riservo di esprimermi ancora più tecnicamente quando deciderò di scrivere un’applicazione per Facebook.

Invia l'articolo in formato PDF a PDF

Iniziamo subito col dire che non ce l’ho con Avira ne mi diverto a far fare “brutte figure” agli anti-virus. Studiare certe tecniche di programmazione aiuta a comprendere come funzionano i Malware e a cosa si può andare incontro nella realizzazione di software.

TR/VB.Downloader.Gen - Trojan

Veniamo al nostro falso positivo che, come vedrete, è di una semplicità disarmante e se eseguito non produce alcun risultato ne funzionamento utile o dannoso, come fosse un programma morto pertanto totalmente innocuo.

Aprite VB6 e create un progetto. In Form1 mettete un controllo WebBrowser1 e nel codice copiate questo:

Private Declare Function SendMessage Lib "user32" _
   Alias "SendMessageA" (ByVal hWnd As Long, _
   ByVal wMsg As Long, ByVal wParam As Long, _
   lParam As Any) As Long

Private Sub Form_Load()
'
End Sub

Per i più pigri trovate il progetto nella pagina Download.

Tutto qua. La combinazione del controllo web di VB6 e dell’API SendMessage per Avira Antivir è sufficiente a visualizzare un messaggio di Malware. In altri casi è sufficiente abbassare il livello di aggressività della funzione euristica del programma, ma non in questo caso poiché per Avira si tratta semplicemente di un tentativo di trasmettere all’esterno dati della macchina.

falso positivo allarme

Cosa ci dice tutto questo? Innanzitutto un anti-virus non è un programma infallibile e chi li spaccia per tali vende fumo. Non date retta soprattutto a chi si schiera per l’uno o l’altro produttore, non è possibile avere una cultura aggiornata e totale su tutti i prodotti in commercio. Secondo, essere primo o decimo nella classifica dei migliori anti-virus per riconoscimento potrebbe non essere il massimo se poi il programma vi disturba per ogni legittimo tentativo di un certo tipo di connessione e controllo di Windows. Il miglior anti-virus spesso è un compromesso di tutto questo, buon livello di riconoscimento e basso profilo.

Questo test è stato eseguito con la versione 9.0.0.415 (aggiornato alla data di pubblicazione dell’articolo) di Avira in versione gratuita. Questo anti-virus resta comunque attualmente una buona soluzione gratuita sul mercato e la rilevazione di questo falso positivo non ne scredita certo l’ottimo livello di sicurezza.

Chi volesse divertirsi può provare lo stesso codice o soluzioni simili in altri linguaggi con differenti anti-virus.

Invia l'articolo in formato PDF a PDF Download

24 Oct, 2009

Crack di hash MD5 con PHP

Posted by: Gabriele Guizzardi In: PHP| Programmazione| Sicurezza

Nel titolo uso la parola “crack” ma vorrei chiarire subito che NON SI PUO’ craccare un hash MD5 (ho usato “crack” perché sarebbe stato troppo lungo mettere una cosa simile a “trovare la corrispondente stringa in chiaro di un hash MD5″). Craccare prevede il reverse della funzione e con MD5 questo non è possibile. Ho letto in rete molti articoli di “esperti” informatici che in modo disinvolto usano la parola crack o addirittura indicano come reversibile un hash MD5. Questo è falso!

s

Quello che è possibile fare è usare metodi “forza bruta” per trovare la corrispondente stringa in chiaro già precedentemente calcolata. Questo è possibile facendo un match tra due hash, quando l’hash sconosciuto è uguale all’hash archiviato si va a vedere il corrispondente testo in chiaro. Per far questo è necessario avere un database contenente anche solo due informazioni per record: l’hash e il testo in chiaro.

Partiamo dalla base, consideriamo la parola “password” e calcoliamone l’hash MD5, otterremo la stringa “5f4dcc3b5aa765d61d8327deb882cf99″. Archiviando questa informazione avremi un record che associa la parola all’hash. Se facessimo questa operazione su tutti i vocabolari del mondo e aggiungessimo tutte le combinazioni di lettere e numeri usate principalmente dalle persone quando scrivono una password o uno username ecco che potremmo ragionevolmente dire che avremmo in mano uno strumento potente per recuperare il testo in chiaro di un hash MD5 (questo vale anche per altre codifiche come SHA1).

Ho scritto quindi un programmino a riga di comando in linguaggio PHP per calcolare l’hash delle combinazioni di caratteri ASCII e compararlo con l’hash sconosciuto, oggetto della ricerca. L’utente quindi, lanciando il programma, deve indicare l’hash di cui cerca la corrispondenza in chiaro ed il numero di caratteri di cui pensa sia fatto il testo corrispondente all’hash sconosciuto. Facciamo un esempio pratico:

BruteForce.php <hash> <num.car.combinazione>

Nella pratica:

C:\ForzaBruta.php 098f6bcd4621d373cade4e832627b4f6 4

Notate che come parametri vengono passati l’hash sconosciuto ed il numero di caratteri di cui pensiamo sia lunga la parola corrispondente all’hash sconosciuto (in questo caso la parola è “test”).

crackmd5

E’ bene fare ora alcune pratiche considerazioni. Essendo un sistema a forza bruta, più alto è il numero di caratteri di cui pensiamo sia fatto il testo in chiaro, più aumenta considerevolmente il tempo di calcolo. Per darvi un’idea, su un PC con un Intel Core 2 Duo e 2Gb di RAM per calcolare tutte le combinazioni ASCII fino a 4 caratteri ed arrivare a scoprire che si tratta della parola “test” è stato necessario 1h di tempo circa. Già un testo lungo 5 caratteri necessita di circa 16/17h… e così via.

Il codice del programma potete scaricarlo dalla pagina dei Downloads.

Invia l'articolo in formato PDF a PDF

01 Oct, 2009

MySQL.Data in Visual C# 2005

Posted by: Gabriele Guizzardi In: C#.NET| Pillole di Saggezza| Programmazione

Per quanti non comprendano perché non trovano MySQL.Data tra le referenze di Visual C# 2005 sotto Windows XP (cosa che invece avviene senza problemi in VB.NET 2005) fate così:

  • Installate il Connector da questo indirizzo: http://dev.mysql.com/downloads/connector/net/5.0.html
  • Aprite Riferimenti–>Aggiungi Riferimento e usate Sfoglia per cercare il file MySQL.Data.dll che si trova nella cartella C:\Programmi\MySQL\MySQL Connector Net 5.0.9\Binaries\.NET 2.0
  • Curiosamente, aprendo altri progetti, troverete MySQL.Data nella sezione NET, cosa che non avviene nel progetto nel quale mancava.

Inoltre per completezza d’informazione aggiungo un esempio di codice per la connessione:

using System;
using System.Collections.Generic;
using System.Text;
using MySql.Data.MySqlClient;
using MySql.Data.Types;

namespace MySqlExample
{
 class Program
 {
 static void Main(string[] args)
 {
 string host = "localhost";
 string database = "nome_database";
 string user = "username";
 string password = "password";
 string strSQL = "SELECT * FROM nome_tabella";

 string strProvider = "Data Source=" + host + ";Database=" +
    database + ";User ID=" +
    user + ";Password=" + password;
 try
 {
 MySqlConnection mysqlCon = new MySqlConnection(strProvider);
 mysqlCon.Open();

 if (mysqlCon.State.ToString() == "Open")
 {
 Console.WriteLine("Connessione al Database:");
 Console.WriteLine("------------------------");

 MySqlCommand mysqlCmd = new MySqlCommand(strSQL,mysqlCon);
 MySqlDataReader mysqlReader = mysqlCmd.ExecuteReader();

 Console.WriteLine("Id\tTabella1\tTabella2");
 Console.WriteLine("----------------------");

 while (mysqlReader.Read())
 {
 Console.WriteLine(mysqlReader.GetInt32(0) + "\t" +
   mysqlReader.GetString(1) +
   "\t" + mysqlReader.GetString(2));
 }

 }

 mysqlCon.Close();

 }
 catch (Exception er)
 {
 Console.WriteLine("Si è verificato un errore: " + er.Message);
 }

 Console.ReadKey();
 }
 }
}

PS: Auguri Nonna Elide.

Invia l'articolo in formato PDF a PDF Free

06 Sep, 2009

MD5, sicuro o insicuro?

Posted by: Gabriele Guizzardi In: PHP| Programmazione| Sicurezza

L’acronimo MD5 (Message Digest algorithm 5) indica un algoritmo crittografico di hashing realizzato da Ronald Rivest nel 1991 e standardizzato con la RFC 1321. Questa è la prima riga dell’ottima descrizione di questo algoritmo tratta da Wikipedia.

ps3lab_20090102-500x375Un esempio pratico e banale di utilizzo in una pagina web utilizzando PHP come linguaggio potrebbe essere questo:

<html>
<head>
<title>Test hash di MD5</title>
</head>
<BODY>
<FORM name="password" action="md5.php" method="post">
Digitare un testo:
<input type="text" name="text1">
<input type="submit" name= "submit" value="Crea MD5">
</FORM>
<?php
if (isset($_POST['submit']))
  {
  $password=$_POST['text1'];
  $text = md5($password);
  print "$text";
  }
?>
</html>

Altri linguaggi hanno istruzioni per calcolare l’MD5 oppure esistono classi pronte per inserirlo all’interno dei propri software. Comunque, MD5 è uno dei migliori sistemi per criptare informazioni ed è estremamente difficile se non quasi impossibile riconvertire in chiaro la sequenza di lettere e numeri di un hash.

Se fate una prova con il codice sopra riportato digitando la parola “admin” avrete come risultato il seguente hash:

21232f297a57a5a743894a0e4a801fc3

Attenzione però, avrete sempre il codice sopra riportato, quindi ogni stringa ha la sua corrispondenza MD5. Quando si controlla la password sui siti Internet si controlla proprio la corrispondenza tra quanto inserito dall’utente e il codice hash archiviato nel database. A questo punto è facile immaginare che si può realizzare un archivio contenente tutte le parole possibili immaginabili e maree di combinazioni di lettere e numeri per confrontarli con gli hash generati da MD5. Una volta che si “recuperano” codici hash da altri database si può controllare la corrispondenza e se si è fortunati (o meglio se la password è banale) si troverà la sua corrispondenza in chiaro. Fate una prova su questo sito digitando il codice hash della parola “admin”:

http://md5.rednoize.com/

E fin qui nulla di nuovo… ma è proprio così impossibile decriptare un hash generato da MD5?

Alla fine dell’anno scorso, un gruppo di scienziati hanno usato 200 Playstation 3 collegate in rete (cluster) per generare una coppia identica di certificati hash ricavati però da due differenti chiavi, cosa teoricamente non possibile in base all’algoritmo usato da MD5. Hanno impiegato “solo” due giorni e 200 Playstation 3 perché quest’ultime montano un processore CELL fornendo quindi una potenza di calcolo paragonabile a quella di grossi mainframe.

A questo punto, autenticando presso RapidSSL Certification Authority (uno degli enti certificatori internazionali) un loro sito Internet ne hanno ricevuto la certificazione. Questa certificazione poteva quindi essere usata per un secondo sito Internet poiché i ricercatori avevano un secondo hash identico a quello certificato, chi avrebbe visitato il secondo sito lo avrebbe ritenuto “sicuro” esattamente come quello realmente certificato poichè le parti codificate con MD5 sono identiche e indistinguibili da parte dei software e dei browser in generale. Da qui è comprensibile come poi si possa scaricare sulla macchina dell’utente codice maligno…

Questa tecnica è chiamata “MD5 collision” e ne potete leggere ulteriori dettagli a questi indirizzi:

http://eprint.iacr.org/2009/111.pdf

http://www.win.tue.nl/hashclash/rogue-ca/

E’ chiaro ovviamente che non tutti dispongono della potenza di calcolo di 200 Playstation 3 per trovare due hash identici, ma è altrettanto chiaro che MD5 è destinato a breve ad essere abbandonato, a partire dai server di sicurezza internazionali. La nuova strada indicata è SHA-2.

Related Posts with Thumbnails
Invia l'articolo in formato PDF a Word PDF

Chi Sono

Salve a tutti,
questo blog nasce per studiare WordPress e il mondo dei blog in genere quindi, almeno per il momento non vi aspettate molto. Usero' questo stumento per parlare di cio' che conosco meglio, a partire dalla programmazione dei computer. Su di me posso dire che ho iniziato a programmare agli inizi degli anni '80 con l'uscita dell'Atari 800XL e nel 1989 è uscito un mio videogioco distribuito dalla Lago Software. In tutti questi anni, oltre a lavorare come tecnico o programmatore, ho pubblicato diversi articoli e inseriti per diverse riviste: EG Elettronica Giovane, Elettronica Flash, Computer News, ecc. Dal 2000 ho creato una piccola software house specializzata in software aziendali realizzati ad hoc.

Pubblicit�

Pubblicit�


FireStats icon Powered by FireStats