查看: 16919|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# ^5 ^7 V* N! w8 m+ w6 w7 l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! j9 Z% ]' G, F9 o# F! z1 T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% N3 T1 T0 Y3 Q3 ^0 ]
usage: himr <address> <value>. sample: himr 0x80040000 0x00 `3 Z% U! S" l% z+ j
# p1 k5 T' `9 I1 }% K: x) J

" _6 G- C2 P0 q0 t  L# I1 u+ E; t不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; l) Q1 Y( z4 X4 y. P, M( b

: v& b7 S; L" i  m: `( S6 e补充内容 (2012-3-8 09:42):
3 l2 \. D1 x8 d/ bhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 Z" I' N# E' U% v) _7 g
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
" g5 z  \8 v& X" N  q6 f5 a: @' A/ l0 U3 c  W) k
himr <address> <value>. sample: himr 0x80040000 0x0
" ]1 S0 ^. y4 A/ _! Z8 E+ U+ D; u2 h& p8 d' Q7 A, [5 |2 p
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 o' ?  j# o2 m8 a4 O. Fhimr 0x80040000 0x00- \' [: b& {$ y9 E; ]$ I/ _
himr 0x80040001 0x11
  n9 ]" ]+ T6 m6 s9 C" a' zhimr 0x80040002 0x22) [; v: g$ a9 x1 J, c- @
himr 0x80040003 0x33
: ~8 T/ O1 x3 D; p2 z9 P9 Jhimr 0x80040004 0x44
& K2 x# H4 `3 w  Z/ P4 g: i, khimr 0x80040005 0x55( H4 j" K: _0 s/ n: T5 a& ~
. w* C, f* \; {" A
SN也是类似。
; I* P( C8 q. P0 ~
& c% B; T; R: T现在主要是,谁告诉我们MAC和SN的地址?. p+ g# ^" C* f1 x+ n# Q0 ?. z
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ! V  i' M( W# P$ H9 l
一直想找到运程修改MAC和SN的办法,苦于无解啊

' b8 K* `: d3 x5 J8 L( ?7 I1 J源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 " ]6 G4 c' s! t' H9 t
" o9 e+ h. D' O5 L
修改的代码早有了。到今天不会编译。# R0 ?* D5 S. i
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>9 O& ?+ J! S% n
  2. #include <malloc.h>+ W5 g+ l  {* w1 |
  3. #include <sys/types.h>
    1 e; o- }* p5 p4 o% J: H5 ?& ?
  4. #include <sys/stat.h>
    ! y' u- b5 l% Z0 k! |
  5. #include <sys/ioctl.h>
    , @) M. t; S% r7 {5 ?0 x" r
  6. #include <stdio.h>. Z- @. ~/ |: d7 X
  7. #include <string.h>2 @4 ~2 W$ A3 v6 E" S

  8. " B  e% C! v3 ~4 V
  9. typedef struct {  `# d& N9 L  `9 o, E3 O. t
  10.         unsigned int        e2prom_cmd_sub_addr;$ c# m/ P6 u0 P2 U# J
  11.         unsigned int        sub_addr_count;
    ' I( ?. z# i& A8 l9 }8 y
  12.         unsigned char*        e2prom_cmd_data;* F5 Y9 s( s" M' Y* i
  13.         unsigned int        data_count;# P, e0 y7 f0 ]& v) g( D. o
  14. } e2prom_s_cmd;
    : z! @- ^# ^. ~2 s/ t
  15. ; I8 r, O  b: A- z* \, \9 J- ?3 {% _. W
  16. #define E2PROM_CMD_READ 1
    ' j" T6 E) N; u$ t! @- h
  17. #define E2PROM_CMD_WRITE 2
    : [' R1 B5 R  X/ Z1 P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"+ C' \" Z$ j# u  P5 W( }
  19. ' Y8 p7 H$ B( H) J
  20. static int readparam(unsigned char *mac, unsigned char *stbid)! B& i* R1 p% N
  21. {
    ( ^! B& R$ Q5 S
  22.         int fd, ret;
    6 J: |8 e4 d9 l4 l: P
  23.         e2prom_s_cmd arg;
    / L. ~! B) D: @  i* l$ N
  24.         unsigned char buf[0x18];, j  l6 [. ~( K/ h5 k% L

  25.   W6 b$ @' [- U- M0 r. c" E: @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);) o+ s* M6 w) V
  27.         if (fd  < 0) {! v+ t' B# |& P9 A; h( {6 d1 [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' I3 J" D  }8 N6 r6 n/ s
  29.                 return -1;* x) d: @  i. j
  30.         }
    . h- D, {9 f( V! O7 B
  31.         arg.sub_addr_count      = 2;
    8 ?: E1 T5 u( j+ Q' H3 b& A
  32.         arg.data_count          = 0x18;/ S# x, x5 U  v2 Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;( S3 A' b, D, a2 {7 E; l/ e
  34.         arg.e2prom_cmd_data     = buf;
    4 `* j7 u: c. c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & a% H, _5 G0 r9 L+ ?0 h
  36.         if (ret != 0) {
    8 [8 D) g" A2 B+ J: m
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    1 C  O0 l, a1 W
  38.                 return -1;
    4 ?( ~3 }9 c# L8 e
  39.         }3 c! l1 M2 S* f
  40.         memcpy(mac, buf, 6);
    . i& b4 S5 E( n2 W% l, w
  41.         memcpy(stbid, &buf[6], 18);
    * R. K; F" H* {& P" i( P9 |! K
  42.         stbid[18] = '\0';( {1 S9 t7 V" K) z4 g% X
  43. - B* v% f8 O7 N7 U9 @# _5 ]; ?8 E$ T
  44.         return 0;
    / u( @/ c! k# A& l
  45. }0 W7 k4 x/ L# A5 l) M: y. Z# L. C
  46. 3 c- f( f# }' G- W, h1 b, z+ D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)2 i. [0 B3 q" I: Z
  48. {& Y% w  n2 T7 X
  49.         int fd, ret;* g$ u# ?- B( j; k  u1 r! w  _
  50.         e2prom_s_cmd arg;+ P6 z! ?9 r! ]7 E7 z
  51.         unsigned char buf[0x18];, O7 T) k8 l3 q, \6 F! v1 a6 B* S

  52. 8 J. b% ~! s, @1 x/ }* n
  53.         memcpy(buf, mac, 6);! f9 g8 x& Q, K0 F" q
  54.         memcpy(&buf[6], stbid, 18);# V: o; g# e4 P4 l1 B, h4 q; w
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    # F% q' b0 K) ?- K0 [4 F6 }
  56.         if (fd  < 0) {  E5 i6 a$ e/ W; @# D% g- T# p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! w0 d8 u4 P# p/ f3 q
  58.                 return -1;( w9 t% E/ U" {# ?' o
  59.         }9 q5 Q  t4 G6 D) ?7 |% N! X. z
  60.         arg.sub_addr_count      = 2;7 [  M+ K: E5 G0 J2 Q  k- K
  61.         arg.data_count          = 0x18;
    ! |, [' @2 m0 A! s  x% \
  62.         arg.e2prom_cmd_sub_addr = 0x290;) Q4 w- n) i( H4 Q; D" e
  63.         arg.e2prom_cmd_data     = buf;
    : N2 x! w. ?9 A9 j* j3 q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / k5 q% R& }) m
  65.         if (ret != 0) {$ B0 P; P. f# T3 W2 R
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ M8 z+ d6 D* \
  67.                 return -1;# q: k) C& }( U' W
  68.         }
      i# B+ P% E# r4 b
  69. 2 Y/ }* P2 N4 }6 Q! _
  70.         return 0;" f# e0 n. V% |" E6 v8 c
  71. }8 g3 \# b: X8 r7 z. d0 z5 B5 J4 Q

  72. ; \5 h$ Z9 g6 X8 s4 U
  73. int main()$ b5 D# W7 @8 _4 _3 [1 X- D
  74. {# |8 x: B7 _& o" K# K" O7 A" Y
  75.         char c;
    6 i* P8 a$ C; d* S3 E, Z1 \
  76.         int i, macs[6];/ O, z" G: x8 L5 C. r/ d* N: D  U
  77.         unsigned char mac[6];8 I9 M- o& @- }$ e* P
  78.         unsigned char stbid[256];9 q0 c7 t3 {; e7 W- j2 @" G
  79. + H. l% v- n5 ]; [
  80.         if (readparam(mac, stbid) < 0)1 ^  R+ r) a- w( h/ K
  81.                 return 1;
      F; K  L0 X* F1 k2 i# C" Q8 X: ]3 s# |3 X

  82. ; K& O/ ~# a( H8 T# q
  83.         printf("Current parameters: \n");
    4 T9 ]' t; W; O9 \, M
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 `+ l/ y3 V$ [. n
  85.         printf("  STBID: %s\n", stbid);- v6 g% z1 c) f
  86.        
    $ c& x6 o; w* b' z9 I- P" z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . c6 i5 S- D* O1 j$ t2 ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - _5 g% w% }0 E: z
  89.                 printf("Input MAC error\n");
    " G, S/ P% y, ?- {% b
  90.                 return 1;
    2 Z5 y! n2 F7 J& V
  91.         }- D4 C( t+ x: g/ ]5 V. `2 a1 M7 ~  y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    2 t% c( ^5 x' h1 @. Z
  93.         printf("\nPlease input new STBID: ");
    1 u! S+ B- m/ R% i3 T* T) J) w
  94.         scanf("%s", stbid);
    0 t0 D8 y6 s" _& d
  95.         if (strlen(stbid) != 18) {
      j- N4 S) z% ?- u, X. v
  96.                 printf("Invalid stbid\n");$ n& o  \( n4 H" P: \
  97.                 return 1;
    , d) }5 W4 y: f8 o+ T
  98.         }$ i" I! X0 e, f0 q! d7 ]# U
  99.         printf("\nNew parameters: \n");0 D  I6 z7 d# T" F# u: h7 K% U& v# i
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& [( d. c: }. i9 f
  101.         printf("  STBID: %s\n", stbid);
    3 ^$ e  d' h5 ]/ l# L/ l3 G( w2 g
  102. . x# _4 n7 i1 f- P5 ?3 M
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 p( d' y6 A" p( t" h; J/ ], k
  104.         for (;;) {/ Q# L- L/ f5 m, q
  105.                 c = getchar();: w% o1 C1 K# a1 K6 R' Z
  106.                 if (c == 'y' || c == 'Y')
    9 C% j- ?$ q3 r* h! K8 A4 i
  107.                         break;
    . U4 T( G" S8 d) D( l: ]
  108.                 if (c == 'n' || c == 'N') {4 t6 f# J0 K& \$ l$ N" G3 g' r
  109.                         printf("\nAborted.\n");
    ' C3 H5 m1 N4 I* h$ Q' ?3 |. ^
  110.                         return 1;/ C2 n; o" _$ u. ?. B
  111.                 }( v2 ]& G2 r# V9 @/ y8 G
  112.         }
    4 p8 O, Y2 B9 O3 ^
  113.         if (writeparam(mac, stbid) == 0) 3 J2 U# R6 }+ X
  114.                 printf("Parameters changed.\n");
      q0 W1 y, L6 |& X
  115. ' w2 ^( ~8 p' W- \
  116.         return 0;
    $ H( k' S9 V: s  f- g" L" j
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 |福建| 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 |浙江| 显示全部楼层
0522 发表于 2012-3-23 18:24 2 v% u3 R0 [/ ?7 V& l1 q6 ?! d# D
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
! v4 w1 X) w# i7 O" I
你用的编译命令行格式是什么?0 C( Z" m+ O2 Q1 D2 ^; T7 U
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部