mirror of
https://github.com/bvanroll/college-pentesting.git
synced 2025-08-29 03:52:43 +00:00
640 lines
38 KiB
Markdown
640 lines
38 KiB
Markdown
school project
|
||
|
||
|
||
stap 1 firmware downloaden
|
||
stap 2 extract de binary met binwalk
|
||
stap3:
|
||
de geextracte binary had enkele files die html documents bleken te zijnn en dan een zip file
|
||
de files hielden in:
|
||
19BD0
|
||
19D34
|
||
19E9C
|
||
50040
|
||
en 50040.7z
|
||
|
||
|
||
stap 4:
|
||
ik besloot om de files elk om beurt wat beter te bekijken en te eindigen met de 7zip file omdat deze het interessants leek. Uit de extractie van binwalk daarnet heb ik ook gezien dat meerdere van deze files geclassificeerd werden als html headers. nu als ik een cat zou uitvoeren op een van deze files zou dit een tijdje duren, dus er is waarschijnlijk een groot deel data waar ik niets mee ben. Ik heb dus de tool strings gebruikt op deze file en de uitkomst gepiped naar de naam van het
|
||
bestand met een achtervoegsel .strings
|
||
ik heb hiermee uitgevonden dat 19BD0 een stuk html bezit die gemaakt blijkt te zijn voor het updaten van de firmware:
|
||
|
||
|
||
<html><head><title>Emergency Room</title></head><body><center><h1>UPDATING FIRMWARE</h1><p>This page can be used to update the firmware of this device.</p><form name=upload method=post enctype=multipart/form-data><p><input type=file name=firmware size=30></p><p><input type=submit name=post value='Upload firmware NOW'></p></form></center></body></html>
|
||
<html><head><title>FAILED</title></head><body><center><h1>FAILED TO UPLOAD IMAGE</h1><p>Unable to upload the image, please make sure the uploaded file is the correct image.</p></center></body></html>
|
||
|
||
|
||
|
||
daarna volgde wat ik verwacht een config te zijn voor een html server, of een http header:
|
||
|
||
|
||
HTTP/1.1 200 OK
|
||
Date: Fri, 11 Jul 2008 12:00:00 GMT
|
||
Content-Type: text/html; charset=utf-8
|
||
Content-Length: %d
|
||
Server: Emergency Room
|
||
Conection: Close
|
||
|
||
|
||
en dan meer html
|
||
|
||
|
||
<html><head><title>SUCCESS</title><script>
|
||
var count = 90;
|
||
function init() { countdown(); }
|
||
function countdown()
|
||
count--;
|
||
document.getElementById('WaitInfo').value = count;
|
||
if (count >= 1) setTimeout('countdown()',1000);
|
||
else top.location.href="";
|
||
</script></head><body onload='init()'><center><h1>IMAGE UPLOADED SUCCESSFULLY</h1><p>%d bytes uploaded.</p><p>The WEB server is shuting down and the firmware updating will start immediately. Please <font color=red><strong>DO NOT POWER OFF</strong></font> the device. And please wait for <input type='Text' readonly id='WaitInfo' value='90' size='3' style='border-width:0; color:#FF3030; text-align:center'> seconds...</p></center></body></html>
|
||
|
||
|
||
|
||
hier kunnen we zien dat er een script runnned dat een countdown doet van 90 naar 1 met een timeout van 1000 ms?
|
||
|
||
|
||
dan volgt een stuk config file:
|
||
|
||
bootcmd=tftp
|
||
bootdelay=5
|
||
baudrate=57600
|
||
ethaddr="00:AA:BB:CC:DD:10"
|
||
ipaddr=192.168.0.20
|
||
serverip=192.168.0.3
|
||
|
||
dan enkele lijnen van chars en dan een linux kernel image
|
||
|
||
|
||
de volgende file is 19D34.strings
|
||
|
||
ik denk dat binwalk gewoon alles geextract heeft maar meerdere keren, want deze fil is gewoon hetzelfde als de vorige maar zonder de eerste html pagina
|
||
|
||
dit blijkt ook zo te zijn voor 19e9C, wat ook begint met de html tag maar nu van het laatste stuk html
|
||
|
||
de laatste strings file lijkt gewoon data te zijn, er is niks van code te vinden met enkele greps naar belangrijke woorden, zoals server, html, etc
|
||
|
||
|
||
|
||
nu komen we aan de zip file, specifiek een 7zip, jammer genoeg is dit extracten niet doenbaar, 7zip geeft een error, binwalk heeft dit dus jammer genoeg niet geweldig geextract. Na terug te kijken in de binwalk output zie ik dat er ook nog een stuk compressed data is van het LZMA formaat. en na wat googelen kwam ik een manier tegen om dit te extracten. door eerst het stuk van de lzma uit te knippen (wat gelukkig aan het einde van mijn binary zit) kan ik dit dan extracten. Dit
|
||
kan ik doen door een tool die dd noemt te gebruiken.
|
||
na dd te gebruiken heb ik dus de juiste chunk eruit geknipt, en voor de veiligheid heb ik ook de kernel eruit geknipt. Jammer genoeg geeft lzma een error wanneer ik dit probeer te extracten. Na opnieuw wat te googelen kwam ik op een stackoverflow die zei dat dit kwam omdat je het inleest als een bestand ipv een stream, de oplossing was dus om het in te lezen met een stream wanneer je het probeert te extracten. dit zal nog altijd een error geven, maar je zult je bestand hebben om op voort
|
||
te werken.
|
||
|
||
hierna voerde ik een binwalk uit op het bestand aangezien het veel groter is en daarna ook een strings:
|
||
|
||
output binwalk:
|
||
DECIMAL HEXADECIMAL DESCRIPTION
|
||
--------------------------------------------------------------------------------
|
||
2100864 0x200E80 MySQL MISAM compressed data file Version 8
|
||
3260492 0x31C04C Linux kernel version "2.6.21 (andy@ipcam-linux.alphanetworks.com) (gcc version 3.4.2) #537 Tue Jul 3 11:17:25 CST 2018"
|
||
3261504 0x31C440 CRC32 polynomial table, little endian
|
||
3289600 0x323200 SHA256 hash constants, little endian
|
||
3354536 0x332FA8 Copyright string: "Copyright (c) 2010 Alpha Networks Inc."
|
||
3365554 0x335AB2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/mlme.c:%d assert SupRateLen <= MAX_LEN_OF_SUPPORTED_RATESfailed
|
||
3365678 0x335B2E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/mlme.c:%d assert ExtRateLen <= MAX_LEN_OF_SUPPORTED_RATESfailed
|
||
3368674 0x3366E2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/action.c:%d assert pAd->BATable.BAOriEntry[i].Wcid < MAX_LEN_OF_MAC_TABLEfailed
|
||
3368814 0x33676E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/action.c:%d assert pBAEntry->Wcid < MAX_LEN_OF_MAC_TABLEfailed
|
||
3369298 0x336952 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert mpdu_blkfailed
|
||
3369394 0x3369B2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert listfailed
|
||
3369486 0x336A0E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert mpdu_blk->pPacketfailed
|
||
3369590 0x336A76 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pBAEntry->list.qlen == 0failed
|
||
3369874 0x336B92 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert TID < NUM_OF_TIDfailed
|
||
3370370 0x336D82 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pEntryfailed
|
||
3370462 0x336DDE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pAd->BATable.numAsOriginator != 0failed
|
||
3370654 0x336E9E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pAd->BATable.numAsRecipient != 0failed
|
||
3371190 0x3370B6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pAd->MacTab.Content[Elem->Wcid].Sst == SST_ASSOCfailed
|
||
3371690 0x3372AA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pRxBlk->pRxPacketfailed
|
||
3371842 0x337342 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert (0<= pBAEntry->list.qlen) && (pBAEntry->list.qlen <= pBAEntr
|
||
3372002 0x3373E2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pBAEntryfailed
|
||
3372146 0x337472 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert 0failed
|
||
3372234 0x3374CA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert (pBAEntry->list.qlen == 0) && (pBAEntry->list.next == NULL)f
|
||
3372382 0x33755E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pEntryfailed
|
||
3372678 0x337686 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert Length <= MGMT_DMA_BUFFER_SIZEfailed
|
||
3372850 0x337732 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pTxWIfailed
|
||
3373206 0x337896 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pProbeEntry != NULLfailed
|
||
3373346 0x337922 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pProbeEntryfailed
|
||
3373458 0x337992 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert (pktLen > 34)failed
|
||
3373558 0x3379F6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pSrcBuffailed
|
||
3373650 0x337A52 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pRxBlk->pRxPacketfailed
|
||
3373882 0x337B3A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pAd->FragFrame.LastFrag == 0failed
|
||
3373998 0x337BAE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pHeaderfailed
|
||
3374154 0x337C4A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pAd->FragFrame.pFragPacketfailed
|
||
3375390 0x33811E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/rtmp_init.c:%d assert (Length==0) || (pDest && pSrc)failed
|
||
3396606 0x33D3FE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_asic.c:%d assert BssIndex < 4failed
|
||
3396706 0x33D462 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_asic.c:%d assert KeyIdx < 4failed
|
||
3401182 0x33E5DE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data_pci.c:%d assert QueIdx < NUM_OF_TX_RINGfailed
|
||
3401362 0x33E692 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data_pci.c:%d assert pAd->ate.QID == 0failed
|
||
3410462 0x340A1E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert 0failed
|
||
3410546 0x340A72 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pRxWI->WirelessCliID == BSSID_WCIDfailed
|
||
3411058 0x340C72 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pAd->SharedKey[BSS0][0].CipherAlg <= CIPHER_CKIP128failed
|
||
3411194 0x340CFA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pTxBlk->MpduHeaderLen >= 24failed
|
||
3411306 0x340D6A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pTxBlkfailed
|
||
3411398 0x340DC6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert (pTxBlk->TxPacketList.Number > 1)failed
|
||
3411514 0x340E3A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert (pTxBlk->TxPacketList.Number == 2)failed
|
||
3411634 0x340EB2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert TX_BLK_TEST_FLAG(pTxBlk, fTX_bAllowFrag)failed
|
||
3411758 0x340F2E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pTxBlk->TxPacketList.Numberfailed
|
||
3411990 0x341016 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/connect.c:%d assert SsidLen <= MAX_LEN_OF_SSIDfailed
|
||
3430642 0x3458F2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert memfailed
|
||
3430774 0x345976 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert DataLenfailed
|
||
3430870 0x3459D6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pDatafailed
|
||
3431114 0x345ACA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pPacketfailed
|
||
3431210 0x345B2A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert DataSize < 1530failed
|
||
3431314 0x345B92 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pHeader802_3failed
|
||
3431570 0x345C92 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pNetDevfailed
|
||
3431858 0x345DB2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert (prefixLen < IFNAMSIZ)failed
|
||
3431970 0x345E22 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert ((slotNameLen + prefixLen) < IFNAMSIZ)failed
|
||
3432590 0x34608E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pTaskfailed
|
||
3432682 0x3460EA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_profile.c:%d assert pPacketfailed
|
||
3432778 0x34614A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_profile.c:%d assert dev_pfailed
|
||
3432906 0x3461CA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_profile.c:%d assert pRxBlk->pRxPacketfailed
|
||
3433382 0x3463A6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_main_dev.c:%d assert pAdfailed
|
||
3435026 0x346A12 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/ate/common/rt_ate.c:%d assert (BbpValue == 0x04)failed
|
||
3435450 0x346BBA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/ate/common/rt_ate.c:%d assert RestoreRfICType != 0failed
|
||
3441134 0x3481EE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/ate/common/rt_qa.c:%d assert bbp_data == valuefailed
|
||
3445578 0x34934A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/rt_rf.c:%d assert (regID <= pAd->chipCap.MaxNumOfRfId)failed
|
||
3450854 0x34A7E6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/wsc.c:%d assert DataLen < MGMT_DMA_BUFFER_SIZEfailed
|
||
3452768 0x34AF60 Unix path: /etc/Wireless/RT2860STA/RT2860STA.dat
|
||
3452904 0x34AFE8 Unix path: /etc/Wireless/RT2860/RT2860.dat
|
||
3454578 0x34B672 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/wsc.c:%d assert pWscPeer != NULLfailed
|
||
3458626 0x34C642 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/wsc_v2.c:%d assert pEntry!=NULLfailed
|
||
3520063 0x35B63F Neighborly text, "neighbor %.2x%.2x.%.2x:%.2x:%.2x:%.2x:%.2x:%.2x lost on port %d(%s)(%s)"
|
||
3637728 0x3781E0 CRC32 polynomial table, little endian
|
||
3850240 0x3AC000 LZMA compressed data, properties: 0x5D, dictionary size: 1048576 bytes, uncompressed size: 7787520 bytes
|
||
|
||
>
|
||
|
||
als we hiernaar kijken zien we opnieuw een lzma file onderaan die we kunnen extracten, daarboven staat een pak data over unix filesystems met enkele links naar os/linux etc. dit zal dus hetgeen zijn dat de linux kernel start. en de lzma data onderaan is dan hopelijk ons linux fs.
|
||
|
||
nu na dit te extracten was het nog altijd een volledige file, en na het file command hierop te runnen blijkt dit een ASCII cpio archive "(SVR4 with no CRC)" te zijn
|
||
|
||
gelukkig kwam ik op enkele video's die hierover uitleg gaven om het te extracten, aangezien dit een linux filesystem is kan dit problemen geven met uitpakken en mijn fs te overschrijven (paths op deze filesystem zouden niet moeten verwijzen naar de mijne en zo problemen te geven)
|
||
|
||
dit gaf enkele fouten:
|
||
Cannot mknod: Operation not permitted
|
||
deze error kwam voor bij veel van de files in de dev filesystem, dit zal ik later uit moeten zoeken, want als ik hier zelf mee begin te experimenteren dan kan ik mss mijn eigen filesystem wrecken
|
||
|
||
een ls command van de folder struct:
|
||
|
||
cpio git:(master) ✗ ls
|
||
bin dev etc etc_ro home init lib media mnt mydlink proc sbin sys tmp usr var
|
||
|
||
|
||
|
||
en nu kan het interessante beginnen. Ik het toegang tot een linux filesystem waar ik kan zoeken naar verschillende vulnerabilities, bv als men een vaste user account instelt dan kan ik deze hierin vinden. en als men dit niet doet maar wel een reset mogelijkheid geeft zonder dat je ingelogt moet zijn wat kan leiden tot de standaart account die terug komt kan dit ook een vulnerability zijn, demogelijkheden zijn eindeloos.
|
||
|
||
de eerste folder die mijn aandacht trok was een folder genaamt:
|
||
|
||
|
||
mydlink
|
||
|
||
het was vindbaar op de root van het fs en bevatte enkele scripts
|
||
|
||
d
|
||
|
||
een van de eerste scripts of executables was een binary file(dcp) waar ik een grep gedaan had op een strings naar username, en ik kreeg enkele items maar geen aanduidingen, nog geen idee wat deze file doet
|
||
|
||
de tweede file die mij interesseerde was een file genaamt
|
||
mydlink-watch-dog.sh
|
||
|
||
hierin vond ik enkele dingen uit: het systeem gebruikt een apache webserver en de file van daarnet geeft meerdere functies aan andere programmas, bv in mywatchdog worden deze soort van commands gebruikt:
|
||
|
||
|
||
|
||
mdb get dev_model
|
||
|
||
wat waarschijnlijk betekend dat het programma mdb een get functie heeft, en dev_model geeft de modelnaam van het systeem terug
|
||
|
||
tdb geeft ook enkele get mogelijkheden
|
||
|
||
ik denk dat dit betekend dat als ik vulnerabilities vind in dit systeem dat ze ook een kans hebben om te werken op andere dlink camera's aangezien ze checken welke camera je hebt in het script dat waarschijnlijk voor iedereen runned
|
||
|
||
dan vond ik de main run methode van de watch dog:
|
||
|
||
``
|
||
while [ 1 ]
|
||
do
|
||
curpid=`cat ${WATCHDOG_PID}`
|
||
if [ "0$$" -ne "0$curpid" ]; then
|
||
log "Unexpected pid (self: $$ cur: $curpid), exit!"
|
||
exit 255
|
||
fi
|
||
|
||
if [ "0$has_ca_refresh" = "01" ]; then
|
||
# check CA list
|
||
need_to_check $MYDLINK_BASE
|
||
if [ $? -eq 0 ]; then
|
||
refresh_ca $MYDLINK_BASE
|
||
fi
|
||
fi
|
||
|
||
# check running status of mydlink agents
|
||
check_alive dcp "-i $LAN_INT -m $MODEL_NAME"
|
||
check_alive signalc
|
||
|
||
# check if device in privacy mode
|
||
if [ "1" -eq "$HAS_MDB" ]; then
|
||
PRIVACY_MODE=`$DEV_CMD $GET_PRIV_CMD`
|
||
# check format
|
||
if [ $? -ne 0 ] || [ "1" -ne "$PRIVACY_MODE" ]; then
|
||
PRIVACY_MODE=0
|
||
fi
|
||
fi
|
||
|
||
# if device in privacy mode, we are not going to check httpd service
|
||
if [ "0" -eq "$PRIVACY_MODE" ]; then
|
||
# check web services
|
||
runs=`expr $runs + $UNIT_CHECK_T`
|
||
if [ $runs -ge $HTTP_CHECK_T ]; then
|
||
http_port=`$DEV_CMD $PORT_CMD`
|
||
https_port=`$DEV_CMD $SPORT_CMD`
|
||
|
||
if [ "0$STREAM_CGI" = "0" ]; then
|
||
STREAM_CGI=`detect_stream_cgi $http_port`
|
||
fi
|
||
|
||
health_check_httpd "$http_port" "$https_port" "$STREAM_CGI"
|
||
runs=0
|
||
fi
|
||
fi
|
||
|
||
sleep $UNIT_CHECK_T
|
||
done
|
||
´
|
||
|
||
|
||
daarna ben ik gegaan naar de etc map, en jammer genoeg is hier enkel een fstab aanwezig om te tonen hoe de fs gemount moet worden.
|
||
maar er is ook een etc_ro folder en daarin zitten meerderen interessante dingen. zoals gensslkey.sh etc, mijn goal was om een config van de httpd server te vinden
|
||
|
||
er is een file met de naam build aanwezig wat wss de versie van de firmware is? het bevat gewoon een nummer, mss een build nummer maar ik dacht dat deze specifiek waren voor elk geproduceerd item. mss wordt deze file overschreven wanneer de os runned
|
||
|
||
de volgende file is het gensslkey.sh script wat met gebruik van openssl een paar ssl keys aanmaakt
|
||
|
||
dan zijn er nog 2 icons aanwezig
|
||
|
||
volgende file is inittab
|
||
dit houd gewoon enkele locaties bij?
|
||
|
||
::sysinit:/etc_ro/rcS
|
||
#ttyS1::respawn:/bin/sh
|
||
ttyS1::respawn:/bin/login
|
||
|
||
ik zal deze files onthouden voor laten maar als ik bv de 2e lijn uncomment en de laatste comment dan denk ik dat als de os opstart dat hij direct opstart in de shell
|
||
|
||
volgende file is lld2d.conf, en dit blijkt te maken hebben met het link layer topology discovery protocol. ingebouwde network discovery. het verwijst naar de twee afbeeldingen en de interface waar het zich op zal promoten wss
|
||
|
||
volgende file is de message of the day, deze is redelijk tof
|
||
|
||
Welcome to
|
||
_______ _______ ___ __ ____ _ _ ___
|
||
| ___ \| __ || | |__|| \ | || | / /
|
||
| |___| || |__| || |__ __ | \| || |/ /
|
||
| _ /| _ || || || |\ || \
|
||
|__| \__\|__| |__||______||__||_| \____||_|\___\
|
||
|
||
=System Architecture Department=
|
||
|
||
|
||
mss in mijn bootsequence steken voor mezelf
|
||
|
||
dan is er een openssl config file (openssl.cnf)
|
||
|
||
momenteel niet het meest interessante dat er is maar kan later handig lijken
|
||
|
||
volgende file is rcS en dit is een shell script? er stond posix in het begin bij mijn file command
|
||
|
||
dit kan de boot sequence zijn van de os?
|
||
|
||
het start de nvram_daemon op en enabled de usb hot-plug feature en dan wacht hij tot de nvram_daemon opgestart is
|
||
|
||
dan start hij een script op dat internet.sh noet, wat eigenlijk wel interessant is.
|
||
oh en der zijn comments van de devs in deze file wat geweldig is:
|
||
|
||
|
||
|
||
internet.sh
|
||
|
||
#for telnet debugging
|
||
#security issue - don't run telnetd here -- andy 2012-07-03
|
||
#telnetd
|
||
|
||
|
||
en dan zet het de log op, deze zou wel tof zijn om eens te displayen
|
||
|
||
|
||
release was de laatste file en houd gewoon een nummer van de laatste release firmware datum
|
||
|
||
volgende folder
|
||
|
||
|
||
linuxigd
|
||
dit bevat een gif bestand en een config
|
||
|
||
gif afbeelding is gewoon van een kleine pc
|
||
|
||
en dan is er een config file die upnpd.conf noemt
|
||
dit is dus voor een universal plug and play systeem dat op deze server runned.
|
||
|
||
volgende map
|
||
|
||
ppp
|
||
verwachtelijk point to point protocol
|
||
bevat 3 folders
|
||
3g: wat blanco is
|
||
peers: wat ook blanco is
|
||
en plugins: wat ook blanco is :(
|
||
|
||
|
||
de usb folder is ook leeg
|
||
|
||
nu de web folder, dit is de folder waar ik het meeste hoop voor heb
|
||
hier zijn een pak afbeeldingen te vinden, deze komen waarschijnlijk op de webpagina later
|
||
|
||
dan zijn er ook enkele mappen aanwezig
|
||
|
||
api
|
||
hier zijn enkele jar files aanwezig
|
||
|
||
|
||
ik heb deze gedissasembled en euh. kmoe dr nog naar kijken
|
||
gebruik gemaakt van java xf en jad en de andere heb ik geextract met gcab
|
||
|
||
|
||
dit was dus de api map
|
||
|
||
de volgende map is de cgi map, en deze bevat een gans pak scripts
|
||
|
||
audiocfg.cgi is een config voor de audio
|
||
cgiversion.cgi is letterlijk een file die de cgiversion toont
|
||
common.cgi houd een groot stuk commen data bij door bepaalde functies te callen (model brand version build name etc)
|
||
datetime.cgi houd data bij over de datetime
|
||
daynight.cgi een script dat de dag nacht scheduled zodat de ir sensor aan kan op de juiste momenten
|
||
dbglevel.cgi houd bij welk debug level de os heeft, mss een tof idee om dit hoger te zetten en dan te repacken en zien wat dit geeft als firmware voor de camera
|
||
email.Cgi een scehduler voor de email service, houd username en password bij, dit lijkt niet super veilig, maar sure
|
||
iactiveuser.cgi toont de eerste user van de active user table
|
||
iaudio.cgi houd een pak vars bij van of de audio enabled is het volume codec en sample rate
|
||
iimage.cgi houd info over de video bij (resolutie framrate etc)
|
||
image.cgi houd dezelfde info bij van iimage.cgi denk ik? nvm klein beetje meer info zoals antiflicker
|
||
inetwork.cgi houd ip adress bij, en andere shit, zoals de bonjour service wat ik denk dat een apple service is
|
||
isysdevice.cgi meer info over het apparaat
|
||
isystem.cgi andere info over het apparaat
|
||
iwireless info over het wireless interface van het apparaat
|
||
motion.cgi settings voor de motion sensor
|
||
networkcgi info over network settings
|
||
sdbdetectoin.cgi sound detection settings
|
||
sitesurvey.cgi runned sitesurveylist();
|
||
strminfo.cgi wss streaminfo settings
|
||
upgradestatus toont laatste download status
|
||
upload.cgi heeft een pak ftp info, mss is er dus ook een ftp server op dit apparaat
|
||
user.cgi enabled acces control mss? no idea tbh
|
||
userlist.cgi geeft de list van users weer
|
||
usermod.cgi geeft opties om een user aan te passen? wacht mss zijn deze allemaal om settings aan te passen, in welk geval nu kan je dus hiermee de group en naam en pass van de user aanpassen
|
||
wireless.cgi set de keys enzo voor wireless connectivity
|
||
|
||
|
||
|
||
dus nu we dit gezien hebben willen we wss die commands runnen om dan onze eigen user toe te voegen
|
||
|
||
|
||
|
||
de volgende folder die we gaan bekijken is pack
|
||
deze bevat een pak lzma bestanden, die we dus elk gaan uitpakken
|
||
na de eerste uit te pakken kan ik zien dat dit een html bestand moet voorstellen
|
||
|
||
deze heb ik dan allemaal uitgepakt want fuck it, en dus gaan we ze nu een voor een afgaan
|
||
(file zegt dat ze allemaal data zijn dus fuck me)
|
||
|
||
het zijn allemaal html files
|
||
|
||
|
||
web bleek niet zo nuttig te zijn als ik hoopte
|
||
|
||
dan hebben we in de map wireless een config file staan in de onderliggende map rt28....
|
||
deze heeft een login en passwoord staan
|
||
|
||
dit blijkt de ssid te zijn vaan een router genaamd:
|
||
https://wikidevi.com/wiki/Belkin_F5D8233-4_v1
|
||
|
||
|
||
|
||
in de map wlan vinden wen een binary met de naam RT5350_AP_1T1R_V1_0.bin
|
||
|
||
dit is de naam van een wifi module dus wss de wireless driver van dit apparaat
|
||
|
||
de laatste map xml is blanco
|
||
|
||
|
||
|
||
nu als we terug kijken was er een interessante file
|
||
bin/login
|
||
|
||
dus mijn volgende doelwit is de bin folder
|
||
hier zijn een doenbaar aantal scripts aanwezig dus ik kan ze allemaal eigenlijk wel bekijken, laten we dus starten bij a en we komen login wel tegen wanneer we et tegen komen
|
||
|
||
|
||
|
||
alphapd: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
ash: symbolic link to busybox
|
||
ated: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
audiopush: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
busybox: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
cat: symbolic link to busybox
|
||
chmod: symbolic link to busybox
|
||
cp: symbolic link to busybox
|
||
date: symbolic link to busybox
|
||
echo: symbolic link to busybox
|
||
gpio: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
grep: symbolic link to busybox
|
||
htmlunpack: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
i2c: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
imagetp: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
inadyn: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
iperf: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
ipush: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
iwpriv: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
kill: symbolic link to busybox
|
||
lanconfig: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
lld2d: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
login: symbolic link to busybox
|
||
ls: symbolic link to busybox
|
||
mail: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
mdb: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
mii_mgr: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
mkdir: symbolic link to busybox
|
||
mknod: symbolic link to busybox
|
||
mount: symbolic link to busybox
|
||
msmtp: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
mtd_write: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
mydlinkevent: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
netstat: symbolic link to busybox
|
||
notifystream: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
ntpclient: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
nvram_daemon: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
nvram_get: symbolic link to ralink_init
|
||
nvram_set: symbolic link to ralink_init
|
||
openssl: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
ov7740: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
pcmcmd: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
ping: symbolic link to busybox
|
||
pppoecd: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
ps: symbolic link to busybox
|
||
pwd: symbolic link to busybox
|
||
ralink_init: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
reg: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
rm: symbolic link to busybox
|
||
schedule: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
sed: symbolic link to busybox
|
||
sh: symbolic link to busybox
|
||
sleep: symbolic link to busybox
|
||
sounddb: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
switch: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
sync: symbolic link to busybox
|
||
touch: symbolic link to busybox
|
||
umount: symbolic link to busybox
|
||
upgradefw: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
uvc_stream: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
alphapd: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
ash: symbolic link to busybox
|
||
ated: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
audiopush: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
busybox: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
cat: symbolic link to busybox
|
||
chmod: symbolic link to busybox
|
||
cp: symbolic link to busybox
|
||
date: symbolic link to busybox
|
||
echo: symbolic link to busybox
|
||
gpio: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
grep: symbolic link to busybox
|
||
htmlunpack: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
i2c: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
imagetp: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
inadyn: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
iperf: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
ipush: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
iwpriv: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
kill: symbolic link to busybox
|
||
lanconfig: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
lld2d: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
login: symbolic link to busybox
|
||
ls: symbolic link to busybox
|
||
mail: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
mdb: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
mii_mgr: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
mkdir: symbolic link to busybox
|
||
mknod: symbolic link to busybox
|
||
mount: symbolic link to busybox
|
||
msmtp: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
mtd_write: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
mydlinkevent: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
netstat: symbolic link to busybox
|
||
notifystream: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
ntpclient: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
nvram_daemon: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
nvram_get: symbolic link to ralink_init
|
||
nvram_set: symbolic link to ralink_init
|
||
openssl: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
ov7740: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
pcmcmd: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
ping: symbolic link to busybox
|
||
pppoecd: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
ps: symbolic link to busybox
|
||
pwd: symbolic link to busybox
|
||
ralink_init: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
reg: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
rm: symbolic link to busybox
|
||
schedule: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
sed: symbolic link to busybox
|
||
sh: symbolic link to busybox
|
||
sleep: symbolic link to busybox
|
||
sounddb: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
switch: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
sync: symbolic link to busybox
|
||
touch: symbolic link to busybox
|
||
umount: symbolic link to busybox
|
||
upgradefw: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
uvc_stream: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
|
||
|
||
|
||
|
||
so bin wasn't that usefull, however
|
||
there's also an fs/sbin location, and this one seems more usefull
|
||
i copied it to further inspect it, and i've removed de busy box links from it so i only have the selfmade scripts
|
||
all of them are executable by anyone
|
||
|
||
|
||
so, what do they do, lets start off with predictions because this might take time
|
||
|
||
acodec "codec stuff"
|
||
automount_boot mounts stuff that needs to be mounted, might hold some info thats worth it
|
||
automount same shit i think
|
||
cameraname doesn't seem super important, just getrs the name of the camera module
|
||
chpasswd this one will be amazingly good if we can find a way to execute it, probably changes the password of user x
|
||
config-dns just what it says on the tin
|
||
config-igmpproxy.sh something to do with proxy's have to search what igmp means
|
||
config.sh this could be anything, def worth checking
|
||
config-udhcpd dhcp settings
|
||
cpubusy no idea cpu management?
|
||
ddns dns settings
|
||
dhcp dhcp settings
|
||
focus no idea
|
||
internet no idea, presumably to do with the webserver
|
||
lan lan settings
|
||
ntp ntp settings
|
||
pppoe plug and play stuff?
|
||
snort i don't know but i recognize this name
|
||
ucp no idea
|
||
udev no idea
|
||
udhcpc dhcp stuff
|
||
video script to start the video feed maybe
|
||
vpn-passthru vpn stuff
|
||
web something about the websrever
|
||
wlan wireless stuff
|
||
zcip no idea
|
||
|
||
|
||
|
||
so, lets look at the important ones
|
||
|
||
automounts:
|
||
|
||
mounts media en dev with the parameter it's given? it's weird
|
||
|
||
chpasswd.sh:
|
||
|
||
gets the username and password from nvram, which is wild, and then if no user is set exists, if it is, it changes the password using chpasswd which i don't get wtf it's doing, but steven wrote it in 2015
|
||
|
||
it like writes the password to temporary storage and then issues the chpasswd command with those username and password and then it removes the temporary storage written stuff
|
||
|
||
|
||
config for now isn't as usefull as i thought
|
||
|
||
|
||
cpubusy copy's shit into a file and echo's some shit and does it again, forever, it seems to overload the cpu? or like try to run out all other services by keeping that stuff up
|
||
|
||
|
||
next up was the script internet.sh
|
||
and this one gave me an insane idea, so, nvram gets the username right? so there has to be some place that sets it, and i looked for some stuff, and there's a file in bin that uses it, i searched for it using the command:
|
||
|
||
grep -rnw '.' -e 'nvram_set'
|
||
|
||
so this file has to be usefull since it has this set in it, i'm copying it to the main dir to check
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
dus
|
||
blijkbaar is er een speciale authenticatie via http aanwezig op dit apparaat, en hij wijgert een pak url's die ik probeer om andere shit te starte bv, dus wa ik ga probere, om een cracker te schrijve die alle passwoorden afgaat
|
||
|
||
|
||
|
||
some ports are also open
|
||
|
||
port 80
|
||
port 443
|
||
port 8385
|