找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15320|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  T) y/ }0 a# R# L, F, F/ R3 ]6 Y! R
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 ?* V- p( l* @: T' e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:9 ?# F0 o4 p# u. ]
usage: himr <address> <value>. sample: himr 0x80040000 0x08 b, d1 f7 L1 u+ V- E
- N7 P( E1 T- K. D$ D# B2 n; d, d* Q

  ^8 n- S8 v" f, B% H4 R* ^5 |不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; \" w9 Q6 f9 A3 G# P

" v0 A/ Z; ~0 g. Q补充内容 (2012-3-8 09:42):# @9 ]9 H( M  E: C2 T" H
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, ~+ Y1 F( N1 G+ E/ y5 X
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。+ p+ y# ?, V8 Z; N, J
8 H) b/ \" W7 ~) n- K9 R5 Z" C
himr <address> <value>. sample: himr 0x80040000 0x0% t( i( }1 d8 W1 A
6 Q, x% N3 e1 g5 ]6 n
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( T% e9 a) y( X( W0 f* F
himr 0x80040000 0x00* ]5 K& J! m: r! e
himr 0x80040001 0x116 v5 x- B# E) V# v. J8 I
himr 0x80040002 0x22
( V' k6 O& B* Ohimr 0x80040003 0x33$ `  `! o( |9 O
himr 0x80040004 0x44
+ s9 U5 f' j5 x/ Q' f! ?8 n. G# Jhimr 0x80040005 0x55$ K" k! G- n3 R9 D

3 d9 s/ q; R- {5 FSN也是类似。
2 ?0 X& `8 K' N6 ?6 \. Z1 ~9 L9 @  z. F2 ?
现在主要是,谁告诉我们MAC和SN的地址?5 N/ b. ~& f+ o& z/ v& _) c
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
) ^1 L. u4 |, I$ g+ q8 y一直想找到运程修改MAC和SN的办法,苦于无解啊

" m2 a6 i$ Z- `* K源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: u9 u6 \. S! m; W6 w" E0 ~$ n- r! U; P* {
修改的代码早有了。到今天不会编译。
; T7 _/ y- R" V: o& Z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- `' V2 k; x6 J8 f% q2 k
  2. #include <malloc.h>
    + l9 W) b4 @4 w
  3. #include <sys/types.h>( l, E; }1 n2 \( ?
  4. #include <sys/stat.h>$ k& Y5 }3 k- m% {3 b
  5. #include <sys/ioctl.h>
    # @  u, \4 r% n5 Z
  6. #include <stdio.h>. D7 @$ P$ S' n  g5 F
  7. #include <string.h>/ d6 [- b& c% u

  8. & ]+ Q$ k. d9 Z
  9. typedef struct {8 A; H4 X  v3 {
  10.         unsigned int        e2prom_cmd_sub_addr;
    6 S9 @3 K& R2 C8 P& B# f3 H
  11.         unsigned int        sub_addr_count;
    ' j7 V0 P! b. `: H4 {1 s  o
  12.         unsigned char*        e2prom_cmd_data;
    5 D4 D5 _+ f+ T* I4 u
  13.         unsigned int        data_count;
    - Q& d, P$ E8 h5 q+ R, r5 I3 d/ n  X
  14. } e2prom_s_cmd;
      ~, T$ O- ~3 N% T. f- Y- M

  15. & B! K2 A. M! b
  16. #define E2PROM_CMD_READ 14 n! d% k3 S7 q8 ^% E. F( y6 I5 ~
  17. #define E2PROM_CMD_WRITE 2
    / y5 A' s& Y+ J7 f6 }) B+ [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"" A0 A. N. A( |5 T: h
  19. # ]/ e( s( l3 c2 ^3 G% F+ V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    : j  p9 m" P7 x
  21. {
    5 E  k  k* c/ O. T( s$ H
  22.         int fd, ret;
    . }' j+ {8 z6 d* _+ p# o: m" l3 `
  23.         e2prom_s_cmd arg;
    ) D  r& f! l; N; L& M, z  v
  24.         unsigned char buf[0x18];
    # W0 e, K: i# W' t, d0 \

  25. & u$ G. e/ h( i& V7 D6 B0 ^
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    / d! T0 D$ Z8 w6 b# s" P! z
  27.         if (fd  < 0) {# @) N8 }. [0 x1 @5 Y2 ?: J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ N& U2 s6 W) ?! O! }
  29.                 return -1;
    + Q+ s  {( t! n5 j
  30.         }
    5 u$ M3 V. I, G, G2 A
  31.         arg.sub_addr_count      = 2;
    : `0 i0 Z) J; {: a3 L
  32.         arg.data_count          = 0x18;8 M5 x- ?4 j% g/ I; q$ B3 c
  33.         arg.e2prom_cmd_sub_addr = 0x290;: y) b  Y3 a- i, ]6 ?% h
  34.         arg.e2prom_cmd_data     = buf;# W/ ]( J# D, H  f, x
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 [5 g) D) A* Y4 s+ w1 k; l1 Y
  36.         if (ret != 0) {
    & h! v- D5 s5 S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);/ M# O& c8 ^) t( o& X0 b
  38.                 return -1;
    # [3 D# U/ n/ m, @' z5 ~
  39.         }
    7 @+ D) }* @& Q5 v; {
  40.         memcpy(mac, buf, 6);
    ; w* E" J7 _! X. s
  41.         memcpy(stbid, &buf[6], 18);: G' W* J" L9 s+ [& L
  42.         stbid[18] = '\0';* r  ]  I- h. V2 i
  43. 3 e! n5 J2 y7 e% Q! m% B
  44.         return 0;
    ) K8 Z2 y; y$ _  |! m: n7 c
  45. }3 w7 F$ S( t( x% H4 Z* N9 T+ [2 S
  46. ; G2 K8 ?8 j9 D4 ?9 E
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)# a8 x2 C% J4 ~" H  y
  48. {
    + Y. Z) c+ O& D& R
  49.         int fd, ret;6 R" }2 b1 e9 T8 `- z
  50.         e2prom_s_cmd arg;
    5 R: r8 g! W; w
  51.         unsigned char buf[0x18];
    7 |1 n5 a" J& c6 X0 n2 `! v

  52. / p* r6 W8 x! f6 I+ r* R& {8 A
  53.         memcpy(buf, mac, 6);
    ) D- L7 [+ h( a) v
  54.         memcpy(&buf[6], stbid, 18);
    ) O; [% \/ n' r. V( {' ^. G0 s4 }
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : E/ j% C7 S6 P3 C
  56.         if (fd  < 0) {2 j0 g; V* s5 g3 w. W& l" G7 r( R2 I7 x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' ]9 R. d1 b& G9 z( ^
  58.                 return -1;
    , a- M( t. I( R& C6 M4 n
  59.         }
    $ ]: t3 i& w' \( w
  60.         arg.sub_addr_count      = 2;; q, z. v; i* R- I$ m* b3 g, R
  61.         arg.data_count          = 0x18;
    $ B6 R) X+ Y( |. b: |
  62.         arg.e2prom_cmd_sub_addr = 0x290;0 ~, x2 e- i$ M& ?* V8 f% o
  63.         arg.e2prom_cmd_data     = buf;: C% m9 i% G# z% ?3 a$ U  M
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
      U) [1 G/ b+ P% }
  65.         if (ret != 0) {
    4 l. h% J% ~+ L* m5 u# D& [7 U
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . v. {, b' p9 e- d, a# `1 \1 ^( H
  67.                 return -1;3 H, k3 ]3 R* C# [
  68.         }" D9 h, V* d4 W- E: s

  69. ) ?( n5 c( D7 l& ?5 w. B+ O' f+ d
  70.         return 0;
    , c8 O! Q$ H* v3 J5 l2 R5 k- a9 h9 ~
  71. }
    * g4 C5 V. X* C  [5 K% Z5 D

  72. ; O: U4 p' f* H0 k
  73. int main()
    - s4 S% M( k+ U4 K" W
  74. {
    1 L+ U* |# L- @7 W2 a& h" ^
  75.         char c;/ I6 r, K; b% x7 h; F0 o. {# i  h* h
  76.         int i, macs[6];" K; `) L/ Q3 J
  77.         unsigned char mac[6];
    " n- S# ~! L0 T1 E  _
  78.         unsigned char stbid[256];
    5 Z8 ^$ M- g+ @
  79. ! R( Q/ g3 @; \5 T
  80.         if (readparam(mac, stbid) < 0)5 S2 H! p7 y2 q4 `+ ?  ?
  81.                 return 1;+ M  _: F) m4 v, G$ T

  82. ( f! f5 p  k3 q* |: G$ R
  83.         printf("Current parameters: \n");
    8 }  X) p3 h( \$ q( a* O1 d; ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 _, M8 y( p# }% g1 N
  85.         printf("  STBID: %s\n", stbid);
    * z5 A* d. \; ?& i0 [; A
  86.        
    / E$ `' `7 [6 F, S, W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    & s) H* \! t0 R& Z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  H0 {% r% p' @) T, \
  89.                 printf("Input MAC error\n");
    ' G' Y2 t2 @" `; ]; J2 e+ W
  90.                 return 1;6 Y: W* Z+ E  y0 _- J' ]" B. ]
  91.         }
    : n, r, N  [" I1 A, [# U3 A
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    5 f& A$ h2 ~) n9 R
  93.         printf("\nPlease input new STBID: ");
    7 V6 t3 X8 i  Q  R6 k* |' i4 r
  94.         scanf("%s", stbid);
    : c, S8 J8 C. ?6 z- q. y! O
  95.         if (strlen(stbid) != 18) {
    $ |5 K% P8 A( k: U( `
  96.                 printf("Invalid stbid\n");. G9 \' u" J4 L8 _( A
  97.                 return 1;# W1 i! q: Y1 z; b* F
  98.         }
    # N9 X0 p- a9 Y; e8 w7 O+ Q8 m) R
  99.         printf("\nNew parameters: \n");5 P% F: [5 c" O2 c, _7 r
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, U- h! N5 W0 a+ Y3 j/ ^
  101.         printf("  STBID: %s\n", stbid);' R' ]& A1 P9 ^& f- h9 l

  102. 8 E  z* s% I# G5 ?/ Q6 Z# @
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    * q( o0 e: b& [; {
  104.         for (;;) {. F; I7 Q: @. K; ^$ Q* W
  105.                 c = getchar();
      x$ Z/ h1 E) e! Q5 F8 I/ Q
  106.                 if (c == 'y' || c == 'Y')
    ' e+ h) c$ \% {* D4 w* A2 V
  107.                         break;
    ) i+ M# s8 k5 O- T; w2 |+ B$ F
  108.                 if (c == 'n' || c == 'N') {
    ! K2 S- Q( C+ c" r  Q) _
  109.                         printf("\nAborted.\n");
    ; U& B; @) R4 l9 Q5 X- |
  110.                         return 1;
    0 y9 D" Z" F, @
  111.                 }
    0 E9 F& c( X+ g9 h0 \  q' g! B
  112.         }8 W& t0 a, R, i8 a7 k$ f6 X' H
  113.         if (writeparam(mac, stbid) == 0) / b5 G( z( \0 P
  114.                 printf("Parameters changed.\n");0 ~& R7 U( s( D, j9 K

  115. , p! X8 G; q- U1 H; Z+ X
  116.         return 0;* w' j" u9 z& E/ A/ n8 k% Q; t
  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 ) F: \9 |/ `. ^3 `
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' q* ~  |3 V& V
你用的编译命令行格式是什么?
  W5 L+ c3 _$ B+ p: w* F
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-20 06:58 , Processed in 0.025257 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表